eZ Component: Workflow, Design
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Author: Sebastian Bergmann
:Revision: $Revision$
:Date: $Date$

Workflow Model
==============

Activities and Transitions
--------------------------

The workflow model is activity-based [FG02]. The activities that are to be
completed throughout the workflow and the transitions between them are mapped to
the nodes and edges of a directed graph. This choice was made to faciliate the
application of the Graph-Oriented Programming paradigm for the implementation.
Using a directed graph as the foundation for the workflow model makes it
possible to define the syntax of the workflow description language using the
formalism of graph grammars [DQZ01].

Graph Traversal and Execution Strategy
--------------------------------------

The execution of a workflow starts with the graph's only Start node. A graph may
have one or more End nodes that explicitly terminate the workflow execution.

After a node has finished executing, it can activate one or more of its possible
outgoing nodes. Activation adds a node to a set of nodes that are waiting for
execution. During each execution step, a node from this set is executed. When
the execution of a node has been completed, the node is removed from the set.

The workflow execution is implicitly terminated when no nodes are activated
and no more nodes can be activated.

State and Workflow Variables
----------------------------

The workflow model supports state through the concept of workflow variables.
Such a variable can either be requested as user input (from an Input node) or be
set and manipulated through the VariableSet, VariableAdd, VariableSub,
VariableMul, VariableDiv, VariableIncrement, and VariableDecrement nodes.

While a VariableSet node may set the value of a workflow variable to any type
that is supported by PHP, the other variable manipulation nodes only operate on
numeric values.

Variables are bound to the scope of the thread in which they were defined. This
allows parallel threads of execution to use variables of the same name without
side effects.

When the execution of a workflow reaches an Input node (see above), the
execution is suspended until such time when the user input has been provided and
the execution can be resumed.

Control Flow
------------

The control flow semantics of the workflow model draws upon the workflow
patterns from [BK03]. The Sequence, Parallel Split, Synchronization, Exclusive
Choice, Simple Merge, Multi-Choice, Synchronizing Merge, and Discriminator
workflow patterns are all directly supported by the workflow model.

Exclusive Choice and Multi-Choice nodes have branching conditions attached to
them that operate on workflow variables to make their control flow decisions.

Action Nodes and Service Objects
--------------------------------

So far we have only discussed nodes that control the flow and that can
manipulate workflow variables. We are still missing a type of nodes that
actually performs an activity. This is where the Action node comes into play.

When the execution of a workflow reaches an Action node, the business logic of
the attached service object is executed. Service Objects live in the domain of
the application into which the workflow engine is embedded. They have read and
write access to the workflow variables to interact with the rest of the
workflow.

Sub-Workflows
-------------

The workflow model supports sub-workflows to break down a complex workflow into
parts that are easier to conceive, understand, maintain, and which can be
reused.

A sub-workflow is started when the respective Sub-Workflow node is reached
during workflow execution. The execution of the parent workflow is suspended
while the sub-workflow is executing. It is resumed once the execution of the
sub-workflow has ended.


Software Design
===============

Architecture
------------

The workflow engine been designed and implemented as three loosely coupled
components. The Workflow component provides an object-oriented framework to
define workflows and an execution engine to execute them.
The WorkflowDatabaseTiein and WorkflowEventLogTiein components tie the Database
and EventLog components into the main Workflow component for persistence
and monitoring, respectively.

A workflow can be defined programmatically by creating and connecting objects
that represent control flow constructs. The classes for these objects are
provided by the Workflow Definition API. This API also provides the
functionality to save workflow definitions (ie. object graphs) to and load
workflow definitions from a data storage. Two data storage backends have been
implemented, one for relational database systems and another for XML files.
Through the Workflow Execution API the execution of a workflow definition can be
started (and resumed). The figure below shows the conceptual architecture for
the workflow engine.

    +---------+     +---------+  +------------------------+
    |   GUI   | <=> |   XML   |  |     Mail, SOAP, ...    |
    +---------+     +---------+  +------------------------+
         /\                                  /\
         ||                                  ||
         \/                                  \/
    +-------------------------+  +------------------------+
    | Workflow Definition API |  | Workflow Execution API |
    +-------------------------+  +------------------------+
                /\                           /\
                ||                           ||
                ||                           \/
                ||               +------------------------+
                ||               |      Workflow Core     |
                ||               +------------------------+
                ||                           /\
                ||                           ||
                \/                           \/
    +-----------------------------------------------------+
    |                     Data Storage                    |
    +-----------------------------------------------------+

