Workflow Requirements

By Lars Pind on November 8, 2000.
By Khy Huang on April 13, 2001

OpenACS Documentation : Workflow : Workflow Requirements


I. Introduction

This document is the requirements document for the Workflow Package to be released with ACS 4.0.

II. Vision Statement

Many web sites define non-trivial processes for creating and manipulating classes of objects that represent some higher level concept, like a task to be performed, or a document or something.

In the ACS, we have several modules that define such processes, including:

These processes all have the following form: For example, the ticket tracker defines a process for handling each ticket. When a new ticket is inserted into the system, in the abstract, a new instance of this process is created. The ticket starts in the "open" state, or whatever, and can transition into various intermediate states before becoming "closed". As long as the ticket exists, the process instance connected to that ticket also exists. But, the process instance is a purely abstract object, it has no concrete representation outside the ticket itself.

In the current system, the rules for the state transitions are encoded in the logic of the pages that make up the module that defines both the object type and the process.

The motivation for the workflow module is to define a more abstract and reusable mechanism for describing these processes.

Glossary

Given this, and the above examples, we will use the following terminology:
Workflow
a formal definition of a type of process for handling all objects of a certain type, e.g. the process for dealing with a ticket in the ticket-tracker.
Case
a single instance of a workflow, operating on a single object of a given type. For example, a ticket is a case.
Task
a single atomic step in a workflow, for example the tasks "fix bug" and "acknowledge fix" in the ticket-tracker workflow.
Worklist
a list of tasks that have been assigned to a given user in the system. For example, the list of "fix"-tasks for the tickets you're assigned to fix, and the "approve fix"-tasks for the tickets you've opened and that have been fixed in the meantime.

III. System Overview

The workflow package consists of three separate parts.
  1. The engine is the subsystem that stores the workflow definitions and manages the workflow of individual cases. It should be defined in a way that is independent of the user interface parts of the system, so other modules don't have to buy into the workflow package UI in order to employ the engine.

  2. The end-user interface which will let the users see their work list and provide mechanisms for the user to give feedback on their actions to the system.

  3. The administrative user interface, which will let an administrator design and maintain workflow definitions and their application to different types of cases.

IV. Related Links

V. User-Scenarios

There are two classes of users for the Workflow package:
  1. Normal users use the workflow package to see what tasks they should perform and give feedback on their progress.
  2. Administrators define and maintain the workflow definitions that governs the tasks executed by normal users.
Annie Administrator is the administrator of a technical support knowledge library. For each item in the library, a moderator needs to figure out the subject and designate two qualified reviewers to review the item. Those reviewers will independently review the item, which may then have to go back to the original author for revision. After both reviewers are satisfied, it goes to the uber-categorization-meister, which will determine what categories and keywords to attach to it.

Annie Administrator uses the administrative user interface to formally define her workflow, and she defines that objects in the technical support knowledge library will be processed according to this workflow.

Tracy Techsupporter submits a new item to be included in the library. The workflow package (triggered by a hook in ACS Core) will start a new workflow case around the item. This in turn will trigger an email notification to Mike Moderator (and other moderators, if there is more than one person capable of performing the moderator task), informing him that he now has a new item on his work list. The email will contain the URLs for both his work list and the new item.

When Mike Moderator visits his work list, he'll see the list of tasks that he has reported to be currently working on, and a list of tasks he is capable of performing, ordered by priority. When he clicks on one of these tasks, he'll get to a page with information about the task to perform like this:

Task #: Task Name
Input (Required Items) Logic or Aids Output or Action
  • Skim the item
  • Assess the subject area
  • Pick two reviewers that are experienced in that area
Comment:
Journal
  • Case started on MM/DD/YYYY
Extreme Actions
Mike Moderator decides to work on this task and clicks the Start task button. The output pane now changes to look like this:
Output or Action
Comment:

Reviewer 1:

Reviewer 2:


At the same time, the task dissappears from the other moderators' work lists. Mike Moderator does his work and picks two reviewers, then hits "Finish task". This pushes the case to the next step, which will add two tasks, one for each reviewer, to review the item.

Randy Reviewer and Rick Reviewer will do essentially the same thing as Mike Moderator: They'll receive an email that there's stuff for them to review, go to the task page info page to see what to do, and do their jobs. Their "action" pane will look like this:

Output or Action
Comment:

Review:

Conclusion:


The reviewer chooses "Author must revise item", which causes a new task to be created for Tracy Techsupporter to revise her item. She does, and when she says she's finished, new tasks are created for the reviewers to re-review the item. This time, they're happy, and a task is created for Charlie Categorizer to categorize the item. He does, and the workflow ends with the item being included in the library.

VI.A Requirements: Engine and Model

There should be a well-defined mathematical model underlying the workflows. Why? Because that's the best way we can ensure that the workflow engine will have clear semantics. We will inevitably come to face a situation where we're not certain how to interpret and act on a given situation. The mathematical model will tell us.

Workflow

Tasks

Contexts

VI.B Requirements: API

Controlling the Workflow Process

Creating Workflows

VI.C Requirements: Web Interface for Interacting with the Workflow Process

VI.D Requirements: Web Interface for Defining Workflows

VII. Revision History

Document Revision # Action Taken, Notes When? By Whom?
2.3 Minor edits 04/13/2001 Khy Huang
2.0 Added information on permissions and versioning. 11/8/2000 Lars Pind
0.3 Reviewed, revised, and updated - conforms to requirements template. 8/22/2000 Bryan Quinn
0.2 Revised and updated 8/12/2000 Lars Pind
  Reviewed 8/11/2000 John Prevost, Mark Thomas, and Pete Su
0.1 Creation 8/10/2000 Lars Pind

lars@pinds.com
Last Modified: $Date: 2002/02/11 07:45:52 $