Page 42 -
P. 42
2 The Language: Rationale and Fundamentals 29
example, we can identify several possible variations in the way in which it can be
operationalized when we consider factors such as the following:
1. Extent of synchronization required –doall incoming branches need to be trig-
gered before the join can fire? For example, it might be desirable for the join
to be able to fire once a specified threshold of the incoming branches have been
enabled, provided it is certain that all of the incoming branches will ultimately
be triggered. This quality is particularly attractive in time-critical processes.
2. Untriggered branch handling – in the event of partial synchronization, how
should any remaining (i.e., untriggered) branches be handled? Where this sit-
uation could possibly occur, there are a number of ways in which it can be dealt
with.
3. Likelihood of concurrency – is it possible that concurrent execution threads may
occur in an incoming branch and, if so, how should this be handled.
A number of combination of these factors are permissible during process execution
and constitute desirable behaviors, thus they form the basis for a number of distinct
patterns as illustrated in Table 2.2.
The distinction between these patterns is as follows:
The Synchronization pattern provides a means of synchronizing all of the execu-
tion threads reaching the incoming branches of an AND-join, where there is no
likelihood of more than one triggering being received on each incoming branch.
The Generalized AND-join, similar to the Synchronization pattern, provides a
means of synchronizing all incoming branches; however, it is able to cater for
situations where more than one incoming trigger is received on a branch.
The Structured Partial Join is a pattern describing an approach to AND-join
implementation that allows the join to fire once a threshold of the incom-
ing branches have been enabled, provided there is certainty that all incoming
branches will ultimately be triggered. After the join has fired, it cannot do so
again until a trigger has been received on each of the remaining (untriggered)
branches. The Structured Partial Join can only operate in a process that is struc-
tured in form (i.e., has “balanced” splits and joins). The rationale of this is that
the structured nature of the process simplifies the implementation of the partial
Table 2.2 AND-join pattern variants
Pattern Extent of Untriggered Likelihood of
synchronization branch handling concurrency
Synchronization All branches Not required Not possible
Generalized All branches Not required Allowed
AND-join
Structured Some branches Do nothing Not possible
partial join
Blocking Some branches Block them Allowed
partial join
Canceling Some branches Cancel them Not possible
partial join