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.

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 />

Constraints for select Produce<br />

select Produce (node) ≠ ∅<br />

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

OrJoinGateTransition(node) =<br />

let I = select Consume (node) in WorkflowTransition(node, I )<br />

where<br />

CtlCond(node, I ) = (I ≠ ∅ <strong>and</strong> forall j ∈ I Enabled(j ))<br />

CtlOp(node, I ) =<br />

Produce(orJoinToken(firingToken(I )), out)<br />

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

[t 1 , . . . , t n ] = firingToken(I )<br />

[in 1 , . . . , in n ] = I<br />

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

GateTransitionPattern(node) =<br />

let I = select Consume (node)<br />

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

WorkflowTransition(node, I , O)<br />

where<br />

CtlCond(node, I ) = (I ≠ ∅ <strong>and</strong> forall in ∈ I Enabled(in))<br />

CtlOp(node, I , O) =<br />

ProduceAll({(patternToken(firingToken(I ), o), o) | o ∈ O})<br />

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

[t 1 , . . . , t n ] = firingToken(I )<br />

[in 1 , . . . , in n ] = I<br />

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

9.3 Event Rules<br />

StartEventTransition(node) =<br />

choose e ∈ trigger(node) StartEventTransition(node, e)<br />

StartEventTransition(node, e) =<br />

if Triggered(e) then Produce(startToken(e), out)<br />

ConsumEvent(e)<br />

EndEventTransition(node) =<br />

if Enabled(in) then<br />

Consume(firingToken(in), in)<br />

EmitResult(firingToken(in), res(node), node)<br />

34

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

Saved successfully!

Ooh no, something went wrong!