mirror of
https://github.com/status-im/spiff-arena.git
synced 2025-01-18 22:21:51 +00:00
9213cea140
96dcd1a24 Merge pull request #23 from sartography/feature/more_launch_buttons_and_dropdowns f6eb4123d disable test for disabled button. 84593aee1 remove launch button for call activities. b28569687 fixing a bug in SpiffScript Group e12e27ed5 fixing a bug in SpiffScript Group 7b4ca1919 Merge branch 'main' into feature/more_launch_buttons_and_dropdowns 38b23ae4e No reason to force _files on there, when this could work for any set of options. 1e75ff7b5 Standardize all Event Names, and document in README. Fix the SpiffExtensions so they work consistently with both nested Extension Properties, and as single extensions depending on the namespace. Add a Spiff Extension Text Area. Everything that is within the body of tag can be referenced with ".value" -- there was a lot of pointless inconsistency in the moddle json file. aeeaf1596 DMN selection should be from a dropdown, not by hand entering a process id. ecb175d72 Add Launch Editor buttons for Json files. (fires 'file.editor.launch', with a fileName) 6467e967b Adding a Launch Button for Call Activity Json files are now a selection list, not a text field -- see app.json for usage. New SpiffExtensionSelect can be used to add select boxes anywhere you want. git-subtree-dir: bpmn-js-spiffworkflow git-subtree-split: 96dcd1a2497f84f8ca3f2a82e311d50e391bf7b7
103 lines
7.8 KiB
Markdown
103 lines
7.8 KiB
Markdown
|
|
![Tests](https://github.com/sartography/bpmn-js-spiffworkflow/actions/workflows/tests.yml/badge.svg?branch=main)
|
|
|
|
# SpiffWorkflow Extensions for BPMN.js
|
|
This package provides extensions that can be applied to BPMN.js that will enable some important features of [SpiffWorkflow](https://github.com/sartography/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](https://github.com/bpmn-io/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:
|
|
```xml
|
|
<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](docs/io.png)
|
|
|
|
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
|
|
```javascript
|
|
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](http://nodejs.org) development stack with [npm](https://npmjs.org) installed to build the project.
|
|
|
|
To install all project dependencies execute
|
|
|
|
```sh
|
|
npm install
|
|
```
|
|
|
|
To start the example execute
|
|
|
|
```sh
|
|
npm start
|
|
```
|
|
|
|
To build the example into the `public` folder execute
|
|
|
|
```sh
|
|
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 that can be called from a 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.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
|