Pi-Calculus Shell
Introduction
The Pi-Calculus Shell (pishell) provides a command line interface for simulating and analzying business processes (denoted in proprietary BPMN) in asynchronous pi-calculus. Besides command line interactions, a graphical output of the business process in BPMN is contained. The Ruby source can be found here.
Requirements
The Pi-Calculus Shell requires
- Ruby >= 1.8.2
- TK extensions for Ruby
- OmniGraffle for graphically modeling business processes (via the exporter found here)
Screenshot
The graphical visualization of the Pi-Calculus shell
Short Walkthrough
After unpacking the .zip-file, you can simply start the Pi-Calculus shell via 'ruby pishell.rb'. Please note again, that you need TK installed and linked to Ruby!
The Pi-Calculus shell has a built in help via 'h'. The .zip-file contains different examples that can be loaded with 'l filename' and the graphics can be shown with 'g'. The next transition is enabled with 'Enter', if a choice is possible, you can also enter one of the numbers shown. If you move the mouse above the elements of the graphical representation, you can see the names of the corresponding agents (for nodes) or pi-calculus names (for edges). The following files are provided:
- test1.xml: Simple AND-split
- test2.xml: Simple loop
- test3.xml: Deadlock
- test4.xml: Loop and Attached-Intermediate-Event (Event-based Rerouting pattern)
- test5.xml: Two Attached-Intermediate-Events
- test6.xml: Five different processes with OR-Joins
- test7.xml: Complex BPD
- test8.xml: Two Start-events (different execution semantics if you change the option forceCycles with 'o forceCycles=true')
You can calculate the remaining (different) states with 's max', where max denotes the maximum number of states to be calculated. Please note that the tool is written in Ruby with a very memory-expensive pi-calculus representation! If the remaining states can be calculated, it is also shown if the last state is always a BPMN End-Event.
Supported commands
- a, agents: shows all agents
- e, export
: exports current agents to file - g, graphics: toggles the BPMN visualization of the current process on or off
- h, help: this help
- i, inspect
: inspects the given agent - l, load
: load file - o, option
: shows and toggles options - q, quit: quit pi-shell
- r, reset: reset current agent
- s, states: calculates the remaining (different) states of the current agent
- t, tree: prints the current execution tree
- v, view: shows the given variable (type 'v' for help)
Publications
The theoretical foundation of the pishell (asynchronous pi-calculus, or-join semantics) can be found in
- Uwe Nestmann, Frank Puhlmann: Business Process Specification and Analysis. In Process Algebra for Parallel and Distributed Computing. Boca Raton, Chapmann & Hall/CRC Press (2009) 129-160