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
   37   38   39   40   41   42   43   44   45   46   47