Skip to content
Steve Doubleday edited this page Mar 14, 2015 · 49 revisions

Hierarchical Petri Nets & External Interfaces

Problems and limitations

As Petri nets become large and complex, they become difficult to maintain and test. It should be possible to break a problem into smaller problems, and model each smaller problem with a smaller Petri net. It should be possible to implement and test changes in a small Petri net in at least partial isolation. It should also be possible to test a small Petri net as part of testing a composite Petri net in which it participates.

The current system works in isolation. The state of a Petri net cannot be viewed or modified externally. A Petri net cannot be used to drive the behavior of some other system.

The current system depends on the user interface for execution of a Petri net. The separation of logic between the core and GUI projects introduces the potential for Petri net execution independent of the GUI.


The design described below, is largely based on work by researchers and graduate students at the International Computer Sciences Institute (ICSI), work which was itself based on PIPE v2. Credit for those ideas belongs to Srini Narayanan, Jerry Feldman, Leon Barrett, and Malte Schilling.

The initial implementation of the design is available through the hierarchical-nets branch of PIPECore. There is as yet no user interface support for the new functions, but a compatible version of PIPE is available here.

This initial implementation would not have been possible without the thorough refactoring of PIPE done last year by Sarah Tattersall.

Hierarchical Nets

External Interfaces

Execution outside GUI

Questions and next steps