62 lines
1.9 KiB
XML
62 lines
1.9 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<process-definition name="flow" revision="1.0">
|
|
<description>Pattern 33 (Generalized AND-Join)</description>
|
|
|
|
<start-task>
|
|
<successor>first</successor>
|
|
</start-task>
|
|
|
|
<!-- Implicitly create 3 branches. -->
|
|
<!-- FIXME: Currently, there is no way to trigger a task twice
|
|
without (implicitly) creating an additional branch. As such,
|
|
this pattern is not fully tested in this way, because at least
|
|
one of the branches should be triggered twice. However, in theory
|
|
it should already work. -->
|
|
<task name="first">
|
|
<successor>task_e1</successor>
|
|
<successor>task_e2</successor>
|
|
<successor>task_e3</successor>
|
|
</task>
|
|
|
|
<!-- Conditional branches. -->
|
|
<task name="task_e1">
|
|
<successor>task_f1</successor>
|
|
</task>
|
|
<task name="task_e2">
|
|
<successor>task_f2</successor>
|
|
</task>
|
|
<task name="task_e3">
|
|
<successor>task_f3</successor>
|
|
</task>
|
|
|
|
<!-- Conditional branches. -->
|
|
<task name="task_f1">
|
|
<successor>struct_synch_merge_1</successor>
|
|
</task>
|
|
<task name="task_f2">
|
|
<successor>struct_synch_merge_1</successor>
|
|
</task>
|
|
<task name="task_f3">
|
|
<successor>struct_synch_merge_1</successor>
|
|
</task>
|
|
|
|
<!-- Structured synchronizing merge. -->
|
|
<join name="struct_synch_merge_1" context="first">
|
|
<successor>excl_choice_1</successor>
|
|
</join>
|
|
|
|
<!-- Loop back to the start (once). -->
|
|
<exclusive-choice name="excl_choice_1">
|
|
<default-successor>last</default-successor>
|
|
<conditional-successor>
|
|
<not-equals left-field="excl_choice_1_reached" right-value="2" />
|
|
<successor>first</successor>
|
|
</conditional-successor>
|
|
</exclusive-choice>
|
|
|
|
<!-- A final task. -->
|
|
<task name="last">
|
|
<successor>end</successor>
|
|
</task>
|
|
</process-definition>
|