Snurr
Snurr can run the process flow from a Business Process Model and Notation (BPMN) 2.0 file created by https://demo.bpmn.io/new.
- Add your own behavior with Rust code from a small API. The wiring is already setup from the file.
- Easy to update the BPMN diagram with new Task and Gateways without the need to refactor your old code.
- The BPMN file is the actual design. Forget outdated documentation.
- Scaffold the initial BPMN diagram so you don't have to do the boilerplate code.
- Contains no database.
- Single or multithreaded (opt in)
Read the Snurr documentation and explore the tests folder for more examples.
NOTE: To view or edit BPMN files in your project you can use the BPMN Editor plugin in VS Code.

Example
BPMN diagram used in example.

Usage
[]
= "0.10"
= "0.4"
= "0.5"
use Process;
extern crate pretty_env_logger;
Output
If RUST_LOG=info is set when running example
INFO snurr::process::engine > Start: Begin process
INFO snurr::process::engine > SequenceFlow: count
INFO snurr::process::engine > Task: Count 1
INFO snurr::process::engine > SequenceFlow: control
INFO snurr::process::engine > Exclusive: equal to 3
INFO snurr::process::engine > SequenceFlow: NO
INFO snurr::process::engine > Task: Count 1
INFO snurr::process::engine > SequenceFlow: control
INFO snurr::process::engine > Exclusive: equal to 3
INFO snurr::process::engine > SequenceFlow: NO
INFO snurr::process::engine > Task: Count 1
INFO snurr::process::engine > SequenceFlow: control
INFO snurr::process::engine > Exclusive: equal to 3
INFO snurr::process::engine > SequenceFlow: YES
INFO snurr::process::engine > End: End process
Count: 3
Prepared sample
Run or copy the simple.rs in the examples folder
RUST_LOG=info cargo run --example simple