The idea that a workflow system should be comprised of loosely coupled
components is discussed, for instance, in [DAM01,DG95,PM99]. Manolescu
states that

  "an object-oriented workflow architecture must provide abstractions
  that enable software developers to define and enact how the work flows through
  the system" [DAM01].

Like Manolescu's Micro-Workflow architecture, the Workflow components
encapsulate workflow features in separate components following the
Microkernel pattern which

  "applies to software systems that must be able to adapt to changing
  system requirements. It separates a minimal functional core from extended
  functionality and customer-specific parts. The microkernel also serves as a
  socket for plugging in these extensions and coordinating their
  collaboration" [FB96].

The minimalistic core of the Workflow component is provides basic workflow
functionality:

- The Workflow Definition API implements an activity-based workflow model and
  provides the abstractions required to build workflows.
- The Workflow Execution API implements the functionality to execute workflows.

On top of these core components other components, for instance for persistence
(suspending and resuming workflow execution), monitoring (status of running
workflows), history (history of executed workflows), and worklist management
(human-computer interface), can be implemented. Each of these components
encapsulates a design decision and can be customized or replaced.


Workflow Virtual Machine
------------------------

Given the fact that standardization efforts, e.g. XPDL [WfMC05] proposed by the
Workflow Management Coalition, have essentially failed to gain universal
acceptance [WA04], the problem of developing a workflow system that supports
changes in the workflow description language needs to be addressed.

Fernandes et. al. propose to

  "split the workflow system into two layers: (1) a layer implementing a
  Workflow Virtual Machine, which is responsible for most of the workflow system
  activities; and (2) a layer where the different workflow description languages
  are handled, which is responsible for making the mapping between each workflow
  description language and the Workflow Virtual Machine" [SF04].

The Workflow component's Workflow Execution API implements such a workflow
virtual machine and isolates the executing part of a workflow management system,
the backend, from the parts that users interact with, the frontend. This
isolation allows for the definition of a backend language to describe exactly
the workflows that are supported by the executer and its underlying workflow
model. This backend language is not the workflow description language users use
to define their workflows. They use frontend languages that can be mapped to the
system's backend language.


Graph-Oriented Programming
--------------------------

Graph-Oriented Programming [JBOSS] implements the graphical representation and
the wait states of a process language in an object-oriented programming
language. The former can be achieved by providing a framework of node classes.
Objects of these classes represent the nodes in the process graph, relations
between these objects represent the edges. Such an object graph can then be
traversed for execution. These executions need to be persistable, for instance
in a relational database, to support the wait states.

The aforementioned node classes implement the Command design pattern [GoF94] and
encapsulate an action and its parameters.

The executing part of the workflow engine is implemented in an Execution class.
An object of this class represents a workflow in execution. The execution object
has a reference to the current node. When the execution of a workflow is
started, a new execution object is created and the current node is set to the
workflow's start node. The execute() method that is to be provided by the node
classes is not only responsible for executing the node's action, but also for
propagating the execution: a node can pass the execution that arrived in the
node to one of its leaving transitions to the next node.

Like Fowler in [MF05], the authors of the JBoss jBPM manual [JBOSS] acknowledge
the fact that current software development relies more and more on domain
specific languages. They see Graph-Oriented Programming as a means to implement
domain specific languages that describe how graphs can be defined and executed
on top of an object-oriented programming language.

In this context, a process language (like a workflow description language) is
nothing more than a set of Node classes. The semantics of each node are defined
by the implementation of the execute() method in the respective node class. This
language can be used as the backend language of a Workflow Virtual Machine. In
this lanugage, the workflow is represented as a graph of command objects.

