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