Ebi_BPMN
A BPMN library for Rust
Contains a parser, a data structure and a writer. For now, this crate focuses on the behaviour of BPMN models; not on the data or resource perspectives. The crate provides methods to parse BPMN models, methods to write BPMN models, and methods to traverse the state space of a BPMN model.
If you are an end user, consider the Ebi crate & tool, which provides user-accessible algorithms that use BPMN.
Supported elements
- Start, end and intermediate none events
- Start, end and intermediate message events
- Start and intermediate timer events
- Exclusive, inclusive, parallel and event-based gateways
- Expanded and collapsed pools
- Message flows
- Sequence flows
- Tasks
- Expanded and collapsed sub-processes
Other elements are gracefully ignored, as long as they do not have in- or outgoing message or sequence flows.
Process instance intitation
In accordance with the BPMN standard, a process instance can start as follows:
- If the model contains a single start event, then that event is fired to start a process instance.
- If the model contains multiple start events, one of them can be chosen to start a process instance.
- If the model contains no start events, every eligible element receives a token, and they thus start in parallel.
Deviations from the BPMN 2.0.2 standard
The interpretation of BPMN of this crate differs from the BPMN 2.0.2 standard on the following aspects:
- There is no difference made between a deadlock and proper termination. That is, a trace is considered finished if and as soon as it reaches a deadlock.
- The inclusive (OR) gateway uses a slightly different semantics.
For more information on these elements, see this Youtube playlist.
Limitations
- The crate does not currenly consider or export layouting (bpmndi) information.
- There is a maximum number of outgoing sequence flows of an inclusive gateway of 64 (on 64-bits system) or 32 (on 32-bit systems).