07.03.2014 Views

BPMN and Beyond Business process modelling notation, workflow ...

BPMN and Beyond Business process modelling notation, workflow ...

BPMN and Beyond Business process modelling notation, workflow ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>and</strong> that “The performers determine when activities will start, when they will end, what the next<br />

activity will be, <strong>and</strong> so on”. The classification into sequential <strong>and</strong> parallel adHocOrder seems to<br />

disappear in this interpretation, in which any behavior one can imagine could be inserted. We<br />

have difficulties to believe that such a completely non-deterministic underst<strong>and</strong>ing is intended as<br />

<strong>BPMN</strong> st<strong>and</strong>ard conform. To clarify what the issue is about, we rewrite the transition rule for adhoc<br />

<strong>process</strong>es by explicitly stating that as long as AdHocCompletionCond is not yet true, repeatedly a<br />

multi-set of inner activities can be chosen <strong>and</strong> executed until completion. The fact that the choice<br />

happens in a non-deterministic manner, which will only be defined by the implementation or at<br />

runtime, is made explicit by using the choose construct for ASMs (see Sect. 10 for an explanation).<br />

We use A ⊆ multi B to denote that A is a multi-set of elements from B.<br />

UnconstrainedAdHocTransition(node) = [if Enabled(in) then]<br />

let t = firingToken(in)<br />

[Consume(t, in)]<br />

[let i = select InputSets (SomeAvail(inputSets(node)))<br />

currInput(node) := i]<br />

while not AdHocCompletionCond(node, t)<br />

choose A ⊆ multi innerAct(node)<br />

forall a ∈ A do a[inputs(i)]<br />

seq LoopExit(node, t)<br />

where Completed(node, t) = AdHocCompletionCond(node, t)<br />

Many issues remain open with such an interpretation. For example, can an activity within an<br />

ad hod embedded sub<strong>process</strong> be transactional? Can it be an iteration? What happens if during<br />

one execution round for a chosen subset A of embedded activities one of these throws an exception<br />

that cannot be caught within the embedded activity itself? Can ad hod sub<strong>process</strong>es be nested?<br />

If yes, how are exceptions <strong>and</strong> transactional requirements combined with nesting? Etc.<br />

6.3 Sub<strong>process</strong> Nodes<br />

The main role of sub<strong>process</strong>es is to represent modularization techniques. Their role in creating an<br />

EventContext for exception h<strong>and</strong>ling, cancellation <strong>and</strong> compensation has already been described<br />

above when formalizing the behavior of intermediate events that are placed on the boundary of<br />

an activity. Their role in showing parallel activities has been dealt with by the description of iterative<br />

(in particular adhoc) <strong>process</strong>es. The normal sequence flow of their inner activities is already<br />

formalized by the preceding description of the behavior of tasks, events <strong>and</strong> gateways, using that<br />

sub<strong>process</strong> activities in <strong>BPMN</strong> have the same sequence flow connections as task activities. What<br />

remains to be described is their role when calling an activity, which may involve an instantiation<br />

<strong>and</strong> passing data from caller to callee, <strong>and</strong> when coming back from an activity.<br />

For the discussion of calling <strong>and</strong> returning from sub<strong>process</strong>es we can start from the <strong>BPMN</strong> Best<br />

Practice Normal Form assumption as made for tasks, namely that there is (at most) one incoming<br />

<strong>and</strong> (at most) one outgoing arc. For calling a sub<strong>process</strong> we can assume that when an arc incoming<br />

a sub<strong>process</strong> is enabled, the start event of the <strong>process</strong> if triggered. This stipulation comes up to<br />

be part of the definition of the Triggered predicate for such start events, where we assume for<br />

the token model that the event type is Link <strong>and</strong> that startToken con veys the token information<br />

related to this link to the the token created when the sub<strong>process</strong> starts. If there is no incoming<br />

arc, then the st<strong>and</strong>ard stipulation is that the sub<strong>process</strong> (if it is not a compensation) is enabled<br />

when its parent <strong>process</strong> is enabled. We can include this into the description of the previous case<br />

by considering that there is a special virtual arc in our graph representation that leads from the<br />

parent <strong>process</strong> to each of its (parallel) sub<strong>process</strong>es. We have dealt in a similar way with returning<br />

from a sub<strong>process</strong> via end events, which bring the sequence flow back to the parent <strong>process</strong> (see the<br />

definition of EmitResult for end events in Sect. 5). This is in accordance with the illustrations<br />

in [15, Fig.10.14-16 p.108-110] for dealing with start/end events that are attached to the boundary<br />

of an exp<strong>and</strong>ed sub<strong>process</strong> (see also the characteristic example in [15, Fig.10.48 p.127]).<br />

30

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!