Business Process Management
===========================
($Id$)
We start with the definition of a simple process:
startNode --> n01 --> endNode
>>> from cybertools.process.definition import ProcessDefinition, Node, Transition
>>> process = ProcessDefinition()
>>> n01 = Node()
>>> process.startNode.addTransition(n01)
>>> n01.addTransition(process.endNode)
Now let's execute the process:
>>> from cybertools.process.execution import ProcessInstance
>>> instance = ProcessInstance(process)
>>> execution = instance.execute()
As there aren't any interactions with the outside world in our process we
don't see anything. But we can check if the process instance has reached the
process' end node:
>>> execution.currentNode is process.endNode
True
So let's now associate an action handler with the process' nodes:
>>> from zope.component import provideAdapter, adapts
>>> from zope.interface import implements
>>> from cybertools.process.interfaces import INode, IActionHandler
>>> class DummyHandler(object):
... implements(IActionHandler)
... adapts(INode)
... def __init__(self, context): pass
... def handle(self, execution):
... print 'working.'
>>> provideAdapter(DummyHandler)
>>> execution = instance.execute()
working.
>>> execution.currentNode is process.startNode
True
>>> execution.trigger()
working.
>>> execution.currentNode is n01
True
>>> execution.trigger()
working.
>>> execution.currentNode is process.endNode
True