Dan 0c9e21a2a5 Adding ability to define pre-scripts and post-scripts on every task that isn't aleady a script task (All tasks, call activities and sub-processes) Scripts will show up as:
```
<userTask id="Task_1" name="What is your favorite color?">
      <extensionElements>
        <spiffworkflow:postScript>x=1</spiffworkflow:postScript>
        <spiffworkflow:preScript>answer="blue"</spiffworkflow:preScript>
      </extensionElements>
     ...
```
2022-06-27 17:29:24 -04:00

53 lines
1.5 KiB
JavaScript

import BpmnModeler from 'bpmn-js/lib/Modeler';
import diagramXML from '../resources/diagram.bpmn';
import { BpmnPropertiesPanelModule, BpmnPropertiesProviderModule } from 'bpmn-js-properties-panel';
import inputOutput from './spiffworkflow/InputOutput';
import SpiffWorkflowPropertiesProvider from './spiffworkflow/PropertiesPanel';
import FileSaver from 'file-saver'; // For file downloads.
// Examples for extending the xml language can be found at
// https://github.com/camunda/camunda-bpmn-moddle/blob/master/resources/camunda.json
const modelerEl = document.getElementById('modeler');
const panelEl = document.getElementById('panel');
const spiffModdleExtension = require('./spiffworkflow/moddle/spiffworkflow.json');
// create modeler
const bpmnModeler = new BpmnModeler({
container: modelerEl,
propertiesPanel: {
parent: panelEl
},
additionalModules: [
inputOutput,
SpiffWorkflowPropertiesProvider,
BpmnPropertiesPanelModule,
BpmnPropertiesProviderModule,
],
moddleExtensions: {
spiffworkflow: spiffModdleExtension
}
});
// import XML
bpmnModeler.importXML(diagramXML).then(() => {});
/**
* Just a quick bit of code so we can save the XML that is output.
* Helps for debugging against other libraries (like SpiffWorkflow)
*/
let btn = document.getElementById('downloadButton');
btn.addEventListener('click', event => {
saveXML();
});
async function saveXML() {
const { xml } = await bpmnModeler.saveXML({ format: true });
const blob = new Blob([ xml ], { type: 'text/xml' });
FileSaver.saveAs(blob, 'diagram.bpmn');
}