A simple implementation of a BPM engine, designed to mimic Activiti's behaviour. Optimized for high performance (rather than strict following of the BPMN specification).
- a lightweight BPM engine, inspired by Activiti BPM engine;
- high-performance on-disk persistence;
- event scheduling (e.g. "timers");
- supports Activiti's XML format (both process and visual elements);
- supports JUEL in flow expressions, task delegates, etc;
- form service API for creating form-based user tasks;
- JUnit support (and easy unit testing in general).
- boundary event (errors and timers);
- call activity;
- end event;
- event-based gateway;
- exclusive gateway;
- inclusive gateway;
- intermediate catch event;
- parallel gateway;
- script task (JSR-223);
- sequence flow;
- service task;
- start event;
- subprocess;
- user task.
- tasks with TimerBoundaryEvents executed in a separate thread inside of an unbounded Executor.
- currently there is an unbound storage for element activation records. It is used internally in the engine and can cause large memory footprint in processes with huge amount of looping (hundreds of thousands loops).
Based on the original implementation at ibodrov/bpm. Original contributors:
- Ivan Bodrov [email protected]
- Yuri Brigadirenko [email protected]