Spiff Workflow is a library implementing a framework for workflows.
It is based on http://www.workflowpatterns.com and implemented in pure Python.
In addition, Spiff Workflow provides a parser and workflow emulation layer that can be used to create executable Spiff Workflow specifications from Business Process Model and Notation (BPMN) documents.
For documentation please refer to:
Spiff alternatives and similar packages
Based on the "Job Scheduler" category.
Alternatively, view Spiff alternatives based on common mentions on social networks and blogs.
3.2 4.4 L4 Spiff VS TaskFlowA library to complete workflows/tasks in HA manner. Mirror of code maintained at opendev.org.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of Spiff or a related project?
Spiff Workflow is a workflow engine implemented in pure Python. It is based on the excellent work of the Workflow Patterns initiative.
Do you need commercial support?
Spiff Workflow is supported by Procedure 8. Get in touch if you need anything!
Main design goals
- Spiff Workflow aims to directly support as many of the patterns of workflowpatterns.com as possible.
- Spiff Workflow uses unit testing as much as possible.
- Spiff Workflow provides a clean Python API.
- Spiff Workflow allows for mapping patterns into workflow elements that are easy to understand for non-technical users in a workflow GUI editor.
- Spiff Workflow implements the best possible path prediction for workflows.
Spiff Workflow also provides a parser and workflow emulation layer that can be used to create executable Spiff Workflow specifications from Business Process Model and Notation (BPMN) documents.
The process of using Spiff Workflow involves the following steps:
- Write a workflow specification. A specification may be written using XML (example), JSON, or Python (example).
- Run the workflow using the Python API. Example code for running the workflow:
from SpiffWorkflow.specs import WorkflowSpec from SpiffWorkflow.serializer.prettyxml import XmlSerializer from SpiffWorkflow import Workflow # Load the workflow specification: with open('my_workflow.xml') as fp: serializer = XmlSerializer() spec = WorkflowSpec.deserialize(serializer, fp.read()) # Create an instance of the workflow, according to the specification. wf = Workflow(spec) # Complete tasks as desired. It is the job of the workflow engine to # guarantee a consistent state of the workflow. wf.complete_task_from_id(...) # Of course, you can also persist the workflow instance: xml = wf.serialize(XmlSerializer, 'workflow_state.xml')
Full documentation is here: