eZ Components Workflow Engine
Business Process Management (BPM) and Workflow Management (WfM) are becoming more and more important when it comes to organizing, well, business processes. To help with the development and maintainance of software that supports these processes a new layer on top of the underlying programming language is needed. The Workflow components that I developed as part of my Diploma thesis ("Design and Implementation of an Activity-Based Workflow Engine") and that will be part of the eZ Components, an enterprise ready general purpose PHP components library by eZ Systems, provide this layer in the form of an abstract virtual machine for Graph-Oriented Programming (GOP) with PHP. It includes the building blocks (Workflow Patterns) for graph-based execution languages such as workflow definition languages as well as the functionality neccessary to administer, run, and monitor workflows. When I moved to Norway to work on my Diploma thesis ("Design and Implementation of an Activity-Based Workflow Engine"), the initial plan was to implement a complete workflow management system. After reading "Supporting Evolution in Workflow Definition Languages" and "A Workflow Architecture Supporting Compositional Object-Oriented Software Development" as part of my literature review, it became clear to me that writing reusable core components that can be used to build a workflow management system, for instance as part of an Enterprise Content Management System (ECMS) such as eZ Publish, makes more sense. Traditionally, Petri Nets are the underlying model that is used to implement workflow management systems. The concept of Graph-Oriented Programming, however, appealed to me more. Together with the Workflow Patterns that were introduced in "Expressiveness and Suitability of Languages for Control Flow Modelling in Workflows" the approach of Graph-Oriented Programming also forms the backend language of the workflow engine to which arbitrary workflow definition languages can be mapped. Some of the literature I read is bookmarked on del.icio.us. You can find the sourcecode for the three components that I developed as part of my thesis here: Workflow, WorkflowDatabaseTiein, and WorkflowEventLogTiein. The thesis paper itself will be posted once I am done writing it.