Difference between revisions of "Workflow"

From Organic Design wiki
(mv images to interface)
m (links)
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{glossary}}
 
{{glossary}}
{{code|{{:wiki workflow summary}}}}__NOTOC__
+
Wiki-based workflow is a means of organising tasks into categories to be used as a [[w:Blackboard system|blackboard system]] (a.k.a [[w:Space-based architecture|space-based architecture]], [[w:Shared nothing architecture|shared nothing architecture]] or [[w:Tuple space|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:Blackboard system|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.''
 +
 
 +
In the wiki we define processes which can be carried out by Human roles or program functions. Processes can also be defined which contain other processes in sequences or which can work concurrently. Events can also be defined which lead to the creation of new process instances (jobs) which are categorised into the "todo lists" or "inboxes" of the various roles that they need the attention from. As roles or processes carry out their work, they update the state of the jobs which causes them to be recategorised, and thus the jobs flow between the roles until complete.
 +
 
 +
Another important related concept is that "everything is a channel", whether its trading, blogging, inboxes or schedules, they're all [[channel]]s which have relationships with other entities (such as "friends", subscribers, owners or contractors) which undergo change over time. Workflow is also based on this channels concept being "inbox-driven", but it also entails the aspect of [[process]]es. Rather than defining our own workflow system, we can use the [[Contract#Smart contract|smart contract]] system since it's already part of the open trading technology we'd be using (like [[Open Transactions]] on [http://bitmessage.org Bitmessage]) for trading, [[contract]]s and [[trust group]]s.
 +
 
 
== Workflow ==
 
== Workflow ==
 
A wiki-based organisation must operate upon a formal workflow system which allows us to define goals in terms of available roles and processes and monitor their progress and productivity. Also this will mean that all our threads of operations are already "packaged up" for out-sourcing to our established contacts or to other organisations like elance or rentacoder.
 
A wiki-based organisation must operate upon a formal workflow system which allows us to define goals in terms of available roles and processes and monitor their progress and productivity. Also this will mean that all our threads of operations are already "packaged up" for out-sourcing to our established contacts or to other organisations like elance or rentacoder.
Line 10: Line 20:
 
=== Instantiation ===
 
=== Instantiation ===
 
Instantiation of  workflow items is an important concept which should work more similarly to ''make install'' than to standard object instantiation. Furthermore these instantiated structures should be maintained over time on an appropriate communications schedule with the class or package source. Instantiation starts by creating a new workflow article exhibiting an appropriate template call and parameters. The new workflow is hooked into the overall reducing workflow structure in the appropriate context - eg. a scheduled task, or to be processed by a particular function/service, or perhaps in a Human role's workflow "inbox".
 
Instantiation of  workflow items is an important concept which should work more similarly to ''make install'' than to standard object instantiation. Furthermore these instantiated structures should be maintained over time on an appropriate communications schedule with the class or package source. Instantiation starts by creating a new workflow article exhibiting an appropriate template call and parameters. The new workflow is hooked into the overall reducing workflow structure in the appropriate context - eg. a scheduled task, or to be processed by a particular function/service, or perhaps in a Human role's workflow "inbox".
 
=== Tasks and roles ===
 
The category articles contain information about the tasks and policies, and these can also evolve through discussion of the perceived problems and needs as they arise. They also contain links to other information frequently needed in that context. Categories must also be defined for the roles and the workflow categories are subcategories of the roles.
 
 
=== Migration ===
 
If we start organising our various development and work using common categories and conventions, then it can be [[Migration Plan|migrated]] into the new interface more effectively. Also, since we are already teaching the [[w:wiki workflow|wiki workflow]] principles independently of the project's [[education]] or [[XmlWiki]], we should try and maintain a good clear working example of those methods ourselves.
 
*[[Organic Design Conventions]] has been started to help standardise various aspects of our content
 
 
We don't have [[Nodal Organisation]] in a functional state yet, but the current wiki paradigm uses categorisation very effectively as a means of workflow management. Here are some names of workflow categories from wikipedia to give some examples:
 
*''Articles actively undergoing construction''
 
*''Articles copied to Wikibooks in need of cleanup''
 
*''Articles for speedy deletion''
 
*''Articles needing Chinese script''
 
*''Articles that are way too long''
 
*''Articles with confusing statements''
 
*''Articles with broken links''
 
Obviously these are all oriented toward presentation and publication due to the nature of the Wikipedia project's work, but the general idea can apply easily to any manner of organisation. Its the general concept of creating an idea or collection of goals as an article and categorising it based on the roles and processes which are currently required to act on it. Each role which acts on it can then remove it from their category and add it to the next roles category who needs to work on it.
 
 
Its a lot like a Human-[[w:Tuple space|Tuple space]] where no communication is necessary between the ''processors'' of the work, and the items of work can be selected by roles randomly from the categories of work they feel like doing with no timing coordination needed.
 
  
 
== See also ==
 
== See also ==
*[[MW:Extension:Workflow|Workflow extension on MediaWiki]]
+
*[[Channel]]
*[[Semantic organisation]]
+
*[[Process]]
*[[Open-source business]]
+
*[[Platform]]
*[[Workflow]]
+
*[[System]]
 +
*[[MW:Flow Portal]] ''- a new large-scale workflow system for Wikimedia''
 
*[[Wikipedia:Workflow]]
 
*[[Wikipedia:Workflow]]
 
*[[w:wikipedia:Categorization projects (current)|Wikipedia's current wiki-workflow categories]]
 
*[[w:wikipedia:Categorization projects (current)|Wikipedia's current wiki-workflow categories]]
 
*[[w:categorization|Wikipedia's article on categoriation]]
 
*[[w:categorization|Wikipedia's article on categoriation]]
 
*[[w:Category:Wikipedia administration|Wikipedia administration]]
 
*[[w:Category:Wikipedia administration|Wikipedia administration]]
*[[News:Wikinews:Administrators|Wikinews:Administrators]]
 
*[[Nodal Organisation]]
 
*[[Nodal workflow]]
 
 
*[http://www.theserverside.com/tt/articles/article.tss?l=Workflow The state of workflow] ''- by Tom Baeyens''
 
*[http://www.theserverside.com/tt/articles/article.tss?l=Workflow The state of workflow] ''- by Tom Baeyens''
[[Category:Wiki organisation]]
+
*[[File:Roles and Classes in OO.pdf]]
 +
*[http://workflowy.com/ Workflowy.com]
 +
[[Category:Platform]]

Latest revision as of 14:41, 29 October 2013

Glossary.svg This page describes a concept which is part of our glossary

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.

In the wiki we define processes which can be carried out by Human roles or program functions. Processes can also be defined which contain other processes in sequences or which can work concurrently. Events can also be defined which lead to the creation of new process instances (jobs) which are categorised into the "todo lists" or "inboxes" of the various roles that they need the attention from. As roles or processes carry out their work, they update the state of the jobs which causes them to be recategorised, and thus the jobs flow between the roles until complete.

Another important related concept is that "everything is a channel", whether its trading, blogging, inboxes or schedules, they're all channels which have relationships with other entities (such as "friends", subscribers, owners or contractors) which undergo change over time. Workflow is also based on this channels concept being "inbox-driven", but it also entails the aspect of processes. Rather than defining our own workflow system, we can use the smart contract system since it's already part of the open trading technology we'd be using (like Open Transactions on Bitmessage) for trading, contracts and trust groups.

Workflow

A wiki-based organisation must operate upon a formal workflow system which allows us to define goals in terms of available roles and processes and monitor their progress and productivity. Also this will mean that all our threads of operations are already "packaged up" for out-sourcing to our established contacts or to other organisations like elance or rentacoder.

The workflow system should be implemented with both the semantic organisation and the nodal model in mind. I think the simplest way to ensure a smooth transition into our P2P vision (web4) is to begin modelling the workflow using the methods and tools we currently use - namely templates. The workflow special page can assist in using templates for a workflow system by rendering a tree interface to the workflow hierarchy. The nodal aspect is that the template hierarchy describes a multiplexed view of the workload which can therefore be processed nodally.

Another important aspect of the workflow system is to track the time spent on each job by the various roles, and to maintain assessments of their productivity (by gaining statistics on the completion time of various job classes). All this information can be maintained by defining and scheduling reports (similar to how we'd implement Selenium for interface testing). Reports and tests are just processes which run regularly storing the result in a particular article dedicated to that test). The "report" namespace would probably be appropriate since they'd contained a specific class of information.

Instantiation

Instantiation of workflow items is an important concept which should work more similarly to make install than to standard object instantiation. Furthermore these instantiated structures should be maintained over time on an appropriate communications schedule with the class or package source. Instantiation starts by creating a new workflow article exhibiting an appropriate template call and parameters. The new workflow is hooked into the overall reducing workflow structure in the appropriate context - eg. a scheduled task, or to be processed by a particular function/service, or perhaps in a Human role's workflow "inbox".

See also