How scope-li/flow-bundle works
Flow is a Symfony BPMN 2.0 workflow engine. An application starts or advances a process through the runtime, which works with process definitions, instances, and execution tokens; BPMN elements describe the activities, events, and gateways available to that workflow. The engine also supports Camunda connector and input/output extensions, scripts and expressions, and serialization plus Doctrine lifecycle integration. The README documents supported BPMN stages; source excerpts are limited, so links between unsampled runtime components are not asserted.
Main entry points: ConnectorRunner.php Connector runner · InputOutput.php Camunda extensions · ProcessInstance.php Process instance · DoctrineListener.php Doctrine lifecycle
Components 20
BPMN model
- BPMN definitions
src/Element/Bpmn.php - Flow elements
src/Element/FlowElement.php - Events and gateways
src/Element/FlowNode.php - BPMN tasks
src/Element/Task.php
Process runtime
- Process runner
src/Process/ProcessRunner.php - Definition repository
src/Process/ProcessDefinitionRepository.php - Process instance
src/Process/ProcessInstance.php - Execution token
src/Process/Token.php
Activity execution
- Camunda extensions
src/ElementCamunda/InputOutput.php - Script runner
src/Script/ScriptRunner.php - Twig scripts
src/Script/ScriptTwig.php - Connector runner
src/Connector/ConnectorRunner.php - Connector implementations
src/Connector/ConnectorInterface.php
State and events
- Instance repository
src/Process/ProcessInstanceRepository.php - Instance serializer
src/Serializer/SerializerInterface.php - Doctrine lifecycle
src/EventListener/DoctrineListener.php - Process events
src/Event/ProcessInstanceEvents.php - Event listeners
src/EventListener/OperationListener.php
Other components
- Symfony application
- Symfony expressions
Connections 11
- Symfony application → Process runner: starts or advances
- Connector runner → Camunda extensions: evaluates parameters
- Camunda extensions → Script runner: runs scripts
- Script runner → Twig scripts: dispatches scripts
- Connector runner → Connector implementations: dispatches connector
- Connector runner → Process instance: merges process data
- Camunda extensions → Symfony expressions: evaluates expressions
- Instance repository → Process instance: stores instances
- Doctrine lifecycle → Instance serializer: serializes instances
- Doctrine lifecycle → Process instance: restores instances
- Event listeners → Process events: listens to events