One of the advantages of using a domain specific language that Fowler gives in
[MF05 regards the involvement of lay programmers: domain experts who are not
professional programmers but program in domain specific languages as part of the
development effort. In essence this means that a software system that provides a
domain specific language can be customized and extended without knowledge of the
underlying programming language that was used to implement it.


Summary
-------

The core of the workflow engine is a virtual machine that executes workflows
represented through object graphs. These object graphs can be created
programmatically through the software component's Workflow Definition API.
Alternatively, a workflow definition can be loaded from an XML file. Object
graph and XML file are two different representations of a workflow definition
that uses the so-called backend language of the workflow engine's core.
Arbitrary frontend languages such as the XML Process Definition Language (XPDL)
[WfMC05], for instance, can be mapped to the workflow engine's backend language.


Bibliography
============

- [BK03] Bartosz Kiepuszewski.
  Expressiveness and Suitability of Languages for Control Flow Modelling in Workflows.
  PhD Thesis, Faculty of Information Technology, Queensland University of Technology, Australia, 2003.

- [DAM01 Dragos-Anton Manolescu.
  Micro-Workflow: A Workflow Architecture Supporting Compositional Object-Oriented Software Development.
  PhD Thesis, Department of Computer Science, University of Illinois at Urbana-Champaign, USA, 2001.

- [DG95] Dimitrios Georgakopoulos and Mark F. Hornick and Amit P. Sheth.
  An Overview of Workflow Management: From Process Modeling to Workflow Automation Infrastructure.
  In: Distributed and Parallel Databases, Volume 3, Number 2, Pages 119--153, 1995.

- [DQZ01] Da-Qian Zhang and Kang Zhang and Jiannong Cao.
  A Context-Sensitive Graph Grammar Formalism for the Specification of Visual Languages.
  In: The Computer Journal, Volume 33, Number 3, Pages 186--200, 2001.

- [FB96] Frank Buschmann and Regine Meunier and Hans Rohnert and Peter Sommerlad and Michael Stahl.
  Pattern-Oriented Software Architecture -- A System of Patterns.
  John Wiley \& Sons, 1996.

- [FG02] Florent Guillaume.
  Trying to unify Entity-based and Activity-based workflows.
  http://wiki.zope.org/zope3/TryingToUnifiyWorkflowConcepts

- [GoF94] Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides.
  Design Patterns: Elements of Reusable Object-Oriented Software.
  Addison-Wesley, 1994.

- [JBOSS] The JBoss Project.
  JBoss jBPM: Workflow and BPM Made Practical.
  http://docs.jboss.com/jbpm/v3/userguide/graphorientedprogramming.html

- [MF05] Martin Fowler.
  Language Workbenches: The Killer-App for Domain Specific Languages?
  June, 2005.
  http://martinfowler.com/articles/languageWorkbench.html

- [PM99] Peter Muth and Jeanine Weisenfels and Michael Gillmann and Gerhard Weikum.
  Integrating Light-Weight Workflow Management Systems within Existing Business Environments.
  In: Proceedings of the 15th International Conference on Data Engineering, March 1999, Sydney, Australia.

- [SF04] Sérgio Fernandes and João Cachopo and António Rito-Silva.
  Supporting Evolution in Workflow Definition Languages.
  In: Proceedings of the 20th Conference on Current Trends in Theory and Practice of Computer Science (SOFSEM 2004), Springer-Verlag, 2004.

- [WA04] W. M. P. van der Aalst and L. Aldred and M. Dumas and A. H. M. ter Hofstede.
  Design and Implementation of the YAWL System.
  In: Proceedings of the 16th International Conference on Advanced Information Systems Engineering (CAiSE 2004), June 2004, Riga, Latvia.

- [WfMC05] Workflow Management Coalition.
  Workflow Process Definition Interface -- XML Process Definition Language (XPDL).
  Document Number WFMC-TC-1025, 2005.
