[Zope-CMF] Zope 3 events from workflow

Martin Aspeli optilude at gmx.net
Tue Dec 26 10:43:26 EST 2006


Hi guys,

Am I right in thinking that DCWorkflow does not send any Zope 3 events? 
I'm not terribly familiar with that code, but some grepping suggests so.

Do you agree this would be useful? (I've got a pretty strong need for it 
  for Plone 3, i.e. CMF 2.1 - I'm sure we can work around it in Plone, 
but I'd rather do it properly)

 From what I can tell, something like this would work:

from zope.component.interfaces import IObjectEvent
from zope.schema import TextLine

class IWorkflowEvent(IObjectEvent):
     """A workflow related event
     """

     wf_name = TextLine(title=u"The name of the workflow this event is 
part of")

     transition = TextLine(title=u"The name of the transition taking place")

     state_before = TextLine(title=u"The object's state before the 
transition")

     state_after = TextLine(title=u"The object's state after the 
transition")

class IBeforeTransitionEvent(IWorkflowEvent):
     """A transition is about to take place
     """

class IAfterTransitionEvent(IWorkflowEvent):
     """A transition has just taken place
     """

...

from zope.component import ObjectEvent
from interfaces import IBeforeTransitionEvent, IAfterTransitionEvent

class WorkflowEvent(ObjectEvent):

     def __init__(self, object, wf_name, transition, state_before, 
state_after):
         self.object = object
         self.wf_name = wf_name
         self.transition = transition
         self.state_before = state_before
         self.state_after = state_after

class BeforeTransitionEvent(WorkflowEvent):
     implements(IBeforeTransitionEvent)

class AfterTransitionEvent(WorkflowEvent):
     implements(IAfterTransitionEvent)

...

I'm not quite sure where the best place to execute the event is. One 
option may be DCWorkflow/DCWorkflow.py, in notifyBefore() and 
notifySuccess(). Here, though, I get a bit confused about how to 
construct the wf_name and state_before/state_after parameters. I guess 
they're not always needed, but they seem like they'd be useful to most 
event handlers.

Would appreciate some suggestions or help to get this in, if you agree 
it's a good idea (note, I don't have commit privs to CMF at this point).

Martin



More information about the Zope-CMF mailing list