Introduction

SEPIA stands for ”Security-oriented Petri Net Framework” and provides implementations for various types of Petri nets. Along Place/Transition-Nets, it supports Petri nets with distinguishable token colors. To support information flow analysis of processes, SEPIA defines so-called IF-Nets, tailored for security-oriented workflow modelling, which enable users to assign security-levels (high, low) to transitions, data elements and persons/agents participating in the process execution.

For the usage in editors, Petri nets can be put in graphical containers, which hold visualization information. To preserve compatibility, Petri nets from other frameworks can be imported with the parser functionalities and also be exported for other frameworks using the serializing functionalities.

Additionally, the framework comes with classes for the traversal of Petri nets.

This document is a mix of programming tutorial and library documentation, where the features are demonstrated with some visualizations and minimal programming code examples.

The examples in this document have been tested against SEPIA release version 1.0.0, which can be found at https://github.com/iig-uni-freiburg/SEPIA. This document was last updated on July 29, 2015.

1.1 Library Dependencies

SEPIA builds upon the following tools. To use SEPIA, make sure all these libraries are included in the classpath.


1.2 Package Structure

The packages in de.uni.freiburg.iig.telematik.sepia are logically divided into the following sub-packages. Methods of data structure defining classes like the Petri nets are always defined in abstract classes with Java Generics to keep constraints between data types and to allow users to easily define their own sub-classes. By using Java Generics, the types of the places, transitions, flow relations, and markings can be set as needed. Their concrete subclasses like PTNet or IFNet only contain their constructors and don’t need to specify any data type over Java Generics. This way, clarity in the data structure and an intuitive depth of inheritance are ensured.
  • The petrinet package contains both abstract Petri net definitions and concrete subclasses for P/T-Nets, CPNs, and IF-Nets.
  • With the help of the container classes in the package graphic, Petri nets get complemented with graphical information, e.g. for the visualization in editors.
  • The traversal package offers Petri net traversal functionalities.
  • WWith the classes in the package serialize, Petri net objects can be exported in different file formats. This way Petri nets can also be edited in different editors.
  • Serialized Petri nets can be parsed with the help of classes in the parser package.
  • The util package contains helper classes for common Petri net properties/techniques such as reachability.
  • The package mg contains marking graph implementations for all supported Petri net types.
  • To replay traces on a Petri net, the package replay contains the appropriate classes.