Sunday, August 23, 2009

Business Process Management (Part-2 Business Process Modelling[Chapter IV Process Orchestrations ] ) Sec D -- By Mathias Weske

The discriminator is a point in a process model that waits for one of the
incoming branches to complete before activating the subsequent activity. From
that moment on it waits for all remaining branches to complete and “ignores”
them. Once all incoming branches have been triggered, it resets itself so that
it can be triggered again. This allows a discriminator to be used in the context
of a loop.
If gathering the ignored branches were not part of the functional behaviour
of the discriminator pattern, there would be no way to distinguish a second
iteration of a loop from a late branch of its first iteration.
A process model with activity models B, C, and D, and a gateway G such
that E  {(B,G), (C,G), (G,D)} and type(G) = Discriminator.To discuss the execution semantics of the discriminator, assume
that activity instance b terminates while c is still active. If this is the case, d
is triggered, and the discriminator continues to wait for the termination of c.
When c terminates, the discriminator is again ready for the next thread.
The process starts with activity instance a before an and split occurs that
spawns activity instances b1 and c1. Assuming b1 terminates first, the discriminator
fires and enables d1. When d1 terminates, assuming a new iteration of
the loop is required, new activity instances based on B and C are created. These activity instances are b2 and c2. What is remarkable in this example is
that there are two instances of activity model C active concurrently, assuming
c1 has not yet terminated.
Even if c2 terminates before c1, the semantics of the discriminator makes
sure that it can only fire and enable d2 after the first iteration has completed,
i.e., only after the remaining activity instance c1 has terminated. If this is
the case, the discriminator can fire a second time, to enable d2. Formally, for each enable event of d there are termination events of b and
c, and (at least) one of these termination events occurs prior to the enabling
event of d, i.e., 8ed 9tb, tc 2 Ep, such that tb < bd _ tc < bd.
In addition, the discriminator can become active only after the termination
events of all incoming edges that belong to the thread that has spawned the
current activities have occurred. In the example, d2 can only be enabled after
the termination operation of c1 has occurred.

No comments:

Post a Comment