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.

AndJoinGateTransition(node) = WorkflowTransition(node)<br />

where<br />

CtlCond(node) = forall in ∈ inArc(node) Enabled(in)<br />

CtlOp(node) =<br />

let [in 1 , . . . , in n ] = inArc(node)<br />

let [t 1 , . . . , t n ] = firingToken(inArc(node))<br />

ConsumeAll({(t j , in j )) | 1 ≤ j ≤ n})<br />

Produce(<strong>and</strong>JoinToken({t 1 , . . . , t n }), out)<br />

DataOp(node) = forall i ∈ assignments(out) Assign(to i , from i )<br />

4.3 OR-Split Gateway Nodes<br />

An OR-split node is structurally similar to an AND-split node in the sense that by the normal form<br />

assumption it has one incoming <strong>and</strong> finitely many outgoing arcs, but semantically it is different<br />

since instead of producing tokens on every outgoing arc, this may happen only on a subset of them.<br />

The chosen alternative depends on certain conditions OrSplitCond(o) to be satisfied that are<br />

associated to outgoing arcs o. In <strong>BPMN</strong> the choice among these alternatives is based either upon<br />

<strong>process</strong>-data-involving GateConditions that evaluate to true (data-based case) or upon GateEvents<br />

that are Triggered (event-based case). Further variants considered in <strong>BPMN</strong> depend upon whether<br />

at each moment exactly one alternative is chosen (the exclusive case) or whether more than one of<br />

the alternative paths can be taken (so-called inclusive case).<br />

We formulate the choice among the alternatives by an abstract function select Produce (node),<br />

which is constrained to select at each invocation a non-empty subset of arcs outgoing node that<br />

satisfy the OrSplitCondition. If there is no such set, the rule cannot be fired.<br />

Constraints for select Produce<br />

select Produce (node) ≠ ∅<br />

select Produce (node) ⊆ {out ∈ outArc(node) | OrSplitCond(out)} 15<br />

This leads to the following instantiation of the WorkflowTransition(node) scheme for orsplit<br />

gateway nodes. The involvement of <strong>process</strong> data or gate events for the decision upon the<br />

alternatives is formalized by letting DataCond <strong>and</strong> EventCond in the rule guard <strong>and</strong> their related<br />

operations in the rule body depend on the parameter O for the chosen set of alternatives. As done<br />

for AND-split nodes, we use an abstract function orSplitToken to describe the tokens Produced<br />

on the outgoing arc; in general their values depend on the incoming tokens.<br />

OrSplitGateTransition(node) =<br />

let O = select Produce (node) in WorkflowTransition(node, O)<br />

where<br />

CtlCond(node) = Enabled(in)<br />

CtlOp(node, O) =<br />

let t = firingToken(in)<br />

Consume(t, in)<br />

ProduceAll({(orSplitToken(t, o), o) | o ∈ O})<br />

DataOp(node, O) = forall o ∈ O forall i ∈ assignments(o) Assign(to i , from i )<br />

From OrSplitGateTransition also AndSplitGateTransition can be defined by requiring<br />

the selection function to select the full set of all outgoing arcs.<br />

15 Instead of requiring this constraint once <strong>and</strong> for all for each such selection function, one could<br />

include the condition as part of DataCond(node, O) resp. EventCond(node, O) in the guard of<br />

OrSplitGateTransition.<br />

12

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

Saved successfully!

Ooh no, something went wrong!