How sartography/spiffworkflow works
SpiffWorkflow is a Python workflow engine: users supply BPMN diagrams, DMN decision tables, or programmatic workflow specifications; the engine builds executable specifications, runs tasks, and exposes workflow state. BPMN parsing and event/task modeling, DMN evaluation, and code-defined workflows are distinct product stages. Serialization provides a persistence boundary. The graph reflects README capabilities and relationships listed in the SOURCE INDEX; unsampled runtime wiring is omitted where it cannot be verified.
Main entry points: BpmnParser.py BPMN parser · workflow.py Workflow runtime · BpmnDmnParser.py BPMN-DMN parser · model.py Decision model
Components 24
Workflow execution
- Workflow specification
SpiffWorkflow/specs/WorkflowSpec.py - Task specifications
SpiffWorkflow/specs/base.py - Workflow runtime
SpiffWorkflow/workflow.py - Task state
SpiffWorkflow/task.py - Task traversal
SpiffWorkflow/util/task.py
BPMN processing
- BPMN parser
SpiffWorkflow/bpmn/parser/BpmnParser.py - Task parsing
SpiffWorkflow/bpmn/parser/TaskParser.py - Event parsing
SpiffWorkflow/bpmn/parser/event_parsers.py - BPMN specifications
SpiffWorkflow/bpmn/specs - BPMN workflow
SpiffWorkflow/bpmn/workflow.py - Camunda parser
SpiffWorkflow/camunda/parser/CamundaParser.py - Spiff parser
SpiffWorkflow/spiff/parser
Decision processing
- DMN parser
SpiffWorkflow/dmn/parser/DMNParser.py - BPMN-DMN parser
SpiffWorkflow/dmn/parser/BpmnDmnParser.py - Decision model
SpiffWorkflow/dmn/specs/model.py - DMN engine
SpiffWorkflow/dmn/engine/DMNEngine.py - Python script engine
SpiffWorkflow/bpmn/script_engine/python_engine.py
Serialization and extensions
- Workflow serializers
SpiffWorkflow/serializer - BPMN serializers
SpiffWorkflow/bpmn/serializer - DMN serializer
SpiffWorkflow/dmn/serializer/task_spec.py
Other components
- Workflow author
- BPMN diagram
- DMN table
- Python workflow
Connections 26
- Workflow author → BPMN diagram: authors
- Workflow author → DMN table: authors
- Workflow author → Python workflow: defines
- BPMN diagram → BPMN parser: parses
- BPMN parser → Task parsing: uses
SpiffWorkflow/bpmn/parser/BpmnParser.py - BPMN parser → Event parsing: uses
SpiffWorkflow/bpmn/parser/BpmnParser.py - BPMN parser → BPMN specifications: builds
SpiffWorkflow/bpmn/parser/BpmnParser.py - BPMN parser → BPMN workflow: produces
- DMN table → DMN parser: parses
- DMN parser → Decision model: builds
SpiffWorkflow/dmn/parser/DMNParser.py - BPMN-DMN parser → BPMN parser: uses
SpiffWorkflow/dmn/parser/BpmnDmnParser.py - BPMN-DMN parser → DMN parser: uses
SpiffWorkflow/dmn/parser/BpmnDmnParser.py - BPMN-DMN parser → DMN engine: uses
SpiffWorkflow/dmn/parser/BpmnDmnParser.py - Decision model → DMN engine: evaluated by
SpiffWorkflow/dmn/engine/DMNEngine.py - DMN engine → Python script engine: evaluates expressions
- Python workflow → Workflow specification: defines
- Workflow specification → Task specifications: connects
SpiffWorkflow/specs/WorkflowSpec.py - Workflow runtime → Workflow specification: uses
SpiffWorkflow/workflow.py - Workflow runtime → Task state: runs
SpiffWorkflow/workflow.py - Task state → Task specifications: executes
SpiffWorkflow/task.py - Workflow runtime → Task traversal: traverses
SpiffWorkflow/workflow.py - Workflow runtime → Workflow serializers: serializes through
SpiffWorkflow/workflow.py - BPMN specifications → BPMN serializers: serialized by
SpiffWorkflow/bpmn/serializer/helpers/spec.py - Decision model → DMN serializer: serialized by
SpiffWorkflow/dmn/serializer/task_spec.py - Camunda parser → BPMN parser: extends
SpiffWorkflow/camunda/parser/CamundaParser.py - Spiff parser → Event parsing: extends
SpiffWorkflow/spiff/parser/event_parsers.py