Workflow Module Workflow versus project management Project Management Workflow Goals Problems Possible Solutions Resources 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. Workflow 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. Goals I would like to be able to apply the Wiki:TheoryOfConstraints (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. Problems 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. Project/SimpleWorkflowApplicationSuePorter Resources PEAR Workflow project Word doc on a workflow engine for Kewl. Lots of nice references.