spiff-arena/tests/SpiffWorkflow/data/spiff/control-flow/generalized_and_join.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>