Skip to content

Commit 996b18d

Browse files
committed
add serialization for conditional events
1 parent 09ebf1b commit 996b18d

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

SpiffWorkflow/bpmn/serializer/config.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
)
7878
from SpiffWorkflow.bpmn.specs.event_definitions.message import MessageEventDefinition
7979
from SpiffWorkflow.bpmn.specs.event_definitions.multiple import MultipleEventDefinition
80+
from SpiffWorkflow.bpmn.specs.event_definitions.conditional import ConditionalEventDefinition
8081

8182
from .default.workflow import (
8283
BpmnWorkflowConverter,
@@ -101,7 +102,7 @@
101102
IOSpecificationConverter,
102103
)
103104
from .default.event_definition import (
104-
TimerEventDefinitionConverter,
105+
TimerConditionalEventDefinitionConverter,
105106
ErrorEscalationEventDefinitionConverter,
106107
MessageEventDefinitionConverter,
107108
MultipleEventDefinitionConverter,
@@ -150,8 +151,9 @@
150151
NoneEventDefinition: EventDefinitionConverter,
151152
SignalEventDefinition: EventDefinitionConverter,
152153
TerminateEventDefinition: EventDefinitionConverter,
153-
TimeDateEventDefinition: TimerEventDefinitionConverter,
154-
DurationTimerEventDefinition: TimerEventDefinitionConverter,
155-
CycleTimerEventDefinition: TimerEventDefinitionConverter,
154+
TimeDateEventDefinition: TimerConditionalEventDefinitionConverter,
155+
DurationTimerEventDefinition: TimerConditionalEventDefinitionConverter,
156+
CycleTimerEventDefinition: TimerConditionalEventDefinitionConverter,
157+
ConditionalEventDefinition: TimerConditionalEventDefinitionConverter,
156158
MultipleEventDefinition: MultipleEventDefinitionConverter,
157-
}
159+
}

SpiffWorkflow/bpmn/serializer/default/event_definition.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@
1919

2020
from ..helpers.spec import EventDefinitionConverter
2121

22+
class TimerConditionalEventDefinitionConverter(EventDefinitionConverter):
23+
24+
def to_dict(self, event_definition):
25+
dct = super().to_dict(event_definition)
26+
dct['expression'] = event_definition.expression
27+
return dct
28+
2229

2330
class ErrorEscalationEventDefinitionConverter(EventDefinitionConverter):
2431

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

4350

44-
class TimerEventDefinitionConverter(EventDefinitionConverter):
45-
46-
def to_dict(self, event_definition):
47-
dct = super().to_dict(event_definition)
48-
dct['expression'] = event_definition.expression
49-
return dct
50-
51-
5251
class MultipleEventDefinitionConverter(EventDefinitionConverter):
5352

5453
def to_dict(self, event_definition):

tests/SpiffWorkflow/bpmn/events/ConditionalEventTest.py

+2
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ def testIntermediateEvent(self):
1313
self.workflow.do_engine_steps()
1414
b = self.workflow.get_next_task(spec_name='task_b')
1515
b.run()
16+
self.save_restore()
1617
event = self.workflow.get_next_task(spec_name='event_1')
1718
# The event waits for task_a_done to become True
1819
self.assertEqual(event.state, TaskState.WAITING)
1920
a = self.workflow.get_next_task(spec_name='task_a')
2021
a.data['task_a_done'] = True
2122
a.run()
23+
self.save_restore()
2224
# Completion of A results in event being updated
2325
self.assertEqual(event.state, TaskState.READY)
2426
self.workflow.do_engine_steps()

0 commit comments

Comments
 (0)