6007a770a fix typo aa524120b Merge pull request #47 from sartography/dependabot/github_actions/crazy-max/ghaction-github-labeler-5.0.0 75556c020 Bump crazy-max/ghaction-github-labeler from 4.2.0 to 5.0.0 9a5c333de Merge pull request #46 from sartography/feature/better_form_nav c6c955284 Merge pull request #43 from sartography/bugfix/update-data-input-output-specs 094c573e0 fixing a test. 5fcb47125 Assume established naming conventions over requiring a form schema and ui schema each time as separate inputs. Making this one dropdown for the user form instead of two. 53f45dbaa Merge pull request #45 from sartography/dependabot/github_actions/actions/checkout-4 67765a994 Bump actions/checkout from 3 to 4 dbcd66942 Merge pull request #44 from sartography/dependabot/github_actions/crazy-max/ghaction-github-labeler-4.2.0 b8be0e335 Bump crazy-max/ghaction-github-labeler from 4.1.0 to 4.2.0 7743372d2 update iospec to include refs in input/output sets 6e17bda37 use same version of bpmn-js as arena 2c7fca88f missed a type in spiffworkflow.json d62f021e3 Merge pull request #42 from sartography/bugfix/lowercase-overridden-tags c625980c5 update extension names e92ae2f5a make sure tags with extensions are written to xml correctly eb37b6d29 Merge pull request #41 from sartography/feature/guest_form_submission 1b390c46c added panel extensions for guest access to human tasks w/ burnettk f01bece04 Merge pull request #40 from sartography/feature/multiinstance-improvements b8179146b allow attaching pre/post scripts to MI task or instance tasks git-subtree-dir: bpmn-js-spiffworkflow git-subtree-split: 6007a770a5938c993173001a013116cedfc80359
SpiffWorkflow Extensions for BPMN.js
This package provides extensions that can be applied to BPMN.js that will enable some important features of SpiffWorkflow - the Python BPMN Library for executing business processes. See below for more information.
IMPORTANT: This is a work in progress, and is not yet released.
About
This extension creates a BPMN editor with all the capabilities of BPMN.js and the following additions / modifications:
- Ability to insert BPMN's Data Input and Data Output Objects.
- A SpiffWorkflow centric Properties Panel for specifying scripts to run before and after a task, and for defining documentation, and Mark-up content for displaying in user and manual tasks. Among other things.
Data Input and Data Output Element
This extension will allow you to drag BPMN Data Input and Data Output elements onto the diagram and give them appropriate labels. This will generate valid BPMN elements in the underlying XML file - connecting them to the IO Specification of the process, as shown below:
<bpmn:process id="my_delightful_process" isExecutable="true">
<bpmn:ioSpecification>
<bpmn:dataInput id="DataInput-745019423-1" name="num_dogs" />
<bpmn:dataOutput id="DataOutput-711207596-1" name="happy_index" />
</bpmn:ioSpecification>
...
Using these data input and outputs will allow you to create processes designed to be used as Call Activities. SpiffWorkflow (in a soon-to-be released version) will pick up this information, and enforce it. So that you must provide these input variables to execute, and only the variables mentioned in the output will be passed back to the calling process.
Usage
import BpmnModeler from 'bpmn-js/lib/Modeler';
import spiffworkflow from 'bpmn-js-spiffworkflow/app/spiffworkflow';
var bpmnJS = new BpmnModeler({
additionalModules: [
spiffworkflow
],
moddleExtensions: {
spiffworkflowModdle: spiffModdleExtension
}
});
Run the Example
You need a NodeJS development stack with npm installed to build the project.
To install all project dependencies execute
npm install
To start the example execute
npm start
To build the example into the public
folder execute
npm run all
Integration Points
You can use the EventBus to communicate with this UI, sending and receiving messages to change
the behavior of the editor making it easier for your end users. There are many examples of
this in the app.js file.
Below is a table of all the events that are sent and accepted:
Event Name | Description | Fired or Acceped | Parameters | Description |
---|---|---|---|---|
spiff.service_tasks.requested | Request a list of available services for service task. | Fired | - | |
spiff.service_tasks.returned | Provides a list of services. | Recieved | serviceTaskOperators | ex: [{id:'Chuck Facts', parameters[{id:'category', type:'string'}]}] |
spiff.script.edit | Request to edit a python script in some sort of facy editor. | Fired | scriptType | one of: script, preScript, postScript |
value | The actual python script | |||
element | The element that needs updating | |||
eventBus | Used by receiver to fire back an event | |||
spiff.script.update | Update a python script to a new value. | Recieved | scriptType | one of: script, preScript, postScript |
value | The updated script | |||
element | The element that needs updating | |||
spiff.markdown.edit | Request to edit markdown in a fancy editor. | Fired | element | The element that needs updating |
value | The current markdown content | |||
spiff.markdown.update | Update Markdown content for a paticular elements 'instructions'. | Recieved | element | The element that needs updating |
value | Tne updated Markdown content | |||
spiff.callactivity.edit | Requst to edit a call activity by process id. | Fired | processId | The Process the users wants to edit |
spiff.callactivity.search | Requst to search for a call activity | Fired | processUd | The currently seleted process id |
eventBus | For sending back the selected process id. | |||
spiff.callactivity.update | Update the process id from a call activity (based on search) | Received | processId | The Process the users wants to edit |
spiff.file.edit | request to edit a file, but file name. | Fired | value | The file name the user wants to edit |
spiff.dmn.edit | request to edit a dmn by process id. | Fired | value | The DMN id the user wants to edit |
spiff.json_files.requested | request a list of local json files. | Fired | optionType | The type of options required ('json' or 'dmn') |
spff.dmn_files.requested | request of list of local dmn files. | |||
spiff.json_files.returned | Return a list of available json files | Recieved | options | [{lable:'My Label', value:'1'}] |
spff.dmn_files.returned | Return a list of available dmn files. | Recieved | options | [{lable:'My Label', value:'1'}] |
License
MIT