Skip to content

Commit

Permalink
add serialization for conditional events
Browse files Browse the repository at this point in the history
  • Loading branch information
essweine committed Oct 11, 2023
1 parent 09ebf1b commit 996b18d
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
12 changes: 7 additions & 5 deletions SpiffWorkflow/bpmn/serializer/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
)
from SpiffWorkflow.bpmn.specs.event_definitions.message import MessageEventDefinition
from SpiffWorkflow.bpmn.specs.event_definitions.multiple import MultipleEventDefinition
from SpiffWorkflow.bpmn.specs.event_definitions.conditional import ConditionalEventDefinition

from .default.workflow import (
BpmnWorkflowConverter,
Expand All @@ -101,7 +102,7 @@
IOSpecificationConverter,
)
from .default.event_definition import (
TimerEventDefinitionConverter,
TimerConditionalEventDefinitionConverter,
ErrorEscalationEventDefinitionConverter,
MessageEventDefinitionConverter,
MultipleEventDefinitionConverter,
Expand Down Expand Up @@ -150,8 +151,9 @@
NoneEventDefinition: EventDefinitionConverter,
SignalEventDefinition: EventDefinitionConverter,
TerminateEventDefinition: EventDefinitionConverter,
TimeDateEventDefinition: TimerEventDefinitionConverter,
DurationTimerEventDefinition: TimerEventDefinitionConverter,
CycleTimerEventDefinition: TimerEventDefinitionConverter,
TimeDateEventDefinition: TimerConditionalEventDefinitionConverter,
DurationTimerEventDefinition: TimerConditionalEventDefinitionConverter,
CycleTimerEventDefinition: TimerConditionalEventDefinitionConverter,
ConditionalEventDefinition: TimerConditionalEventDefinitionConverter,
MultipleEventDefinition: MultipleEventDefinitionConverter,
}
}
15 changes: 7 additions & 8 deletions SpiffWorkflow/bpmn/serializer/default/event_definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,13 @@

from ..helpers.spec import EventDefinitionConverter

class TimerConditionalEventDefinitionConverter(EventDefinitionConverter):

def to_dict(self, event_definition):
dct = super().to_dict(event_definition)
dct['expression'] = event_definition.expression
return dct


class ErrorEscalationEventDefinitionConverter(EventDefinitionConverter):

Expand All @@ -41,14 +48,6 @@ def from_dict(self, dct):
return event_definition


class TimerEventDefinitionConverter(EventDefinitionConverter):

def to_dict(self, event_definition):
dct = super().to_dict(event_definition)
dct['expression'] = event_definition.expression
return dct


class MultipleEventDefinitionConverter(EventDefinitionConverter):

def to_dict(self, event_definition):
Expand Down
2 changes: 2 additions & 0 deletions tests/SpiffWorkflow/bpmn/events/ConditionalEventTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ def testIntermediateEvent(self):
self.workflow.do_engine_steps()
b = self.workflow.get_next_task(spec_name='task_b')
b.run()
self.save_restore()
event = self.workflow.get_next_task(spec_name='event_1')
# The event waits for task_a_done to become True
self.assertEqual(event.state, TaskState.WAITING)
a = self.workflow.get_next_task(spec_name='task_a')
a.data['task_a_done'] = True
a.run()
self.save_restore()
# Completion of A results in event being updated
self.assertEqual(event.state, TaskState.READY)
self.workflow.do_engine_steps()
Expand Down

0 comments on commit 996b18d

Please sign in to comment.