Process Editor Design

Note: This page provides an ancient view (2007) of the design! Anything is still valid, but way enhanced today.

Design Overview

The Process Editor has been built with an extensible architecture in mind. The architecture should not, however, tangle the usability for people seeking a light-weigth process editor component. You can simply use the provided models (incl. BPMN, EPCs, Petri nets) or implement your own.

Process Editor Serialization Schema

The ProcessEditor uses a simple, key/value-based XML schema for serialization. The XML schema reference is embedded in the schema instances (i.e. the ProcessEditor files), but can also be found at

Process Editor Class Structure

Process Editor class structure

The main class is the ProcessEditor that extends JPanel. Hence, you can use it everywhere a JPanel can be placed. The ProcessEditor supports built-in editing, layouting, and XML persistence capabilities that can be disabled if not required.

The ProcessEditor is feed with a model to display, that must be of the type ProcessModel. Both classes, the ProcessEditor and the ProcessModel have Listener interfaces to capture changes to the model (e.g. adding/removing nodes) or to the editor (e.g. selecting nodes).

The ProcessModel holds a simple graph structure, consisting of the types ProcessNode and ProcessEdge, that represent nodes and directed edges of a graph. ProcessNode and ProcessEdge are abstract, meaning they can only be used in sub-classed versions (like BPMN). Both classes already provide methods to serialize their properties to XML, so that sub-classes can rely on this feature.

The static class ProcessUtil provides methods for drawing the elements of the ProcessModel.

The static class ProcessHelper provides methods for parsing and layouting process models.

Petri nets Class Structure

Petri nets class structure

This package implements classes for Workflow nets.

BPMN Class Structure

BPMN class structure

This package implements classes for BPMN.