ebi_bpmn 0.0.20

Objects for Ebi - a stochastic process mining utility
Documentation

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).