https://github.com/bptlab/scylla

Extensible BPMN process simulator

https://github.com/bptlab/scylla

Science Score: 39.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.5%) to scientific vocabulary

Keywords

business-process-simulation discrete-event-simulation
Last synced: 11 months ago · JSON representation

Repository

Extensible BPMN process simulator

Basic Info
  • Host: GitHub
  • Owner: bptlab
  • License: mit
  • Language: Java
  • Default Branch: main
  • Homepage:
  • Size: 66.5 MB
Statistics
  • Stars: 23
  • Watchers: 4
  • Forks: 13
  • Open Issues: 34
  • Releases: 1
Topics
business-process-simulation discrete-event-simulation
Created over 9 years ago · Last pushed over 1 year ago
Metadata Files
Readme License

README.md

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: - The left side shows the simulation inputs. There, configuration and process model files can be loaded and removed. Further new configuration files can be created or existing ones edited. This then opens the respective interfaces as new tabs. - The right side shows the loaded plugins. It allows to select which plugins are active, and even to (de-)activate single classes. - The bottom shows the simulation console output and provides the controls to start the simulation and inspect the last simulation outputs.

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): - --help prints information about the command line usage of Scylla - --headless activates the headless mode - --config=<path to file> where <path to file> must lead to a global configuration file. This parameter must be present exactly once in headless mode - --bpmn=<path to file> where <path to file> must lead to a bpmn process model. This parameter must be present at least once in headless mode, but might be multiple times - --sim=<path to file> where <path to file> must lead to a simulation model configuration file. This parameter might be present multiple times, but there must be configurations for each simulated business process - --enable-bps-logging enables logging of the executed process instances. This flag is optional, but recommended to activate - --enable-des-logging enables logging of the descrete event simulation used. The flag is optional, recommended only to use for debugging - --output=<path to folder> sets the output folder to <path to folder>. Optional, otherwise a default path will be used

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: java 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

  • Scylla-Container provides a simple http API and dockerization of Scylla
  • SimuBridge is an application that bridges between process mining and business process simulation. It uses Scylla as Simulator and provides a generic metamodel and GUI for the construction of business process simulation models, usable in Scylla.
  • Scylla-Plugin--SOPA a plugin for the sustatinability simulation framework SOPA.
  • scylla-ui (discontinued) provides a GUI for visualizing Scylla simulation outputs

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.

Owner

  • Name: Business Process Technology
  • Login: bptlab
  • Kind: organization
  • Location: Potsdam, Germany

Business Process Technology @ Hasso Plattner Institute, University of Potsdam

GitHub Events

Total
  • Issues event: 1
  • Watch event: 1
  • Issue comment event: 2
  • Push event: 3
  • Pull request event: 4
  • Fork event: 4
  • Create event: 1
Last Year
  • Issues event: 1
  • Watch event: 1
  • Issue comment event: 2
  • Push event: 3
  • Pull request event: 4
  • Fork event: 4
  • Create event: 1

Issues and Pull Requests

Last synced: over 1 year ago

All Time
  • Total issues: 68
  • Total pull requests: 9
  • Average time to close issues: 8 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 6
  • Total pull request authors: 4
  • Average comments per issue: 0.93
  • Average comments per pull request: 0.89
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 9
  • Pull requests: 1
  • Average time to close issues: about 2 months
  • Average time to close pull requests: less than a minute
  • Issue authors: 2
  • Pull request authors: 1
  • Average comments per issue: 0.67
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • LeonBein (43)
  • s4pu (7)
  • LuisePufahl (7)
  • hpl002 (3)
  • marcfreiheit (3)
  • MaximilianKoenig (1)
Pull Request Authors
  • LeonBein (8)
  • s4pu (1)
  • tutkualpsar (1)
  • marcfreiheit (1)
  • lokmeinmatz (1)
Top Labels
Issue Labels
Topic - Plugins (19) bug (17) enhancement (16) Topic - UI (15) new (6) Topic - Scylla Web (5) Topic - Batch (4) expand (2) question (2) documentation (2) wontfix (1)
Pull Request Labels
enhancement (1) new (1)

Dependencies

pom.xml maven
  • desmoj:desmoj 2.5.1 compile
  • org.deckfour:openxes 20160212 compile
  • org.deckfour:openxes-xstream 20160212 compile
  • org.deckfour:ospex 1.0 compile
  • org.javatuples:javatuples 1.2 compile
  • javax.xml.bind:jaxb-api 2.3.0
  • org.jdom:jdom2 2.0.6
  • org.apache.velocity:velocity-tools 2.0 test
  • org.junit.jupiter:junit-jupiter-engine 5.3.1 test
  • org.junit.jupiter:junit-jupiter-params 5.3.1 test
  • org.junit.platform:junit-platform-launcher 1.1.1 test
.github/workflows/CI.yml actions
  • actions/checkout v3 composite
  • actions/setup-java v3 composite
  • advanced-security/maven-dependency-submission-action 571e99aab1055c2e71a1e2309b9691de18d6b7d6 composite
  • coactions/setup-xvfb v1 composite
.github/workflows/publish.yml actions
  • actions/checkout v3 composite
  • actions/setup-java v3 composite
  • coactions/setup-xvfb v1 composite
  • ncipollo/release-action v1.12.0 composite