The ePNK is a platform for developing Petri net tools based on the PNML transfer
format (see ePNK Home Page).
Version 1.1.0 is now (as of June 13, 2016) available, which should work for Eclipse Indigo (3.7) and newer versions of Eclipse. It was tested on Eclipse Indigo (3.7), Mars (4.5) and Neon (4.6).
Version 1.1.0 of the ePNK runs under Eclipse Indigo and
all newer versions (it was tested for Eclipse Indigo, Mars and Neon).
The Eclipse update site for this version can be found
Unfortunately, the ePNK manual is not updated for version 1.1. For some additional
information, see the release notes for version 1.1
or a draft of a tutorial chapter for an extended version of the ePNK manual for version 1.1:
Draft Chapter 5 of ePNK manual for version 1.1:
Complete Tutorial: Net type and Application.
You will find some more information on how to install this version of the ePNK below.
The major changes from version 1.0.0 to 1.1.0 are fixes of many minor bugs, some
extended functionality, and a more efficient implementation of some features.
The most significant contribution is the extension of the ePNK application framework,
which makes it easier to present results to the end user and to allow the application
interacting with the end user. Moreover, the state of an ePNK application (the so-called net
annotations) can be saved now to a file and loaded again later.
Here is a list of the major changes:
- There was a bug in a menu (
PopupMenu) of GMF, which only started causing
proplems on Windows 10 systems. The ePNK used this menu. The ePNK version 1.1
has replace this GMF menu with an own implementation, so that the ePNK also works for
In order to properly work with the ePNK on Windows 10, you should use the ePNK version 1.1.
- The ePNK come with a utility class
FlatAccess, which allows to access
a net almost as if it did not have pages. Initializing this class is quite costly.
In order to reduce this cost, the ePNK 1.1 allows different functions,
applications, or other uses of the ePNK sharing the same
Therefore, instances of
FlatAccess should no longer be create by
each use using the constructor of
FlatAccess; instead an instance
FlatAccess should be obtained by the static method
The constructor is still available for compatibility reasons, but it is
FlatAccess also has a notification mechanism now for functions, applications
or other uses to be notfied when the underlying net changes.
- Version 1.1 of the ePNK comes a extended framework for developing ePNK applications.
These extensions make it easier to build ePNK applications with visual feedback to and
interaction with the end-user on top of the graphical representation in the graphical editor.
To this end, an ePNK application can be equipped with
new annotations (which existed already in version 1.0.0) and with presentation handlers
and action handlers. The presentation handlers define how annotations should be
graphically represented on top of the graphical representation in the graphical editor;
the action handlers define what should happen on user actions on these annotations (mouse
The details will evenutally be documented in an update version of the
ePNK manual. For now,
which is provided as a tutorial example with version 1.1, should give some ideas
of how to use the ePNK application framework.
- Version 1.1 of the ePNK allows the end-user to save the state of an application
(the underlying net annotations) in a file and to start an application from
this file later again. All the developer needs to do for an applictaion to be able
to save its state is to override the method
isSavable() to return
- Version 1.1 comes with a still experimental feature, which allows the end-user
to create all lables which are possible for the underlying object and
adjusting them equally distributed around the object. This feature is
available via a popup menu "ePNK -> Add Default Labels" on all
Petri net objects in the graphical editor.
- A last but important note does not concern the ePNK itself, but
some default settings of newer versions of EMF. In the
it says that, when generating the code for a Petri net type model, the
settings in the gen model after creating it would not
need to be changed. With newer versions of EMF, you would probably need to
change one property of the topmost element of the gen model: You must change
"Reflective Operations" in category "Model" to
false; if the
generated code shows errors, this might be the cause of the problem.
Below, it is explained step by step how to install version 1.1.0 of the ePNK on your computer..
For installing the ePNK version 1.1.0 on you computer, you first need to install Java and
Eclipse on your computer. It is recommended that you use Mars (4.5) or Neon (4.6). If you intend to use the ePNK as an
end-user only and you do not intend to develop your own extensions, any configuration of Eclipse
might do. In that case, you could use "Eclipse IDE for Java Developers" from
If you intend to develop your own extensions with and for the ePNK, it is recommended that you
install Eclipse with the "Eclipse Modeling Tools" extension, which you can obtain from http://www.eclipse.org/downloads/packages/eclipse-modeling-tools/lunar.
Once you have installed Eclipse on your computer, you can install the
ePNK extensions from the ePNK update site http://www2.compute.dtu.dk/~ekki/projects/ePNK/1.1/update/ directly from your Eclipse workbench.
To this end, start your version of Eclipse. Then, proceed as follows:
- In the Eclipse tool bar, select "Help" -> "Install New Software..."
- In the opened "Install" dialog, press the "Add..." button to add a new update site.
In the "Add Site" dialog, enter some name (e.g. "ePNK Update Site"), enter the
URL "http://www2.compute.dtu.dk/~ekki/projects/ePNK/1.1/update/" as location, and press
- Now, select the newly created ePNK update site in the still open "Install" dialog.
After some time, some ePNK items should pop up in the dialog. If the items are
not grouped into categories, make sure to check the check box "Group items by category".
You should select all features from the three categories: "ePNK Features",
"ePNK Experimental Features", and "HLPNG Simulator".
You do not need to install the features from the "ECNO" categories, unless you
would want to use the ECNO Tool (see ECNO Home Page for more information). You can always install that ECNO Tools
at a later point in time, if you need the ECNO Tool.
If you want to install the ECNO Tool only, it is enough to select all
features from the "ECNO Tool" and the "ECNO Examples" category (all
the ePNK features needed for installing the ECNO Tool will automatically
Make sure that the box "Contact all update sites during install to
find required software" is checked; this will make sure that all plugins from
Eclipse that the ePNK or ECNO Tools need, will be installed too (EMF, GMF, Xtext, etc.).
- Follow through the installation process (don't forget to accept the licence agreement).
If you get an error of the kind
Cannot complete the install because one or more required items
could not be found. ...
you have probably selected the wrong combination of features. In that case, go back
and select the right combination as explained above. An other possibility for an
error is that you have forgotten to tick the checkbox "Contact all update sites
during install to find required software".
Note that at some point you will be informed, that the features to be installed
are not signed — and you will be asked whether you want to continue anyway.
- After you made it successfully though all the dialogs, the ePNK and all other required
plugins will be installed; it is a good idea to restart Eclipse after that (Eclipse will
ask you to do that anyway).
- After a restart you might want to import some examples
ePNK-1.0.0-examples.zip of Petri nets with the
Eclipse import feature. If you are a first time user of the ePNK, you should have a look
into the ePNK manual, where in
particular Chapter 3, "Users' guide", will help you getting started with some examples.
Here is a brief overview of the available resources for the ePNK:
The ePNK: A generic PNML tool - Users' and Developers' Guide for Version 1.0.0.
IMM-Technical Report-2012-14, DTU Informatics, Kgs. Lyngby, Denmark, December 2012.
- Ekkart Kindler:
Chapter 5 of a draft for a revised and extended ePNK Manual for version 1.1:
Complete Tutorial: Net type and Application, July 2016
(will eventually replace the ePNK manual for version 1.0.0).
an Eclipse project with some PNML examples. These can
be imported to the Eclipse workspace via the Eclipse import mechanism. There are in particular
some examples which can be used with the simulator for high-level Petri nets, which is
deployed together with version 1.0.0.
- org.pnml.tools.epnk.pntypes.signalnets.1.0.1.zip: Contains the
source code of the two plug-in projects
which are deployed as part of the tutorial projects of
version 1.0.0 of the ePNK. Unfortunately, these two projects were
configured in such a way that their source code can not be imported
to the development workspace. Therefore, the source code is made
- Mindaugas Laganeckas:
A Simulator for high level Petri Nets: Model based design and implementation.
Master's thesis, Sepetmber 2012, Technical University of Denmark, DTU Informatics, Kgs. Lyngby, Denmark,
- There is also a SVN repository in which the ePNK is developed, which is maintained at DTU. People, who
would like to join the development team of the ePNK, could contact Ekkart Kindler. Once we reach
the critical mass, the repository will probably be moved to some open source collaboration platform
such as Source Forge. For just having a look, at the source code of some of the ePNK's projects, you
can use Eclipse's "Import as Source Project" feature (except for some few exceptions, the ePNK projects
start with org.pnml.tools.epnk). In particular, some of the tutorials might be worth a look.
- And of course, all the PNML resources mentioned at the ePNK home page
could be useful.