bptlab / scylla

Extensible BPMN process simulator
MIT License
19 stars 9 forks source link
business-process-simulation discrete-event-simulation

Scylla - An extensible BPMN process simulator Build Status

Scylla is an extensible business process simulator. Simulations are configured with a file for general information, such as resources, multiple BPMN model files, which allow multi-process simulation with shared resources, and simulation configuration files, which extend the BPMN files with simulation-specific information, e.g., inter-arrival time of instances, task duration. Scylla simulates these inputs using discrete event simulation (DES) and produces information on the simulated process instances, such as an XES event log.

The engine can be controlled via a GUI, which also provides an interface for creating the configuration input files, or by command line. Scylla stands out by offering well-defined entry points for extensions based on a plug-in structure, which allows to make it fulfil specific simulation requirements.

Quick Start

Download the latest release zipfile and unpack it. It is important that the lib folder stays in the same directory as the scylla.jar file.

You can then start Scylla by executing the jarfile, e.g., by calling java -jar scylla.jar in the unpacked folder.

Note that a valid Java installation is needed to run Scylla, we recommend at least Java 11.

Usage

Scylla has two main ways of operation, with a graphical user interface and via a command line interface.

UI

When starting Scylla without any additional parameters, the Scylla GUI opens. grafik

The UI is structured as follows:

Note that to run a simulation, at the following inputs are needed: One global configuration file, at least one bpmn file, simulation configuration files for all processes of the bpmn files. For details on the simulation inputs, please refer to the wiki.

CLI/Headless Mode

Scylla can also be run without GUI. This is useful, e.g., when calling it from another program or when running the same Simulation multiple times. Configuration of the simulation then happens with the following program parameters (defined directly in the main class Scylla.java):

Calling from Code

Scylla can also be directly called from another Java application. For this, the application has to import Scylla as Maven dependency. Then, either call the main class Scylla's main method, or manually create a new SimulationManager and call run.

Plugins

One distinctive feature of Scylla is its plugin system, which allows to easily add functionality for specialized or refined simulation behavior.

Loading Plugins

To load additional plugins, put their respective jarfiles into the plugins subfolder of your Scylla folder. You can check whether a plugin has been loaded by starting the Scylla GUI and asserting that it appears in the plugins list.

Plugin Development

To create a new plugin, create a new Maven project for your plugin. Add Scylla as a Maven dependency to that project. Potentially, you first need to install Scylla via Maven. Then, create your plugin classes. These are all classes that extend one of the entrypoints (see wiki), which in turn implement the IPluggable interface. Note that all classes belonging to the same plugin should return the same value in their implementation of getName. To test your plugin from within your plugin project, you can put the following hack class into your package and execute it:

public class Main {
    public static void main(String[] args) throws IOException {
        PluginLoader.getDefaultPluginLoader().loadPackage(Main.class.getPackageName());
        Scylla.main(args);
    }
}

To 'publish' your plugin, run Maven package to generate a jarfile and put it into the plugins subfolder of your scylla folder. More information on the plug-in structure and how plug-ins can be developed are given in the wiki.

Related Projects

Related Publications

About

Scylla was initially developed in 2017 as part of a Master's Thesis by Tsun Yin Wong at the chair for Business Process Technologies (BPT) at the Hasso Plattner Institute Potsdam. Further development was then done at the BPT chair. Currently, the project is being developed further and maintained in cooperation by the HPI BPT chair and the chair for Information Systems at the Technical University of Munich.