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 |
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.
Project/SimpleWorkflowApplicationSuePorter