shown in Figure 21.10. The interfaces that are defined by the standard
are divided into two packages, WorkflowModel and WfBase . The package
WfEngine contains the implementation of the standard interfaces; this
package makes use of the ProcessDefinition package that was developed in the
The standard JFlow interfaces have a well-defined structure (shown in
Figure 21.3) that constrains the development of the WfEngine package.
How do we implement the standard JFlow interfaces?
The problem is how closely we follow the structure of the JFlow interfaces
in the WfEngine package. If we want to have more freedom in the develop-
ment of the engine we can adopt a structure that is loosely related to that of
JFlow ; this solution requires a set of classes that provide an adaptation layer
between the engine and the standard interface. As a result, more freedom
requires more effort. On the other hand, if we adopt a structure that is
homologous to that of JFlow we are more constrained in the development but
we do not need any sort of adaptation. In addition, since the workflow
conceptual model is similar to the JFlow structure it is not difficult to
conform to both at once.
The structure of the WfEngine package together with the relationships to
the ProcessDefinition and WorkflowModel packages are sketched in Figure
21.11. Here only the main classes are shown. In fact there is an implemen-
tation class for each JFlow interface, plus the interfaces in the fBase package.
The Catalog class is a singleton that is the access point to select the
processes to enact. The process definitions are represented by the class
WfProcessMgrImpl that implements the WfProcessMgr interface defined in
the WorkflowModel package. A process that is in course of enactment is
Figure 21.10 Workflow package structure