|
| 1 | +## What's Changed |
| 2 | + |
| 3 | +We've done a lot of work over the last 8 months to the SpiffWorkflow library as we've developed [SpiffArena](https://www.spiffworkflow.org/), a general purpose workflow management system built on top of this library. |
| 4 | +This has resulted in just a handful of new features. |
| 5 | +Our main focus was on making SpiffWorkflow more predictable, easier to use, and internally consistent. |
| 6 | + |
| 7 | +## Breaking Changes from 1.x: |
| 8 | +* We heavily refactored the way we handle multi-instance tasks internally. This will break any serialized workflows that contain multi-instance tasks. |
| 9 | +* Internal structure of our code, the names classes, and common methods have changed. Please see our [ReadTheDocs] (https://readthedocs.org/projects/spiffworkflow/) documenation for version 2.0.0. |
| 10 | + |
| 11 | +## Features and Improvements |
| 12 | + |
| 13 | +### Task States, Transitions, Hooks, and Execution |
| 14 | +Previous to 2.0, SpiffWorklow was a little weird about its states, performing the actual execution in the on_complete() hook. |
| 15 | +This was VERY confusing. |
| 16 | +Tasks now have a _run() command separate from state change hooks. |
| 17 | +The return value of the _run() command can be true (worked), false (failure), or None (not yet done). |
| 18 | +This opens the door for better overall state management at the moment it is most critical (when the task is actually executing). |
| 19 | +We also added new task state called "STARTED" that describes when a task was started, but hasn't finished yet, an oddly missing state in previous versions. |
| 20 | + |
| 21 | +* Improvement/execution and serialization cleanup by @essweine in https://github.com/sartography/SpiffWorkflow/pull/289 |
| 22 | +* Bugfix/execute tasks on ready by @essweine in https://github.com/sartography/SpiffWorkflow/pull/303 |
| 23 | +* Feature/standardize task execution by @essweine in https://github.com/sartography/SpiffWorkflow/pull/307 |
| 24 | +* do not execute boundary events in catch by @essweine in https://github.com/sartography/SpiffWorkflow/pull/312 |
| 25 | +* Feature/new task states by @essweine in https://github.com/sartography/SpiffWorkflow/pull/315 |
| 26 | + |
| 27 | +### Improved Events |
| 28 | +We refactored the way we handle events, making them more powerful and adaptable. |
| 29 | +Timer events are now parsed according to the [ISO 8601 standard](https://en.wikipedia.org/wiki/ISO_8601). |
| 30 | +* Feature/multiple event definition by @essweine in https://github.com/sartography/SpiffWorkflow/pull/268 |
| 31 | +* hacks to handle timer events like regular events by @essweine in https://github.com/sartography/SpiffWorkflow/pull/273 |
| 32 | +* Feature/improved timer events by @essweine in https://github.com/sartography/SpiffWorkflow/pull/284 |
| 33 | +* reset boundary events in loops by @essweine in https://github.com/sartography/SpiffWorkflow/pull/294 |
| 34 | +* Bugfix/execute event gateways on ready by @essweine in https://github.com/sartography/SpiffWorkflow/pull/308 |
| 35 | + |
| 36 | +### Improved Multi-Instance Tasks |
| 37 | +We refactored how Multi-instance tasks are handled internally, vastly simplifying their representation during execution and serialization. |
| 38 | +No more 'phantom gateways.' |
| 39 | +* Feature/multiinstance refactor by @essweine in https://github.com/sartography/SpiffWorkflow/pull/292 |
| 40 | + |
| 41 | +### Improved SubProcesses |
| 42 | +SpiffWorkflow did not previously distinguish between a Call Activity and a SubProcess, but they handle Data Objects very differently. |
| 43 | +A SubProcess is now able to access its parent data objects, a Call Activity can not. |
| 44 | +We also wanted the ability to execute Call Activities independently of the parent process. |
| 45 | + |
| 46 | +* Bugfix/subprocess access to data objects by @essweine in https://github.com/sartography/SpiffWorkflow/pull/296 |
| 47 | +* start workflow while subprocess is waiting by @essweine in https://github.com/sartography/SpiffWorkflow/pull/302 |
| 48 | +* use same data objects & references in subprocesses after deserialization by @essweine in https://github.com/sartography/SpiffWorkflow/pull/314 |
| 49 | + |
| 50 | +### Improved Data Objects / Data Stores |
| 51 | +This work will continue in subsequent releases, but we have added support for Data Stores, and it is possible to provide your own implementations. |
| 52 | +* Data stores by @jbirddog in https://github.com/sartography/SpiffWorkflow/pull/298 |
| 53 | +* make data objects available to gateways by @essweine in https://github.com/sartography/SpiffWorkflow/pull/325 |
| 54 | + |
| 55 | +### Improved Inclusive Gateways |
| 56 | +We added support for Inclusive Gateways. |
| 57 | +* Feature/inclusive gateway support by @essweine in https://github.com/sartography/SpiffWorkflow/pull/286 |
| 58 | + |
| 59 | +### Pre and Post Script Fixes |
| 60 | +We previously supported adding a pre-script or post-script to any task but there were a few lingering bugs that needed fixing. |
| 61 | +* parse spiff script extensions in service tasks by @essweine in https://github.com/sartography/SpiffWorkflow/pull/257 |
| 62 | +* pass script to workflow task exec exception by @essweine in https://github.com/sartography/SpiffWorkflow/pull/258 |
| 63 | +* update execution order for postscripts by @essweine in https://github.com/sartography/SpiffWorkflow/pull/259 |
| 64 | + |
| 65 | +### DMN Improvements |
| 66 | +We now support a new hit policy of "COLLECT" which allows you to match on an array of items. DMN support is still limited, but |
| 67 | +we are making headway. We would love to know if people are using these features. |
| 68 | +* Support for the "COLLECT" hit policy. by @danfunk in https://github.com/sartography/SpiffWorkflow/pull/267 |
| 69 | +* Bugfix/handle dash in DMN by @essweine in https://github.com/sartography/SpiffWorkflow/pull/323 |
| 70 | + |
| 71 | +### BPMN Validation |
| 72 | +We improved validation of BPMN and DMN Files to catch errors earlier. |
| 73 | +* Feature/xml validation by @essweine and @danfunk in https://github.com/sartography/SpiffWorkflow/pull/256 |
| 74 | + |
| 75 | +### New Serializer |
| 76 | +There are some breaking changes in the new serializer, but it is much faster and more stable. We do attempt to upgrade |
| 77 | +your serialized workflows to the new format, but you will definitely encounter issues if you were using multi-instance tasks. |
| 78 | +* update serializer version by @essweine in https://github.com/sartography/SpiffWorkflow/pull/277 |
| 79 | +* Feature/remove old serializer by @essweine in https://github.com/sartography/SpiffWorkflow/pull/278 |
| 80 | + |
| 81 | +### Lightning Fast, Stable Tests |
| 82 | +* Fix ResourceWarning: unclosed file BpmnParser.py:60 by @jbirddog in https://github.com/sartography/SpiffWorkflow/pull/270 |
| 83 | +* Option to run tests in parallel by @jbirddog in https://github.com/sartography/SpiffWorkflow/pull/271 |
| 84 | + |
| 85 | +### Better Errors |
| 86 | +* Feature/better errors by @danfunk in https://github.com/sartography/SpiffWorkflow/pull/283 |
| 87 | +* Workflow Data Exceptions were broken in the previous error refactor. … by @danfunk in https://github.com/sartography/SpiffWorkflow/pull/287 |
| 88 | +* added an exception for task not found w/ @burnettk by @jasquat in https://github.com/sartography/SpiffWorkflow/pull/310 |
| 89 | +* give us a better error if for some reason a task does not exist by @burnettk in https://github.com/sartography/SpiffWorkflow/pull/311 |
| 90 | + |
| 91 | +### Flexible Data Management |
| 92 | +* Allow for other PythonScriptEngine environments besides task data by @jbirddog in https://github.com/sartography/SpiffWorkflow/pull/288 |
| 93 | + |
| 94 | +### Various Enhancements |
| 95 | +Make it easier to reference SpiffWorkflow library classes from your own code. |
| 96 | +* Feature/add init to schema by @jasquat in https://github.com/sartography/SpiffWorkflow/pull/260 |
| 97 | +* cleaning up code smell by @danfunk in https://github.com/sartography/SpiffWorkflow/pull/261 |
| 98 | +* Feature/cleanup task completion by @essweine in https://github.com/sartography/SpiffWorkflow/pull/263 |
| 99 | +* disambiguate DMN expressions by @essweine in https://github.com/sartography/SpiffWorkflow/pull/264 |
| 100 | +* Add in memory BPMN/DMN parser functions by @jbirddog in https://github.com/sartography/SpiffWorkflow/pull/320 |
| 101 | + |
| 102 | +### Better Introspection |
| 103 | +Added the ability to ask SpiffWorkflow some useful questions about a specification such as, "What call activities does this depend on?", |
| 104 | +"What messages does this process send and receive", and "What lanes exist on this workflow specification?" |
| 105 | +* Parser Information about messages, correlation keys, and the presence of lanes by @danfunk in https://github.com/sartography/SpiffWorkflow/pull/262 |
| 106 | +* Called elements by @jbirddog in https://github.com/sartography/SpiffWorkflow/pull/316 |
| 107 | + |
| 108 | +### Code Cleanup |
| 109 | +* Improvement/task spec attributes by @essweine in https://github.com/sartography/SpiffWorkflow/pull/328 |
| 110 | +* update license by @essweine in https://github.com/sartography/SpiffWorkflow/pull/324 |
| 111 | +* Feature/remove unused BPMN attributes and methods by @essweine in https://github.com/sartography/SpiffWorkflow/pull/280 |
| 112 | +* Improvement/remove camunda from base and misc cleanup by @essweine in https://github.com/sartography/SpiffWorkflow/pull/295 |
| 113 | +* remove minidom by @essweine in https://github.com/sartography/SpiffWorkflow/pull/300 |
| 114 | +* Feature/remove loop reset by @essweine in https://github.com/sartography/SpiffWorkflow/pull/305 |
| 115 | +* Feature/create core test package by @essweine in https://github.com/sartography/SpiffWorkflow/pull/306 |
| 116 | +* remove celery task and dependency by @essweine in https://github.com/sartography/SpiffWorkflow/pull/322 |
| 117 | +* remove one deprecated and unused feature by @essweine in https://github.com/sartography/SpiffWorkflow/pull/329 |
| 118 | +* change the order of tasks when calling get_tasks() by @danfunk in https://github.com/sartography/SpiffWorkflow/pull/319 |
| 119 | + |
| 120 | +### Improved Documentation |
| 121 | +* Fixes grammar, typos, and spellings by @rachfop in https://github.com/sartography/SpiffWorkflow/pull/291 |
| 122 | +* Updates for 2.0 release by @essweine in https://github.com/sartography/SpiffWorkflow/pull/330 |
| 123 | +* Bugfix/non BPMN tutorial by @essweine in https://github.com/sartography/SpiffWorkflow/pull/317 |
| 124 | + |
| 125 | +### Bug Fixes |
| 126 | +* correct xpath for extensions by @essweine in https://github.com/sartography/SpiffWorkflow/pull/265 |
| 127 | +* prevent output associations from being removed twice by @essweine in https://github.com/sartography/SpiffWorkflow/pull/275 |
| 128 | +* fix for workflowspec dump by @subhakarks in https://github.com/sartography/SpiffWorkflow/pull/282 |
| 129 | +* add checks for len == 0 when copying based on io spec by @essweine in https://github.com/sartography/SpiffWorkflow/pull/297 |
| 130 | +* Improvement/allow duplicate subprocess names by @essweine in https://github.com/sartography/SpiffWorkflow/pull/321 |
| 131 | +* Resets to tasks with Boundary Events by @danfunk in https://github.com/sartography/SpiffWorkflow/pull/326 |
| 132 | +* Sub-workflow tasks should be marked as "Future" when resetting to a task before the sub-process. by @danfunk in https://github.com/sartography/SpiffWorkflow/pull/327 |
| 133 | + |
| 134 | +## New Contributors |
| 135 | +* @subhakarks made their first contribution in https://github.com/sartography/SpiffWorkflow/pull/282 |
| 136 | +* @rachfop made their first contribution in https://github.com/sartography/SpiffWorkflow/pull/291 |
| 137 | + |
| 138 | +**Full Changelog**: https://github.com/sartography/SpiffWorkflow/compare/v1.2.1...v2.0.0 |
0 commit comments