Components
Simulation Engine consists of following components:
- simulation-api - interfaces that will be exposed to the client or should be implemented by the client
- simulation-engine - core implementation responsible for preparing simulation and execution of simulation
- simulation-signavio-plugin - plugin to Signavio modeler to be able to launch simulation directly from the modeler
- simulation-engine-adapter-activiti - Activiti adapter to be able to utilize Activiti Engine
- simulation-engine-adapter-jbpm4 - JBPM4 adapter to be able to utilize JBPM4 Engine (process diagram format is JPDL)
Simulation Engine
Simulation engine will run every simulation is stages:
- preparation stage
- load process diagram
- resolve alternative paths
- calculate alternative path probability
- calculate number of instances for alternative path
- generate random start times
- simulation stage
- create instance for every alternative path
- invoke registered simulation features for every activity (including sequence flows or transitions if you like)
- record every activity statistic
- record every path statistic
- generation stage
- generate report based on recorded statistics
Something that is rather not clear is what is Simulation Feature. Simulation Feature represents a unit of work that could be applied to simulation on one of four defined phases:
- PATH - it will be invoked on every alternative path, only once
- PATH_INSTANCE - it will be invoked for every instances of given alternative path during simulation stage
- ELEMENT - it will be invoked on every element (activity or sequence flow), only once
- ELEMENT_INSTANCE - it will be invoked for every instance of an element (activity or sequence flow) during simulation stage
An example of such Simulation Feature is - Activity execution time - that is responsible for calculating execution and wait time for an activity.