Page 72 -
P. 72
2 The Language: Rationale and Fundamentals 59
instances continue to execute until they complete normally. However, their comple-
tion is inconsequential and does not result in any other side-effects. Should the task
commence with the required number of minimum instances and all of these com-
plete but the required threshold of instance completions not be reached, the multiple
instance task is deemed complete once there are no further instances being executed
(either from the original set of instances when the task was triggered or additional
instances that were started subsequently). Finally, it is possible to specify whether
the number of task instances is fixed after creating the initial instances (i.e., the task
is static) or whether further instances can be added while the multiple instance task
has not yet completed execution (i.e., the task is dynamic).
Tasks in a YAWL net can have specific join and split behaviors associated with
them. The supported join and split constructs are the AND-join, OR-join, XOR-join,
AND-split, OR-split, and XOR-split. The operation of each of the joins and splits
in YAWL is as follows:
AND-join – the branch following the AND-join receives the thread of control
when all of the incoming branches to the AND-join in a given case have been
enabled.
OR-join – the branch following the OR-join receives the thread of control when
either (1) each active incoming branch has been enabled in a given case or (2) it
is not possible that any branch that has not yet been enabled in a given case will
be enabled at any future time with the currently enabled branches continuing to
be marked with at least one token.
XOR-join – the branch following the XOR-join receives the thread of control
when one of the incoming branches to the XOR-join in a given case has been
enabled.
AND-split – when the incoming branch to the AND-split is enabled, the thread
of control is passed to all of the branches following the AND-split.
OR-split – when the incoming branch to the OR-split is enabled, the thread of
control is passed to one or more of the branches following the OR-split, based on
the evaluation of conditions associated with each of the outgoing branches.
XOR-split – when the incoming branch to the XOR-split is enabled, the thread of
control is passed to precisely one of the branches following the XOR-split, based
on the evaluation of conditions associated with each of the outgoing branches.
Finally, YAWL supports the notion of a cancelation region, which encompasses a
group of conditions and tasks in a YAWL net. It is linked to a specific task in the
same YAWL net. At runtime, when an instance of the task to which the cancelation
region is connected completes executing, all of the tasks in the associated cancela-
tion region that are currently executing for the same case are withdrawn. Similarly
any tokens that reside in conditions in the cancelation region that correspond to the
same case are also withdrawn. We now review the constructs for the control-flow
perspective via some illustrative examples.
Figure 2.21 illustrates a review process comprising three main tasks: schedule
review, conduct review,and report findings.The conduct review task has a timeout
associated with it that is triggered by the AND-split associated with the schedule