burnettk 7db152f010 Squashed 'bpmn-js-spiffworkflow/' changes from 0a9db509a..9dcca6c80
9dcca6c80 Merge pull request #39 from sartography/message_fixes
9de4d9a2e update github action for tests.
84183ffd3 we weren't setting the property when updating a start event.
66a26cc85 does adding a new check prevent an error that only seems to happen whenthe frontend is engaged
877424a55 Merge pull request #37 from sartography/bugfix/bugfixes-for-mi-and-payloads
afb071d01 apparently didn't finish search and replace when creating the escalation panels
c8040aab5 remove unused MI attributes from XML
1bc43155d Merge pull request #34 from sartography/dependabot/github_actions/dependabot/fetch-metadata-1.6.0
a645c08f5 Merge pull request #36 from sartography/feature/events-with-payloads
8e0f84fbe Merge pull request #35 from sartography/bug/data_objects_in_pools
4b732edd3 add events with payloads
3247a197c update event select to include code field
91e012582 add generic event selector
021f53bb5 add generic event list
b19c69080 Assure we delete reference objects when the visible entity is removed. And remove all those console.logs.
d46741ffd A few more fixes to prevent bugs from showing up later ... * Deleting a pool was erroring out when it contained a list of data objects, now it works ok. * We were getting duplicate DataObjectReferences in the XML when doing a copy paste operation.  Duplicates are no longer generated.
f40cecc05 * Assure that Data object in pools can be changed to reference other data objects within the same pool. * In the runnable demo, add the keyboard bindings to copy/paste/delete etc... work. * Added a test for data objects in pools.
2f835fc7f Bump dependabot/fetch-metadata from 1.4.0 to 1.6.0
f6a79440e Merge pull request #33 from sartography/bugfix/restore-references-without-breaking-messages
2556a4599 better method for fixing references
5c49d665f Merge pull request #32 from sartography/bugfix/add-mi-to-subprocess
e138c4c26 add mi panel to subprocesses
462a5e777 Merge pull request #27 from sartography/feature/multi-instance-task-panel
63dc415fc add MI for call activities
61f2e5db3 add custom importer to handle loop input/output
e504af9bb add multi instance configuration panel

git-subtree-dir: bpmn-js-spiffworkflow
git-subtree-split: 9dcca6c80b8ab8ed0d79658456047b90e8483541
2023-08-09 16:14:32 -04:00

Tests

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>
    ...

Screenshot

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

Description
SpiffWorkflow is a software development platform for building, running, and monitoring executable diagrams
https://www.spiffworkflow.org/
Readme LGPL-2.1
Languages
Python 61.9%
TypeScript 32.3%
Shell 2.9%
JavaScript 1.1%
CSS 1%
Other 0.8%