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. It will allow various operations such as categorisation and updating workflow-state, to be performed on selections of articles. The current discussion, including a list of initially supported operations is at OrganicDesign:Special talk:Workflow.

Installation
To install this extension, copy OrganicDesign:Extension:.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 OrganicDesign:Todo / OrganicDesign:Emoticon examples.

CSS Styles
The default format of a workflow is to transclude the article of the current state inside a container which shows the title of the current state linking to the template, and on each side of that a button for shifting the state one forward or backward in its sequence. The style of this container is determined by CSS rules which can be added to your wiki's main.css file, or to the MediaWiki:Common.css article. The ones we use which look render the container shown in the image above are as follows:

Change log

 * Version 0.0.12 (2007-10-27): Ready for use and testing.