diff --git a/process.py b/process.py index 5707324..1d78560 100644 --- a/process.py +++ b/process.py @@ -26,9 +26,28 @@ from zope.wfmc import interfaces +def always_true(data): + return True + +class TransitionDefinition(object): + + interface.implements(interfaces.ITransitionDefinition) + + def __init__(self, from_, to, condition=always_true, id=None): + self.id = id + self.from_ = from_ + self.to = to + self.condition = condition + + def __repr__(self): + return "TransitionDefinition(from=%r, to=%r)" %(self.from_, self.to) + + class ProcessDefinition(object): interface.implements(interfaces.IProcessDefinition) + + TransitionDefinitionFactory = TransitionDefinition def __init__(self, id, integration=None): self.id = id @@ -99,7 +118,7 @@ def _start(self): raise interfaces.InvalidProcessDefinition( "No start activities") - return TransitionDefinition(None, start[0][0]) + return self.TransitionDefinitionFactory(None, start[0][0]) _start = zope.cachedescriptors.property.Lazy(_start) @@ -167,23 +186,6 @@ def __repr__(self): return "" %self.__name__ -def always_true(data): - return True - -class TransitionDefinition(object): - - interface.implements(interfaces.ITransitionDefinition) - - def __init__(self, from_, to, condition=always_true, id=None): - self.id = id - self.from_ = from_ - self.to = to - self.condition = condition - - def __repr__(self): - return "TransitionDefinition(from=%r, to=%r)" %(self.from_, self.to) - - class Process(persistent.Persistent): interface.implements(interfaces.IProcess) diff --git a/xpdl.py b/xpdl.py index e2eeeb0..1f3546c 100644 --- a/xpdl.py +++ b/xpdl.py @@ -65,6 +65,12 @@ class XPDLHandler(xml.sax.handler.ContentHandler): start_handlers = {} end_handlers = {} text = u'' + + ProcessDefinitionFactory = zope.wfmc.process.ProcessDefinition + ParticipantFactory = zope.wfmc.process.Participant + ApplicationFactory = zope.wfmc.process.Application + ActivityDefinitionFactory = zope.wfmc.process.ActivityDefinition + TransitionDefinitionFactory = zope.wfmc.process.TransitionDefinition def __init__(self, package): self.package = package @@ -120,7 +126,7 @@ def Package(self, attrs): def WorkflowProcess(self, attrs): id = attrs[(None, 'Id')] - process = zope.wfmc.process.ProcessDefinition(id) + process = self.ProcessDefinitionFactory(id) process.__name__ = attrs.get((None, 'Name')) # Copy package data: @@ -147,14 +153,14 @@ def FormalParameter(self, attrs): def Participant(self, attrs): id = attrs[(None, 'Id')] name = attrs.get((None, 'Name')) - participant = zope.wfmc.process.Participant(name) + participant = self.ParticipantFactory(name) self.stack[-1].defineParticipants(**{str(id): participant}) start_handlers[(xpdlns, 'Participant')] = Participant def Application(self, attrs): id = attrs[(None, 'Id')] name = attrs.get((None, 'Name')) - app = zope.wfmc.process.Application() + app = self.ApplicationFactory() app.id = id if name: app.__name__ = name @@ -180,7 +186,7 @@ def ActivitySet(self, attrs): def Activity(self, attrs): id = attrs[(None, 'Id')] name = attrs.get((None, 'Name')) - activity = zope.wfmc.process.ActivityDefinition(name) + activity = self.ActivityDefinitionFactory(name) activity.id = id self.stack[-1].defineActivities(**{str(id): activity}) return activity @@ -228,7 +234,7 @@ def Transition(self, attrs): name = attrs.get((None, 'Name')) from_ = attrs.get((None, 'From')) to = attrs.get((None, 'To')) - transition = zope.wfmc.process.TransitionDefinition(from_, to) + transition = self.TransitionDefinitionFactory(from_, to) transition.id = id return transition start_handlers[(xpdlns, 'Transition')] = Transition @@ -239,7 +245,7 @@ def transition(self, transition): def condition(self, ignored): assert isinstance(self.stack[-1], - zope.wfmc.process.TransitionDefinition) + self.TransitionDefinitionFactory) text = self.text self.stack[-1].condition = TextCondition("(%s)" % text)