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 http://frapu.net/xsd/ProcessEditor.xsd.
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
This package implements classes for Workflow nets.
BPMN Class Structure
This package implements classes for BPMN.