Extension:Workflow, Dunkley 2009

Wiki-based workflow
Wiki-based workflow is a means of organising tasks into categories to be used as a blackboard system (a.k.a space-based architecture, shared nothing architecture or Tuple space). This is achieved in the wiki by establishing the workflow methodology as a set of best practices defining all aspects of the way the wiki is to be used, and an established resource of structured content to support that way of working.

Here is an example taken from the Wikipedia article which describes the system in terms of Human roles working together on a project.
 * A group of specialists are seated in a room with a large blackboard. The specialists are working as a team to brainstorm a solution to a problem, using the blackboard as the workplace for cooperatively developing the solution. The session begins when the problem specifications are written onto the blackboard. The specialists all watch the blackboard, looking for an opportunity to apply their expertise to the developing solution. When someone writes something on the blackboard that allows another specialist to apply her expertise, she records her contribution on the blackboard, hopefully enabling other specialists to then apply their expertise. This process of adding contributions to the blackboard continues until the problem has been solved.


 * A blackboard system enables this flexible brainstorming style of interaction between diverse software specialists. Each of these specialists scans the changes to the blackboard, and posts an updated partial solution based on the state of the blackboard whenever its own internal conditions for doing so are met. These partial solutions cause other knowledge sources to update their portions of the solution on the blackboard until eventually an answer is found. In this fashion, the specialists work together to solve the problem.

The Workflow extension
The idea of this extension is to have an automated mechanism behind being able to move articles through categories contained within a workflow without the need to have to manually edit and change the categorization accordingly. Additionally the number of articles within each category in the workflow should be identified so people can instantly recognise where potential bottlenecks are occuring for any instance of a workflow. To do this a parser function called   has been created which allows the article to become part of a specified sequence of "states" which can be quickly cycled through without needing to edit the containing article. Client side Javascript is used to update the parser function automatically and log the event in the Special:RecentChanges once a new state has been selected for more than a split second. Articles which are part of one or more such sequences (workflows) will exhibit extended catlinks information to show their current position within each workflow.

The extension also creates a special page called Special:Workflow which is still in development.

Installation
To install this extension, copy OrganicDesign:Extension:Workflow.php and save into your extensions directory or in a subdirectory thereof. The file then needs to be included in your LocalSettings.php file as usual.

Usage
For examples of this extension see Workflow example. The general syntax is as follows:

Each of the titles in the list should have a corresponding article in the Category, if they're missing, they'll show up as red links in the catlinks information so they can easily be created.

Watching workflow categories
The work items are being passed around through workflow categories as work is done and attention is required from different roles. The roles need to be able to watch the categories containing items requiring attention from them. For this reason we developed the CategoryWatch extension which allows roles to be notified by email when articles move in or out of their workflow categories.

Using workflows inside templates
Workflows can be put inside templates so that all articles that transclude the template exhibit the workflow automatically. This can be done without any changes to the syntax, but in some cases it may be more appropriate for the workflow state to be adjusted via a parameter in the template call rather than by directly updating the category links in the page. This can be done by adding template and parameter parameters as follows:

In this example, when the workflow state is changed, no category links will be added or removed, instead the state parameter will be changed in the Emoticon template call in the article.

CSS Styles
The style of the workflow container is determined by CSS rules which can be added to your wiki's MediaWiki:Common.css article. The ones we use which render the container shown in the image above are as follows:

Todo

 * Test new 1.0.0 code more thoroughly
 * Split code into i18n etc
 * Move into SVN

Change log

 * Version 1.0.0 (2008-12-01): Simplified usage, dropped namespace and allow to work in templates
 * Version 0.0.12 (2007-10-27): Ready for use and testing.