Last Modified 2015-11-07 by Ralf Lang

Workflow Module

Rough-cut task list for getting a minimal workflow module running for work order use:

Task Estimate User/Status
Create workflow application module, skeleton 1.0 NOT DONE
Create SQL scripts, add to lib/Driver.php, lib/Driver/sql.php for listing/updating/deleting work items 2.0 NOT DONE
Write or port workflow classes to PEAR or Horde 8.0 NOT DONE
Implement XPDL load of workflow objects 4.0 NOT DONE
Implement WorkItem::evaluateExpression() (only need strings, numbers, work item properties, and "==" operator to start) 2.0 NOT DONE
Implement user's work queue screen 2.0 NOT DONE
Implement driver-based application call mechanism 1.0 NOT DONE
Implement templatized e-mail send "application" 3.0 NOT DONE
Implement create ticket "application" 2.0 NOT DONE
Implement ulaform entry/update "application" 3.0 NOT DONE
Implement e-mail decision "application" 2.0 NOT DONE
Implement work item history logging mechanism 2.0 NOT DONE
Total 32.0

Workflow versus project management

Project Management

In project management tools, the project is represented by a directed graph of dependant tasks. There are no cycles or decision logic in a PERT chart, and necessarily so because project management requires finding the length of the timewise longest dependency path (the critical path) and resolving resource contention, and both of these would be extremely difficult if not impossible if we could not determine the project path ahead of time.

In project management, therefore, lots of effort is expended up front in the planning phase to remove these decision points. During the course of a project, a change requires refactoring the dependency graph (the PERT chart), which will affect the critical path and the project deadline. It can also cause reallocation of resources.


In workflow, workitems contain a number of steps. Workflow is built like a state machine, and has built in decision logic. A work item can cycle (e.g. do step A, then do step B, then check if passes Q.C., if not, go back to step B), has decision logic (if some test passes, do A, otherwise do B). In this model, we cannot predict the path.


  • I would like to be able to apply the Wiki:TheoryOfConstraints to the management of both workflow and projects
  • I would like unified resource management, or at least coopeartive resource management between projects and workflow.
  • I would like to be able to have workflow items as project tasks.


  • Resource management is difficult with workitems because the resources required by a workitem may not be predictable until the workitem is running.
  • Estimating the time a workitem will run is difficult because it may have a cycle.

Possible Solutions

  • Workflow definition would constrain the time a workitem can run (to counter cycles)
  • Scheduler would make sure all resources which might be required for a workitem are available (costly).
  • Scheduler could predict based on past performance (error-prone)
  • User could hint at which cases are more likely.