Releases: sartography/SpiffWorkflow
v3.0.0
What's Changed
- ruff linting fixes by @danfunk in #333
- prevent errors synching children of MI tasks by @essweine in #338
- Improvement/better subworkflow management by @essweine in #339
- Fix issue where call activities within sub processes were not returned by @jbirddog in #342
- Feature/event payloads by @essweine in #343
- Bugfix/gateway in loop by @essweine in #344
- Bugfix/update split task inputs by @essweine in #346
- Improvement/updates to multiinstance by @essweine in #347
- Improvement/replace root with spec start by @essweine in #348
- Import classes to instead of importing a module by @Leon0824 in #351
- Improvement/task and spec relations by @essweine in #349
- Improvement/flexible task iteration by @essweine in #352
- Bugfix/depth calc and task dict fixes by @essweine in #355
- Improvement/better serialization by @essweine in #357
- add support for conditional events by @essweine in #356
- remove Box and associated tests by @essweine in #360
- Unify connect() argument name to 'taskspec' by @Leon0824 in #361
- Improvement/misc cleanup and bugfixes by @essweine in #362
- Update data.rst by @fzzylogic in #365
- Update data.rst by @fzzylogic in #366
- Bugfix/cycle timer bugs by @essweine in #371
- allow TaskState to handle name/value conversion for any mask by @essweine in #372
- Feature/data object category by @jasquat in #373
- bugfix for invalid date by @essweine in #375
- Add CI job for Python 3.12 by @jbirddog in #376
- default the category for a DataObject to None by @jasquat in #377
- Update advanced.rst by @fzzylogic in #378
- Update advanced.rst by @fzzylogic in #379
- Improved init files and exceptions by @essweine in #380
- Bugfix/handle multiple start events correctly by @essweine in #381
- Bugfix/raise exception when creating non executable spec by @essweine in #382
- Improvement/file cleanup by @essweine in #383
- make documentation more developer-friendly by @essweine in #384
- update publish actions to use latest versions by @essweine in #385
- clean up script engine methods by @essweine in #388
- make TaskDataReference do something by @essweine in #389
- Bugfix/data object management by @essweine in #393
- Feature/performance improvements by @essweine in #398
- ensure parser knows about all namepsaces by @essweine in #402
- add docs for new examples by @essweine in #403
- fix bug in reset inside subprocess with boundary event by @essweine in #405
- Feature/receive message correlations by @essweine in #401
New Contributors
- @Leon0824 made their first contribution in #351
- @fzzylogic made their first contribution in #365
Full Changelog: v2.0.1...v3.0.0
What's Changed
- ruff linting fixes by @danfunk in #333
- prevent errors synching children of MI tasks by @essweine in #338
- Improvement/better subworkflow management by @essweine in #339
- Fix issue where call activities within sub processes were not returned by @jbirddog in #342
- Feature/event payloads by @essweine in #343
- Bugfix/gateway in loop by @essweine in #344
- Bugfix/update split task inputs by @essweine in #346
- Improvement/updates to multiinstance by @essweine in #347
- Improvement/replace root with spec start by @essweine in #348
- Import classes to instead of importing a module by @Leon0824 in #351
- Improvement/task and spec relations by @essweine in #349
- Improvement/flexible task iteration by @essweine in #352
- Bugfix/depth calc and task dict fixes by @essweine in #355
- Improvement/better serialization by @essweine in #357
- add support for conditional events by @essweine in #356
- remove Box and associated tests by @essweine in #360
- Unify connect() argument name to 'taskspec' by @Leon0824 in #361
- Improvement/misc cleanup and bugfixes by @essweine in #362
- Update data.rst by @fzzylogic in #365
- Update data.rst by @fzzylogic in #366
- Bugfix/cycle timer bugs by @essweine in #371
- allow TaskState to handle name/value conversion for any mask by @essweine in #372
- Feature/data object category by @jasquat in #373
- bugfix for invalid date by @essweine in #375
- Add CI job for Python 3.12 by @jbirddog in #376
- default the category for a DataObject to None by @jasquat in #377
- Update advanced.rst by @fzzylogic in #378
- Update advanced.rst by @fzzylogic in #379
- Improved init files and exceptions by @essweine in #380
- Bugfix/handle multiple start events correctly by @essweine in #381
- Bugfix/raise exception when creating non executable spec by @essweine in #382
- Improvement/file cleanup by @essweine in #383
- make documentation more developer-friendly by @essweine in #384
- update publish actions to use latest versions by @essweine in #385
- clean up script engine methods by @essweine in #388
- make TaskDataReference do something by @essweine in #389
- Bugfix/data object management by @essweine in #393
- Feature/performance improvements by @essweine in #398
- ensure parser knows about all namepsaces by @essweine in #402
- add docs for new examples by @essweine in #403
- fix bug in reset inside subprocess with boundary event by @essweine in #405
- Feature/receive message correlations by @essweine in #401
New Contributors
- @Leon0824 made their first contribution in #351
- @fzzylogic made their first contribution in #365
Full Changelog: v2.0.1...v3.0.0
v3.0.0rc2
What's Changed
- ruff linting fixes by @danfunk in #333
- prevent errors synching children of MI tasks by @essweine in #338
- Improvement/better subworkflow management by @essweine in #339
- Fix issue where call activities within sub processes were not returned by @jbirddog in #342
- Feature/event payloads by @essweine in #343
- Bugfix/gateway in loop by @essweine in #344
- Bugfix/update split task inputs by @essweine in #346
- Improvement/updates to multiinstance by @essweine in #347
- Improvement/replace root with spec start by @essweine in #348
- Import classes to instead of importing a module by @Leon0824 in #351
- Improvement/task and spec relations by @essweine in #349
- Improvement/flexible task iteration by @essweine in #352
- Bugfix/depth calc and task dict fixes by @essweine in #355
- Improvement/better serialization by @essweine in #357
- add support for conditional events by @essweine in #356
- remove Box and associated tests by @essweine in #360
- Unify connect() argument name to 'taskspec' by @Leon0824 in #361
- Improvement/misc cleanup and bugfixes by @essweine in #362
- Update data.rst by @fzzylogic in #365
- Update data.rst by @fzzylogic in #366
- Bugfix/cycle timer bugs by @essweine in #371
- allow TaskState to handle name/value conversion for any mask by @essweine in #372
- Feature/data object category by @jasquat in #373
- bugfix for invalid date by @essweine in #375
- Add CI job for Python 3.12 by @jbirddog in #376
- default the category for a DataObject to None by @jasquat in #377
- Update advanced.rst by @fzzylogic in #378
- Update advanced.rst by @fzzylogic in #379
- Improved init files and exceptions by @essweine in #380
- Bugfix/handle multiple start events correctly by @essweine in #381
- Bugfix/raise exception when creating non executable spec by @essweine in #382
- Improvement/file cleanup by @essweine in #383
- make documentation more developer-friendly by @essweine in #384
New Contributors
- @Leon0824 made their first contribution in #351
- @fzzylogic made their first contribution in #365
Full Changelog: v2.0.1...v3.0.0rc2
v3.0.0.0rc1
What's Changed
- ruff linting fixes by @danfunk in #333
- prevent errors synching children of MI tasks by @essweine in #338
- Improvement/better subworkflow management by @essweine in #339
- Fix issue where call activities within sub processes were not returned by @jbirddog in #342
- Feature/event payloads by @essweine in #343
- Bugfix/gateway in loop by @essweine in #344
- Bugfix/update split task inputs by @essweine in #346
- Improvement/updates to multiinstance by @essweine in #347
- Improvement/replace root with spec start by @essweine in #348
- Import classes to instead of importing a module by @Leon0824 in #351
- Improvement/task and spec relations by @essweine in #349
- Improvement/flexible task iteration by @essweine in #352
- Bugfix/depth calc and task dict fixes by @essweine in #355
- Improvement/better serialization by @essweine in #357
- add support for conditional events by @essweine in #356
- remove Box and associated tests by @essweine in #360
- Unify connect() argument name to 'taskspec' by @Leon0824 in #361
- Improvement/misc cleanup and bugfixes by @essweine in #362
- Update data.rst by @fzzylogic in #365
- Update data.rst by @fzzylogic in #366
- Bugfix/cycle timer bugs by @essweine in #371
- allow TaskState to handle name/value conversion for any mask by @essweine in #372
- Feature/data object category by @jasquat in #373
- bugfix for invalid date by @essweine in #375
- Add CI job for Python 3.12 by @jbirddog in #376
- default the category for a DataObject to None by @jasquat in #377
- Update advanced.rst by @fzzylogic in #378
- Update advanced.rst by @fzzylogic in #379
- Improved init files and exceptions by @essweine in #380
- Bugfix/handle multiple start events correctly by @essweine in #381
- Bugfix/raise exception when creating non executable spec by @essweine in #382
- Improvement/file cleanup by @essweine in #383
- make documentation more developer-friendly by @essweine in #384
New Contributors
- @Leon0824 made their first contribution in #351
- @fzzylogic made their first contribution in #365
Full Changelog: v2.0.1...v3.0.0rc1
v3.0.0rc0
In this release of SpiffWorkflow
- Task iteration has been refactored to make it easier and more efficient
- Conditional Event suppor has beent added to the BPMN module
- New 'spiffworkflow` BPMN extensions: payloads on Signal, Error, and Escalation Events
- Various bugfixes.
What's Changed
- ruff linting fixes by @danfunk in #333
- prevent errors synching children of MI tasks by @essweine in #338
- Improvement/better subworkflow management by @essweine in #339
- Fix issue where call activities within sub processes were not returned by @jbirddog in #342
- Feature/event payloads by @essweine in #343
- Bugfix/gateway in loop by @essweine in #344
- Bugfix/update split task inputs by @essweine in #346
- Improvement/updates to multiinstance by @essweine in #347
- Improvement/replace root with spec start by @essweine in #348
- Import classes to instead of importing a module by @Leon0824 in #351
- Improvement/task and spec relations by @essweine in #349
- Improvement/flexible task iteration by @essweine in #352
- Bugfix/depth calc and task dict fixes by @essweine in #355
- Improvement/better serialization by @essweine in #357
- add support for conditional events by @essweine in #356
- remove Box and associated tests by @essweine in #360
- Unify connect() argument name to 'taskspec' by @Leon0824 in #361
- Improvement/misc cleanup and bugfixes by @essweine in #362
- Update data.rst by @fzzylogic in #365
- Update data.rst by @fzzylogic in #366
- Bugfix/cycle timer bugs by @essweine in #371
- allow TaskState to handle name/value conversion for any mask by @essweine in #372
- Feature/data object category by @jasquat in #373
- bugfix for invalid date by @essweine in #375
- Add CI job for Python 3.12 by @jbirddog in #376
- default the category for a DataObject to None by @jasquat in #377
- Update advanced.rst by @fzzylogic in #378
- Update advanced.rst by @fzzylogic in #379
- Improved init files and exceptions by @essweine in #380
- Bugfix/handle multiple start events correctly by @essweine in #381
- Bugfix/raise exception when creating non executable spec by @essweine in #382
- Improvement/file cleanup by @essweine in #383
- make documentation more developer-friendly by @essweine in #384
New Contributors
- @Leon0824 made their first contribution in #351
- @fzzylogic made their first contribution in #365
Full Changelog: v2.0.0rc0...v3.0.0rc0
v2.0.1
v2.0.0
What's Changed
We've done a lot of work over the last 8 months to the SpiffWorkflow library as we've developed SpiffArena, a general purpose workflow management system built on top of this library.
This has resulted in a handful of new features.
Our main focus was on making SpiffWorkflow more predictable, easier to use, and internally consistent.
Breaking Changes from 1.x:
- We heavily refactored the way we handle multi-instance tasks internally. This will break any serialized workflows that contain multi-instance tasks.
- Internal structure of our code, the names of some classes, and common methods have changed. Please see our [ReadTheDocs] (https://readthedocs.org/projects/spiffworkflow/) documenation for version 2.0.0.
Features and Improvements
Task States, Transitions, Hooks, and Execution
Previous to 2.0, SpiffWorklow was a little weird about its states, performing the actual execution in the on_complete() hook.
This was VERY confusing.
Tasks now have a _run() command separate from state change hooks.
The return value of the _run() command can be true (worked), false (failure), or None (not yet done).
This opens the door for better overall state management at the moment it is most critical (when the task is actually executing).
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.
- Improvement/execution and serialization cleanup by @essweine in #289
- Bugfix/execute tasks on ready by @essweine in #303
- Feature/standardize task execution by @essweine in #307
- do not execute boundary events in catch by @essweine in #312
- Feature/new task states by @essweine in #315
Improved Events
We refactored the way we handle events, making them more powerful and adaptable.
Timer events are now parsed according to the ISO 8601 standard.
- Feature/multiple event definition by @essweine in #268
- hacks to handle timer events like regular events by @essweine in #273
- Feature/improved timer events by @essweine in #284
- reset boundary events in loops by @essweine in #294
- Bugfix/execute event gateways on ready by @essweine in #308
Improved Multi-Instance Tasks
We refactored how Multi-instance tasks are handled internally, vastly simplifying their representation during execution and serialization.
No more 'phantom gateways.'
Improved SubProcesses
SpiffWorkflow did not previously distinguish between a Call Activity and a SubProcess, but they handle Data Objects very differently.
A SubProcess is now able to access its parent data objects, a Call Activity can not.
We also wanted the ability to execute Call Activities independently of the parent process.
- Bugfix/subprocess access to data objects by @essweine in #296
- start workflow while subprocess is waiting by @essweine in #302
- use same data objects & references in subprocesses after deserialization by @essweine in #314
Improved Data Objects / Data Stores
This work will continue in subsequent releases, but we have added support for Data Stores, and it is possible to provide your own implementations.
Improved Inclusive Gateways
We added support for Inclusive Gateways.
Pre and Post Script Fixes
We previously supported adding a pre-script or post-script to any task but there were a few lingering bugs that needed fixing.
- parse spiff script extensions in service tasks by @essweine in #257
- pass script to workflow task exec exception by @essweine in #258
- update execution order for postscripts by @essweine in #259
DMN Improvements
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
we are making headway. We would love to know if people are using these features.
- Support for the "COLLECT" hit policy. by @danfunk in #267
- Bugfix/handle dash in DMN by @essweine in #323
BPMN Validation
We improved validation of BPMN and DMN Files to catch errors earlier.
New Serializer
There are some breaking changes in the new serializer, but it is much faster and more stable. We do attempt to upgrade
your serialized workflows to the new format, but you will definitely encounter issues if you were using multi-instance tasks.
Lightning Fast, Stable Tests
- Fix ResourceWarning: unclosed file BpmnParser.py:60 by @jbirddog in #270
- Option to run tests in parallel by @jbirddog in #271
Better Errors
- Feature/better errors by @danfunk in #283
- Workflow Data Exceptions were broken in the previous error refactor. … by @danfunk in #287
- added an exception for task not found w/ @burnettk by @jasquat in #310
- give us a better error if for some reason a task does not exist by @burnettk in #311
Flexible Data Management
Various Enhancements
Make it easier to reference SpiffWorkflow library classes from your own code.
- Feature/add init to schema by @jasquat in #260
- cleaning up code smell by @danfunk in #261
- Feature/cleanup task completion by @essweine in #263
- disambiguate DMN expressions by @essweine in #264
- Add in memory BPMN/DMN parser functions by @jbirddog in #320
Better Introspection
Added the ability to ask SpiffWorkflow some useful questions about a specification such as, "What call activities does this depend on?",
"What messages does this process send and receive", and "What lanes exist on this workflow specification?"
- Parser Information about messages, correlation keys, and the presence of lanes by @danfunk in #262
- Called elements by @jbirddog in #316
Code Cleanup
- Improvement/task spec attributes by @essweine in #328
- update license by @essweine in #324
- Feature/remove unused BPMN attributes and methods by @essweine in #280
- Improvement/remove camunda from base and misc cleanup by @essweine in #295
- remove minidom by @essweine in #300
- Feature/remove loop reset by @essweine in #305
- Feature/create core test package by @essweine in #306
- remove celery task and dependency by @essweine in #322
- remove one deprecated and unused feature by @essweine in #329
- change the order of tasks when calling get_tasks() by @danfunk in #319
Improved Documentation
- Fixes grammar, typos, and spellings by @rachfop in #291
- Updates for 2.0 release by @essweine in #330
- Bugfix/non BPMN tutorial by @essweine in #317
Bug Fixes
- correct xpath for extensions by @essweine in #265
- prevent output associations from being removed twice by @essweine in #275
- fix for workflowspec dump by @subhakarks in #282
- add checks for len == 0 when copying based on io spec by @essweine in https://github.com/sartography/SpiffW...
Version 2.0.0 - Release Candidate
What's Changed
We've done a lot of work over the last 8 months to the SpiffWorkflow library as we've developed SpiffArena, a general purpose workflow management system built on top of this library.
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.
Breaking Changes from 1.x:
- We heavily refactored the way we handle multi-instance tasks internally. This will break any serialized workflows that contain multi-instance tasks.
- 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.
Features and Improvements
Task States, Transitions, Hooks, and Execution
Previous to 2.0, SpiffWorklow was a little weird about its states, performing the actual execution in the on_complete() hook.
This was VERY confusing.
Tasks now have a _run() command separate from state change hooks.
The return value of the _run() command can be true (worked), false (failure), or None (not yet done).
This opens the door for better overall state management at the moment it is most critical (when the task is actually executing).
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.
- Improvement/execution and serialization cleanup by @essweine in #289
- Bugfix/execute tasks on ready by @essweine in #303
- Feature/standardize task execution by @essweine in #307
- do not execute boundary events in catch by @essweine in #312
- Feature/new task states by @essweine in #315
Improved Events
We refactored the way we handle events, making them more powerful and adaptable.
Timer events are now parsed according to the ISO 8601 standard.
- Feature/multiple event definition by @essweine in #268
- hacks to handle timer events like regular events by @essweine in #273
- Feature/improved timer events by @essweine in #284
- reset boundary events in loops by @essweine in #294
- Bugfix/execute event gateways on ready by @essweine in #308
Improved Multi-Instance Tasks
We refactored how Multi-instance tasks are handled internally, vastly simplifying their representation during execution and serialization.
No more 'phantom gateways.'
Improved SubProcesses
SpiffWorkflow did not previously distinguish between a Call Activity and a SubProcess, but they handle Data Objects very differently.
A SubProcess is now able to access its parent data objects, a Call Activity can not.
We also wanted the ability to execute Call Activities independently of the parent process.
- Bugfix/subprocess access to data objects by @essweine in #296
- start workflow while subprocess is waiting by @essweine in #302
- use same data objects & references in subprocesses after deserialization by @essweine in #314
Improved Data Objects / Data Stores
This work will continue in subsequent releases, but we have added support for Data Stores, and it is possible to provide your own implementations.
Improved Inclusive Gateways
We added support for Inclusive Gateways.
Pre and Post Script Fixes
We previously supported adding a pre-script or post-script to any task but there were a few lingering bugs that needed fixing.
- parse spiff script extensions in service tasks by @essweine in #257
- pass script to workflow task exec exception by @essweine in #258
- update execution order for postscripts by @essweine in #259
DMN Improvements
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
we are making headway. We would love to know if people are using these features.
- Support for the "COLLECT" hit policy. by @danfunk in #267
- Bugfix/handle dash in DMN by @essweine in #323
BPMN Validation
We improved validation of BPMN and DMN Files to catch errors earlier.
New Serializer
There are some breaking changes in the new serializer, but it is much faster and more stable. We do attempt to upgrade
your serialized workflows to the new format, but you will definitely encounter issues if you were using multi-instance tasks.
Lightning Fast, Stable Tests
- Fix ResourceWarning: unclosed file BpmnParser.py:60 by @jbirddog in #270
- Option to run tests in parallel by @jbirddog in #271
Better Errors
- Feature/better errors by @danfunk in #283
- Workflow Data Exceptions were broken in the previous error refactor. … by @danfunk in #287
- added an exception for task not found w/ @burnettk by @jasquat in #310
- give us a better error if for some reason a task does not exist by @burnettk in #311
Flexible Data Management
Various Enhancements
Make it easier to reference SpiffWorkflow library classes from your own code.
- Feature/add init to schema by @jasquat in #260
- cleaning up code smell by @danfunk in #261
- Feature/cleanup task completion by @essweine in #263
- disambiguate DMN expressions by @essweine in #264
- Add in memory BPMN/DMN parser functions by @jbirddog in #320
Better Introspection
Added the ability to ask SpiffWorkflow some useful questions about a specification such as, "What call activities does this depend on?",
"What messages does this process send and receive", and "What lanes exist on this workflow specification?"
- Parser Information about messages, correlation keys, and the presence of lanes by @danfunk in #262
- Called elements by @jbirddog in #316
Code Cleanup
- Improvement/task spec attributes by @essweine in #328
- update license by @essweine in #324
- Feature/remove unused BPMN attributes and methods by @essweine in #280
- Improvement/remove camunda from base and misc cleanup by @essweine in #295
- remove minidom by @essweine in #300
- Feature/remove loop reset by @essweine in #305
- Feature/create core test package by @essweine in #306
- remove celery task and dependency by @essweine in #322
- remove one deprecated and unused feature by @essweine in #329
- change the order of tasks when calling get_tasks() by @danfunk in #319
Improved Documentation
- Fixes grammar, typos, and spellings by @rachfop in #291
- Updates for 2.0 release by @essweine in #330
- Bugfix/non BPMN tutorial by @essweine in #317
Bug Fixes
- correct xpath for extensions by @essweine in #265
- prevent output associations from being removed twice by @essweine in #275
- fix for workflowspec dump by @subhakarks in #282
- add checks for len == 0 when copying based on io spec by @essweine in https://github.com/sartography/SpiffWork...
1.2.1
V1.2.0
Data Objects, Messages and Services
Note: there are some minor breaking changes in this release, please see "Minor Breaking Changes and their Fixes" below for how to fix them.
This Version of SpiffWorkflow adds support for Data Objects, Messages, and Service Tasks. These are powerful new tools for managing workflows as they grow in complexity. Details below.
This is also our first step towards a larger ecosystem. One that includes a customized Diagram Editor that is still under development, but available on GitHub and perfectly serviceable. You will need the editor to take full advantage of the new features mentioned above. A new project, code named SpiffArena is also under heavy development. SpiffArena will connect this SpiffWorkflow library to the new BPMN Editor and provide a complete Workflow Engine with a backend and frontend that can be configured to manage and execute a collection of your own BPMN diagrams. Keep an eye out for an initial release before the end of the year.
In addition to major new features, we've improved some existing core features. The Python Expression Engine is now easier to extend and modify for custom deployments, and SubProcesses have a far stronger and more consistent internal representation and are easier to control. We've also added the ability to unit test your script tasks - to make it much easier to write small python scripts to re-structure your data.
Finally, we undertook hours of effort to clean up the code base, so that imports are consistent, circular dependencies are removed, and code smells are eliminated. It is by no means perfect, but we are arcing in the right direction.
Major Changes
Data Objects, Inputs and Outputs
We now support Data Objects, providing powerful tools for controlling the scope and access of variables within a workflow.
For an overview of how Data Objects work, please check out our article "Understanding BPMN Data Objects". Detailed information is also available in our ReadTheDocs page.
- explicitly add data associations on serializing MI tasks by @danfunk in PR
- add messages to data object exceptions by @essweine in PR
Messages
Communication between running workflow instances is a powerful tool as workflows become more complex. For a detailed overview of this topic, please check out our article "Understanding BPMN Messages"
Service Tasks
Service Tasks are now supported, and offer an easy way for BPMN Developers to make calls to external APIs. Examples for
working with this critical new tool will be documented in our ReadTheDocs page.
- First pass of ServiceTask handling by @jbirddog in PR
- Service task connector delegate by @jbirddog in PR
- Store service task response in task data by @jbirddog in PR
- get description aka name when parsing service tasks by @burnettk in PR
- Follow up on service task bug fix, quote string literals by @jbirddog in PR
- Pass task data to service task delegate by @jbirddog in PR
Custom BPMN Editor Support
Still in heavy development is a custom BPMN Editor, which you can find on GitHub
This new editor provides the tools that will make creating valid Service Tasks, Data Objects, and Messages possible.
Many thanks to the BPMN.js community for this highly extensible diagramming library!
- Support for Spiff pre/postscript extensions by @essweine in PR
z* parses out spiffworklow:property tags in bpmn extensions and makes th… by @danfunk in PR
Improved Script Engine
A Script Engine that is overall easier to understand and extend.
- Feature/improved script engine by @essweine in PR
- make globals an argument in the script engine by @essweine in PR
Script Task Unit Testing
Added the ability to create, store, and execute assertions against Script Tasks. Allows you to define a Json data
structure as input, and an expected Json data structure as output. So you can assert your script is producing exactly
the right data.
New spec_type attribute
Given the ability to overload classes, and mix-in properties, it could be difficult to look at a Task Spec's class
to determine if it was a User Task or Script Task, etc... All Task Specs now have a spec_type attribute, containing a descriptive string of the type, expect to see "User Task", "Script Task", "Start Event" etc...
Improved Subprocess Handling
- Allows recursive calls to subprocesses, and improves serialization and execution by @essweine in PR
- add bpmn spec mixin functionality to subworkflow tasks by @essweine in PR
- handle all data copying in bpmn subworkflow task by @essweine in PR
Vastly Faster Tests!
- Profile and improve run time of the test suite by @jbirddog in PR
- Improve test suite run time, part 2 by @jbirddog in PR
- ParallelTest.py split by @jbirddog in PR
- Up some sleep times in tests for CI stability by @jbirddog in PR
Bug Fixes
- fix loop reset task to handle multiple subprocess properly by @essweine in PR
- Bugfix/separate subprocess dict for serializer by @danfunk in PR
- Update make tests to run tests per the README, remove unused test runners by @jbirddog in PR
- Bug/service task variable by @jbirddog in PR
- Fix for failures with Python 3.7 by @jbirddog in PR
Code Cleanup and Documentation Changes
- Support custom JSON encoder/decoder in BpmnWorkflowSerializer by @soby in PR
- Add Python 3.10 to CI by @jbirddog in PR
- list dependencies by @danfunk in PR
- Feature/centralized logging by @essweine in PR
- [FIX] Use self.spec_class instead of direct use of base object by @Giulios74 in PR
- add more documentation about serializer migration by @essweine in PR
- docs: Fix a few typos by @timgates42 in PR
- Fix a few docstring typos in the tests by @jbirddog in PR
- Remove unused imports by @jbirddog in PR
- Reorganized parser PR
- fix for a serialization bug by @danfunk in PR
- fix serialization bug by @essweine in PR
- Don't use bpmn exception from core spec by @jbirddog in PR
- added task name to the spiff logs by @burnettk in PR
- Remove navigation.py, tests and related bpmn files by @jbirddog in PR
- Remove bpmn imports from task.py by @jbirddog in PR
- Remove bpmn references from dict.py and json.py by @jbirddog in PR
- Remove some lingering bpmn imports by @jbirddog in PR
- Empty SpiffWorkflow/init.py by @jbirddog in PR
- Various fixes as I attempted to get our CR-Connect application working against the lastest SpiffWorkflow build by @danfunk in PR
Minor Breaking Changes and their Fixes
This Minor Release includes a few minor breaking changes that should be easy
to correct. Please apply these fixes as appropriate
- Top Level Imp...
Updated Serializer
What's Changed
This push covers a major overhaul of our JSON serializer, which previously depended on using pickle making the json difficult to read and parse outside of Spiff and creating some potential security concerns.
IMPORTANT: If you have existing workflows stored as JSON you will need to migrate them to the new version, you can do this on the fly by following the Migration Instructions
- fix broken links by @essweine in #173
- Enhancement/167 drop the pickles by @essweine in #174
- Bug/serializer call activity issue by @danfunk in #179
- refactor: move TaskState object out of Task object by @a358003542 in #178
- Enhancement/improve subprocess serialization by @danfunk in #181
New Contributors
- @a358003542 made their first contribution in #178
Full Changelog: v1.1.6...v1.1.7