• Project Home

  last modified November 2, 2007 by tbenita

Plone Workflow was a topic of the Plone Conference 2007 sprint.

The main goal was to know what to improve in workflows management in next Plone versions.

Several workflows tools have been analyzed, and here is the result :

There are 2 categories of workflows : state based workflows and activity based workflows.

State based workflow

A state based workflow applies to an object that have several states during its life.
The way to switch from a state to another state is to fire a transition.
Transitions can be fired manually or programmatically.

Activity based workflow

Activity based workflows are used to manage tasks in order to achieve a process.
An activity can split in several activities, join in a regrouping activity and so on.

Workflows in Plone, for what need ?


DCWorkflow is plone default workflow engine. It is a state based workflow.
  • This workflow engine satisfies most needs in plone.
  • It includes few concepts of an activity based workflow but remains a state based workflow.
  • Most of time DCWorkflow is sufficient to needs.
  • It is not sufficient when there are activities management needs
When we need more, there are other workflows engines :
  • AlphaFlow is an activity based engine. It is very complex and covers both activity and state concepts.
    It takes some time to learn and fully understand it.
  • ReFlow is a very simple activity based engine.
  • It respects the activity workflow specification and doesn't cover state based workflows
  • It isn't ported to Zope3/Five yet but as it is a python library and is light it can be easyly ported to the new architechture.

What to do then ?

The main conclusion was thet we need to separate activity based workflow and state based workflow. As they work in a very different way, it is an overkill to mix both in a single component.
AlphaFlow tends to mix both concepts and the result is a very complex implementation.
The conclusion is :
  • to improve DCWorkflow in the state based concept
  • port ReFlow to Zope3 and keep it very simple
  • have a machinery in order to create easyly interactions between both workflows
  • READ the existing documentation and RFC before coding anything, in order to avoid mistakes that have been done by others.


This working group aim at centralizing all propositions and writing PLIP.