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.
- TOVAL, located at https://github.com/GerdHolz/TOVAL
- JAGAL (Java Graph Library), located at https://github.com/iig-uni-freiburg/JAGAL
- SEWOL (Security Workflow Framework), located at https://github.com/iig-uni-freiburg/SEWOL
- XML Schema Object Model (xsom), located at https://xsom.java.net/
- XML Datatypes Library (xsdlib)
- isorelax, located at http://iso-relax.sourceforge.net/
- hamcrest, located at https://github.com/hamcrest
- Multi Schema Validator (MSV), located at https://msv.java.net/
- relaxng-Datatype, located at https://sourceforge.net/projects/relaxng/
1.2 Package Structure
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.