data and process modelling - 8c.bpmn - analytic...
TRANSCRIPT
Data and Process Modelling8c.BPMN - analytic modeling
Marco Montali
KRDB Research Centre for Knowledge and DataFaculty of Computer Science
Free University of Bozen-Bolzano
A.Y. 2015/2016
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 1 / 81
BPMN Level 2: Analytic Modeling• Level 1: each step of the process is triggered by the completion of theprevious step.
• Level 2: expansion of level 1 with reaction to events.
EventSomething that happen in a process, at a specific point in time.
Reaction to eventsDepends on whether the process is throwing or catching the event.
• Reaction to throwing an event: how the process generates a signalthat something happened.
I Type of signal represents the trigger.• Reaction to catching an event: how the process responds to a signalthat something happened.
I Type of signal represents the result.The type of signal is shown as an icon inside the event circle.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 2 / 81
About EventsEvent Types
• Start event (thin line): indicates where the process starts.• End event (thick line): indicates where a path of the process ends.• Intermediate event (double ring): indicates that something happensduring the execution of the process.
It is now possible to model:• Reaction to external events.• Exception handling.• Parallel event handlers.• Complex indirect interactions between different process parts, whereone triggers an event and the other catches it.
• Cancelations and compensations.• . . .
QuestionWhy do people fear BPMN?
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 3 / 81
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 4 / 81
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 5 / 81
First Step in the World of EventsOut from the 104 possible combinations (only half of which are acceptedby the standard), we first focus on:
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 6 / 81
Intermediate Events
Events occurring after the start of a process level, but before its end. Fourbasic contexts of use:1. Throw an intermediate event.2. Catch an intermediate event.3. Catch an intermediate event in a specific process level, by interrupting
it.4. Catch an intermediate event in a specific process level, without
interrupting it.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 7 / 81
Throwing Intermediate Event
Intermediate event with a black icon inside.
Semantics1. As soon as the sequence flow reaches the event, the corresponding
signal is thrown.2. The process continues immediately.
Supported only by few event types.• Typical usage: throwing a message event.
send message
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 8 / 81
Catching Intermediate Event
Intermediate event with a white icon inside.
Semantics1. As soon as the sequence flow reaches the event, the process waits for
the corresponding trigger signal.2. When the trigger signal is caught, the process resumes immediately.
Supported by many event types, but not error events.
receive message
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 9 / 81
Boundary EventCatching intermediate event drawn on the boundary of an activity.
Semantics1. While the activity is running, it listens to the signal attached to the
event.2. If the activity completes without the occurrence of the boundary
event signal, the process continues on the standard execution path(normal flow).
3. If the signal occurs before the activity completes, the sequence flowout of the event is triggered (exception flow).
How this is actually done depends on the type of the boundary event.
Activity
message boundary event
normal flow
exception flow
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 10 / 81
Types of Boundary EventsInterrupting boundary eventIf the trigger signal occurs during theactivity execution:
• The activity is immediatelyterminated.
• The exception flow is activated.Drawn with a solid double ring.
Activity
message boundary event
normal flow
exception flow
Non-interrupting boundary eventIf the trigger signal occurs during theactivity execution:
• The activity is normally continues.• The exception flow is activated (with anew parallel thread).
Drawn with a solid double ring.
Activity
message boundary event
normal flow
exception flow
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 11 / 81
Timer EventNormal Catching timerIndicates to:
• wait for a specific duration, or• wait until a specific timepoint is reached.
ExampleThe process checks whether data have been uploaded. If so, the processgoes on. If not, the process waits for ten minutes and then repeats thecheck.
ExampleAfter the payment is approved, the process waits until the end of themonth, and then checks whether the payment has been actually done.
WarningDon’t use timer events to represent the duration of activities.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 12 / 81
Timer EventTimer boundary eventCombination of stopwatch and alarm.
• When the activity is reached by an incoming flow (start event), thestopwatch starts.
• If the activity is still running when the stopwatch expires, an alarm istriggered and the exception flow is immediately activated.
The reaction then depends on whether the timer is interrupting on not.
ExampleA hiring process starts by searching for internal candidates. If the search isstill running after 3 weeks, the search is interrupted and an external searchfirm is engaged. In both cases, the collected CVs are then screened.
ExampleIf the delivery of an order takes more than 3 days, the customer isinformed of the delay.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 13 / 81
Timed Interval
ExampleThe food delivery process starts when an order is received from thecustomer. The money is then collected from the customer. Next, drinkand food are prepared. Once both food and drink are ready, the order isdelivered to the customer.
A policy of the food company is that if the time-to-delivery exceeds 10minutes, then half of the money must be returned to the customer.
Strategy• Wrap the “time interval” of interest into a subprocess.• Attach a timer boundary event to the subprocess.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 14 / 81
Timed Interval
ExampleThe food delivery process starts when an order is received from thecustomer. The money is then collected from the customer. Next, drinkand food are prepared. Once both food and drink are ready, the order isdelivered to the customer.
A policy of the food company is that if the time-to-delivery exceeds 10minutes, then half of the money must be returned to the customer.
Strategy• Wrap the “time interval” of interest into a subprocess.• Attach a timer boundary event to the subprocess.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 14 / 81
Can You Tell the Difference?
Prepare order
Receive orderDeliver order
Register delivery
time
Order delivered
Notify delay
> 3 days?
yes
no
Prepare order
Receive orderDeliver order
Register delivery
time
Order delivered
Notify delay
3 days
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 15 / 81
More on Messages
BPMN definition for “message”The content of a communication between two participants.
• Could represent even material flow, i.e., the delivery of a physicalobject.
A message has an item definition that specifies the message payload, i.e.,an information or physical object.
WarningConsider “send” and “receive” as BPMN keywords that denote theexchange of a message from the point of view of the emitter or destination.
Location of a messageA message could correspond to many distinct message flows, representingthe message in different situations of the process.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 16 / 81
Who Can Send a Message?• A black-box pool.• A throwing message event.• Any type of activity (optional send).
• A send task.Send Task
Send taskA task consisting in the immediate emission of a message (certain send).Difference with an intermediate throwing message event:
• The task has a performer.I Conventionally, the performer of a throwing event can be understood
as the lane containing that event.• The task can have boundary events attached to it.• The task can have special decorators indicating forms of repetitions(see later).
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 17 / 81
“Sending” within a Process
ErrorMessage flow cannot be used to forward work to a downstream task withinthe same process.
Solutions:• Work forwarded implicitly via control-flow.• Forwarding of work encapsulated in a specific activity (without usingthe word “send”).
• Forwarded work explicitly shown as a data object.• Notification typically handled through a user task in the laneresponsible for the notification.
I Not the one “receiving” the notification.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 18 / 81
Who Can Receive a Message?• A black-box pool.• A catch message event.• Any type of activity (optional receive).
• A receive task.Receive
Task
Receive taskA task only responsible for waiting for a message (blocking receive).Difference with an intermediate throwing message event:
• The task has a performer.I Conventionally, the performer of a catch event can be understood as
the lane containing that event.• The task can have boundary events attached to it.
I Timers are particularly interesting here.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 19 / 81
Synchronous vs Asynchronous Communication
Synhronous CommunicationWhenever a message is sent by a process, the process waits for a responsemessage before continuing.
Natively, BPMN message events account for asynchronouscommunication: the emission of a message does not interrupt the emitterprocess.
How to support synchronous communication?• Short-running synchronous communication: service task.
I Implicitly sends a message and then waits for a response to complete.• Long-running synchronous communication: sequence of send andreceive.
I Possibly inserting other activities inbetween.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 20 / 81
Event-Driven ChoicesExampleAn credit card generation process starts when a customer sends anapplication to the bank. An employee of the bank then verifies thecompleteness of the application. If the application is complete, it isprocessed (complex activity), and then the card is issued. If the applicationis not complete, before processing it an additional interaction with thecustomer is required. In particular, the bank requests the additionalrequired info to the customer, and then waits for an answer. If thecustomer refused to provide the requested information, then the processends by sending a rejection to the customer. If instead the customerpositively replies to the request, the application is fixed considering thenewly requested infromation, then processing the application.
Need for regaining controlWhat happens if the customer decides not to answer at all to the bank’srequest? Timeout needed!
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 21 / 81
Event-Driven ChoicesExampleAn credit card generation process starts when a customer sends anapplication to the bank. An employee of the bank then verifies thecompleteness of the application. If the application is complete, it isprocessed (complex activity), and then the card is issued. If the applicationis not complete, before processing it an additional interaction with thecustomer is required. In particular, the bank requests the additionalrequired info to the customer, and then waits for an answer. If thecustomer refused to provide the requested information, then the processends by sending a rejection to the customer. If instead the customerpositively replies to the request, the application is fixed considering thenewly requested infromation, then processing the application.
Need for regaining controlWhat happens if the customer decides not to answer at all to the bank’srequest? Timeout needed!
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 21 / 81
Event-driven ChoicesSometimes, a choice in a process depends on which event triggers firstamong a set of possible alternatives:
• Alternative messages (possibly from different participants).• Timeouts.
WarningThis cannot be captured, in general, by using a normal choice gateway:the decision cannot be taken before the event triggers!
Case of alternative messages from same participant• Alternative messages compacted into a unique message with anextended payload.
• Subsequent gateway checks the extended payload to internally decidehow to continue.
General caseEvent gateway.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 22 / 81
Event GatewayChoice point whose outcome depends on the first received event, not onan internal decision of the orchestration.Semantics1. When the process reaches the event gateway, it waits.2. The first triggering event attached to the gateway determines which
path is taken (race conditions).3. The process istantanteously reacts by moving accordingly.4. If other signals are triggered later on, they are ignored.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 23 / 81
Message Boundary EventManagement of unsolicited messages.
ExampleAn order management process starts when a customer places an order.The order is fulfilled, then shipped, and finally invoiced. The customermay cancel the placed order while it is being fulfilled or shipped. In thefirst case, the process immediately terminates by notifying to the customerthat the cancelation has been correctly handled. In the second case, theprocess does not interrupt its normal course of execution (it is too late).However, an additional task is required to be executed, whose purpose toto authorize the return for credit to the customer.Strategy
• Identify the maximal fragments of a process level for which themanagement of an event is the same.
• Surround these fragments with subprocesses, using boundary eventsand exception flow to capture how the event is managed when itoccurs in that specific process part.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 24 / 81
Error eventErrorAn exception end state of an activity (business or technical error).
Interrupting error boundary eventIndicates an error code and how that error is handled if the activityexecution experiences that error.
• On a task: represents the exception flow to be followed when the taskcompletes unsuccessfully.
• On a subprocess: same meaning, but requires that the innerspecification of a descendant subprocess explicitly mentions thecorresponding error end state.
Error end stateEnd state marking an error termination of the process level (with a certainerror code).We assume that the label corresponds to its error code.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 25 / 81
Throw-Catch Pattern
Semantics of Error HandlingWhen the current process level reaches an error end state:1. All active parallel threads within the same process level are
immediately terminated (∼ termination end state).2. The corresponding error signal is generated, and propagated to the
parent level.3. If the parent level defines an error boundary event with matching
error code, the signal is caught and the exception flow is activated.4. Otherwise, the signal is recursively propagated to the ancestors, until
the nearest ancestor able to handle the error finally catches it.
ObservationThe boundary error event is not really “interrupting”, since it is triggeredwhen the inner activity terminates in an error end state.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 26 / 81
Correspondence with Level 1 Exceptions
Business exceptions handled by the immediate parent process level can beequivalently modeled:
• Using the methodology seen in level 1.I Different end termination states.I Gateway used in the parent process to test which termination state has
been reached.• Using throw-catch patterns: more emphasis on the fact that we arehandling errors.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 27 / 81
Other Analytic Events
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 28 / 81
Escalation Event
Represented with an upward arrow inside.
Escalation eventUsed to handle a “mild” exception. Differently from errors:
• An escalation can be triggered in the middle of a process level, notjust in an end state.
• An escalation is typically caught without interrupting the currentprocess level.
I But can also be interrupting when needed.
SemanticsIdentical to the throw-catch pattern for error events, considering that inthis case the inner process does not necessarily terminate upon escalation.
Typically used to handle ad-hoc exceptions in user tasks.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 29 / 81
Managing Exception Synchronization
ExampleWhenever a request is received, the process handles it by entering itsdetails. If a configuration issue arises, a specialist from the IT departmentis consulted. Once this phase is properly completed, the request is fulfilled.
Usage of subprocess boundaries to introduce a “dynamic” synchronizationpoint.
• We will see another construct to handle this issue later on.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 30 / 81
Managing Exception Synchronization
ExampleWhenever a request is received, the process handles it by entering itsdetails. If a configuration issue arises, a specialist from the IT departmentis consulted. Once this phase is properly completed, the request is fulfilled.
Usage of subprocess boundaries to introduce a “dynamic” synchronizationpoint.
• We will see another construct to handle this issue later on.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 30 / 81
BPMN - Order Example (Procurement Sub-Process)
!"#$%&'(#))$*'&$+"#$)+'(,$-./0+#0.0(#$/)$+&/11#$34$.$('02/+/'0.5$)+.&+$#6#0+7$8+$-#.0)$+".+$+"#$%&'(#))$/)$/0)+.0+/.+#2$/0$
(.)#$+".+$+"#$('02/+/'0$3#(.-#$+&9#:$)'$/0$+"/)$#;.-%5#$<"#0$+"#$)+'(,$5#6#5$1'#)$3#5'<$.$(#&+./0$-/0/-9-7$80$'&2#&$+'$
/0(&#.)#$+"#$)+'(,$5#6#5$.0$.&+/(5#$".)$+'$3#$%&'(9$!"#&#*'&#$<#$9)#$+"#$).-#$=&'(9&#-#0+$%&'(#))$.)$/0$+"#$'&2#&$
*95*/55-#0+$.02$&#*#&$+'$/+$34$+"#$(.55$.(+/6/+4$>=&'(9&#-#0+>:$/02/(.+#2$34$+"#$+"/(,$3'&2#&7$?/-/5.&$+'$+"#$$'&2#&$
*95*/55-#0+$%&'(#))$$+"/)$%&'(#))$".025#)$+"#$#&&'&$#;(#%+/'0$34$&#-'6/01$+"#$.&+/(5#$*&'-$+"#$(.+.5'17$@9+$/0$+"/)$)+'(,$
-./0+#0.0(#$%&'(#))$+"#&#$.%%#.&)$+'$3#$0'$0##2$*'&$+"#$".025/01$'*$.$>5.+#$2#5/6#&4>$#)(.5.+/'0$#6#0+7$!".+A)$<"4$/+$/)$
5#*+$'9+$.02$0'+$".025#27$8*$+"#$%&'(9&#-#0+$)93B%&'(#))$*/0/)"#)$0'&-.554:$+"#$)+'(,$5#6#5$/)$.3'6#$-/0/-9-$.02$+"#$
?+'(,$C./0+#0.0(#$%&'(#))$#02)$</+"$+"#$#02$#6#0+$D.&+/(5#$%&'(9E7
F#$0'<$G''-$/0+'$+"#$15'3.5$)93B%&'(#))$D%&'(9&#-#0+E$+".+$/)$9)#2$34$3'+"$'&2#&$*95*/55-#0+$.02$)+'(,$-./0+#0.0(#7$
@#(.9)#$+"/)$/)$.$)93B%&'(#)):$+"#$)+.&+$#6#0+$/)$%5./0:$/02/(.+/01$+".+$+"/)$%&'(#))$/)$0'+$+&/11#$34$.04$#;+#&0.5$#6#0+$39+$
+"#$&#*#�(/01$+'%B5#6#5B%&'(#))7$$
!"#$*/&)+$+.),$/0$+"/)$)93B%&'(#))$/)$+"#$("#(,$<"#+"#&$+"#$.&+/(5#$+'$%&'(9$/)$.6./5.35#$.+$+"#$)9%%5/#&7$8*$0'+:$+"/)$)93B
%&'(#))$</55$+"&'<$+"#$D0'+$2#5/6#&.35#EB#;(#%+/'0$+".+$/)$(.91"+$34$3'+"$'&2#&$*95*/55-#0+$.02$)+'(,$-./0+#0.0(#:$.)$<#$
.5&#.24$2/)(9))#27
80$(.)#$+".+$+"#$2#5/6#&4$/0$+"#$=&'(9&#-#0+$%&'(#))$5.)+)$-'&#$+".0$H$2.4)$.0$#)(.5.+/'0$#6#0+$/)$+"&'<0$34$+"#$)93B
%&'(#))$+#55/01$+"#$&#*#�(/01$+'%B5#6#5B%&'(#))$+".+$+"#$2#5/6#&4$</55$3#$5.+#7$?/-/5.&$+'$+"#$#&&'&$#6#0+:$+"#$#)(.5.+/'0$
#6#0+$".)$.5)'$.0$#)(.5.+/'0I'2#$<"/("$/)$0#(#)).&4$*'&$+"#$('00#(+/'0$3#+<##0$+"&'</01$.02$(.+("/01$#)(.5.+/'0$#6#0+)7$
I'0+&.&4$+'$+"#$+"&'</01$#&&'&$#6#0+:$$(9&�+54$.(+/6#$+"&#.2)$.&#$0#/+"#&$+#&-/0.+#2$0'&$.**#(+#2$34$+"#$+"&'</01$
!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#$%!&'(!)*!+,-./012!3145678!9'(!
#$%&'(!)*+,!-./01!23$4.(4340(!5'/0(66
:;7<=!01>10!
)107?!.686.@.
#47<@41.18;
A4;6<01!/47<@41B
@8B106>14-)01
C1.7>1!-4;6<01!
D47.!<-;-07E@1
A4;6<01!41.7>1B
#$%&'(!)*),!!7'/0&'(2(4.!6&895'/0(66
FG1<=!
->-60-)606;*!?6;G!
5@//0614
H106>14-)01I
J-;1!B106>14*
A4;6<01!
/47<@41B
K!&!B-*5
L!M!&!B-*5
@8B106>14-)01
87
-4;6<01!41<16>1B
N4B14!D47.!
5@//0614
From BPMN 2.0 by Example - http://www.bpmn.org/
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 31 / 81
BPMN - Order Example (Main Process)
!"#$%&'()"*&*()+,%&-).#&)/.$-)%/&)0$'%.!&-)'1"2')3+"%"#4)+#5)0+66')%/&)7.-()+'1"#4),.-)%/&)2"88+*)9&)#.3)+''$!&)%/+%)
%/&)06&-1)2-.!"'&')%/&)2"88+)%.):&)5&6"7&-&5)'..#()+#5)%/&)0$'%.!&-')3+"%'),.-)%/&)2"88+)+4+"#()+'1"#4)+4+"#)+,%&-)%/&)#&;%)
<=)!"#$%&'()+#5)'.).#*)>&%?')/+7&)+)06.'&-)6..1)+%)%/&)7.-)2-.0&'')#.3*)@%)"')%-"44&-&5):A)%/&).-5&-).,)%/&)0$'%.!&-()+')
'/.3#)3"%/)%/&)!&''+4&)'%+-%)&7&#%)+#5)%/&)!&''+4&),6.3)4."#4),-.!)B.-5&-)+)2"88+C)%.)%/+%)&7&#%*)D,%&-):+1"#4)%/&)
2"88+()%/&)5&6"7&-A):.A)3"66)5&6"7&-)%/&)2"88+)+#5)-&0&"7&)%/&)2+A!&#%()3/"0/)"#06$5&')4"7"#4)+)-&0&"2%)%.)%/&)0$'%.!&-*
@#)%/"')&;+!26&()3&)$'&)!&''+4&).:E&0%')#.%).#6A),.-)"#,.-!+%".#+6).:E&0%'()+')%/&)2"88+).-5&-():$%)+6'.),.-)2/A'"0+6)
.:E&0%'()6"1&)%/&)2"88+).-)%/&)!.#&A*)9&)0+#)5.)%/"'():&0+$'&)%/.'&)2/A'"0+6).:E&0%')+0%$+66A)+0%)+')"#,.-!+%".#+6).:E&0%')
"#/&-&#%6AF)9/&#)%/&)2"88+)+--"7&')+%)%/&)0$'%.!&-?')5..-()'/&)3"66)-&0.4#"8&)%/"')+--"7+6)+#5)%/&-&,.-&)1#.3)%/+%)%/&)2"88+)
/+')+--"7&5()3/"0/)"')&;+0%6A)%/&)2$-2.'&).,)%/&)+00.-5+#%)!&''+4&)&7&#%)"#)%/&)0$'%.!&-?')2..6*)G,)0.$-'&()3&)0+#).#6A)
$'&)%/&)!.5&6)"#)%/+%)3+A):&0+$'&)%/"')&;+!26&)"')#.%)!&+#%)%.):&)&;&0$%&5):A)+)2-.0&'')"#&*
!"# $%&'%()*+,-++.'/0(1/&(2%34*%'.'/0
H/"').-5&-),$6,"66!&#%)2-.0&'')'%+-%')+,%&-)-&0&"7"#4)+#).-5&-)!&''+4&)+#5)0.#%"#$&')%.)0/&01)3/&%/&-)%/&).-5&-&5)+-%"06&)
"')+7+"6+:6&).-)#.%*)D#)+7+"6+:6&)+-%"06&)"')'/"22&5)%.)%/&)0$'%.!&-),.66.3&5):A)+),"#+#0"+6)'&%%6&!&#%()3/"0/)"')+)0.66+2'&5)
'$:I2-.0&'')"#)%/"')5"+4-+!*)@#)0+'&)%/+%)+#)+-%"06&)"')#.%)+7+"6+:6&()"%)/+')%.):&)2-.0$-&5):A)0+66"#4)%/&)2-.0$-&!&#%)'$:I
2-.0&''*)J6&+'&)#.%&)%/+%)%/&)'/+2&).,)%/"')0.66+2'&5)'$:I2-.0&'')"')%/"016A):.-5&-&5)3/"0/)!&+#')%/+%)"%)"')+)0+66)+0%"7"%A*)
@%)"')6"1&)+)3-+22&-),.-)+)46.:+66A)5&,"#&5)%+'1).-()6"1&)"#)%/"')0+'&()'$:I2-.0&''*
D#.%/&-)0/+-+0%&-"'%"0).,)%/&)2-.0$-&!&#%)'$:I2-.0&'')+-&)%/&)%3.)+%%+0/&5)&7&#%'*)KA)$'"#4)+%%+0/&5)&7&#%')"%)"')2.''":6&)
%.)/+#56&)&7&#%')%/+%)0+#)'2.#%+#&.$'6A).00$-)5$-"#4)%/&)&;&0$%".#).,)+)%+'1).-)'$:I2-.0&''*)H/&-&:A)3&)/+7&)%.)
5"'%"#4$"'/):&%3&&#)"#%&--$2%"#4)+#5)#.#I"#%&--$2%"#4)+%%+0/&5)&7&#%'*)K.%/).,)%/&!)0+%0/)+#5)/+#56&)%/&).00$--"#4)
&7&#%'():$%).#6A)%/&)#.#I"#%&--$2%"#4)%A2&)L/&-&)"%)"')%/&)&'0+6+%".#)&7&#%)B6+%&)5&6"7&-ACM)5.&')#.%)+:.-%)%/&)+0%"7"%A)"%)"')
+%%+0/&5)%.*)9/&#)%/&)"#%&--$2%"#4)&7&#%)%A2&)%-"44&-'()%/&)&;&0$%".#).,)%/&)0$--&#%)+0%"7"%A)'%.2')"!!&5"+%&6A*
!"#$%&'(%)*%+,-./012%3145678%9'(%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
)-5*%'(!"#6($%&'%()*+,-++.'/0
:4;14
41<16=1;
>?1<@%
-=-60-)606A*
B4A6<01
-=-60-)01
"47<C41.18A
87
D?6/%-4A6<01*15
E-A1%;106=14*
F8G74.%
<C5A7.14
>C5A7.14%68G74.1;
%
H68-8<6-0%
51AA01.18A
"-*.18A%41<16=1;
C8;106=14-)01
F8G74.%
<C5A7.14
I1.7=1%-4A6<01%
G47.%<-0-A7JC1
B4A6<01%41.7=1;
From BPMN 2.0 by Example - http://www.bpmn.org/
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 32 / 81
Signal Event
Represented with a triangle inside.
Signal eventEvent broadcasted to all active threads in a process, and all (external)active participants.
• Intra-process: loose coupling between thrower and catchers, with thepossibility of reaching parallel threads.
I A correlation mechanism is assumed to target the right processinstance.
• Inter-process: Publish-subscribe paradigm (signal broadcasted to allinterested participants).
I Any process interested in the signal could trigger a new instance usinga signal start event.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 33 / 81
Signal Event and FlexibilityMore flexible mechanism than for other events.
• Flexible catchers.I Errors/escalations: only target ancestor process levels.I Messages: only target other pools.
• Flexbile reaction.I Terminate/error are only able to terminate and entire process level.I Signal can selectively induce termination of some activities within the
current process level.
Selective terminationNegotiate contract
Prepare paperwork
Negotiation fails
Stop work
Stop work
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 34 / 81
Conditional Event
Represented using a list inside.
Conditional eventContinuous monitoring of a data condition/business rule.
• Event triggered every time the condition becomes true.• Used as a starting, catching intermediate and boundary event.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 35 / 81
Differences and SimilaritiesReplenishing stock when inventory is low. . .
• Internal condition evaluation.Replenish
stock
Low inventory
• External condition evaluation (by anybody).Replenish
stock
Low inventory
• External condition evaluation by the mentioned participant.
Replenish stock
receivereplenish
Inve
ntor
y co
ntro
l
Replenish stock
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 36 / 81
Event SubprocessException flow can be thought as the handler of an event.
Event subprocessAn event handler whose trigger is active during the whole execution of aprocess level. Features:
• Subprocess with a triggered start event: message, timer, or error.• Interrupting vs non-interrupting.• Graphically: dashed subprocess, plus:
I Collapsed: has a start event icon in the corner to show the type oftrigger it listens to
I Expanded: uses the start event icon to start.• Start event: solid/dashed for interrupting/non-interruptingsubprocess.
The event subprocess may trigger errors/escalations: they will be managedby the parent process in the usual way.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 37 / 81
Notes for Architects
• Event subprocesses more easily map to BPEL.• Event subprocess can access the context of its process level (dataand state values).
I This is not possible when a boundary exception flow is used, because inthat case the handler belongs to the parent level.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 38 / 81
Handling Timeout
ExampleUpon a service request, the process enters into a “perform service”subprocess. This subprocess is meant to run within 4 hours at most. Ifthis time is exceeded, then the subprocess continues, but two notificationshave to be sent: one to the manager, and one to the customer.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 39 / 81
Activity Decorators
Basic task.
Compensation task.
Loop task (looping information attached to the activity).
Multi-instance task with parallel composition (expressionattached to the activity to calculate the number of in-stances).
Multi-instance task with sequential composition.
For sub-processes only: ad-hoc (tilde marker) - flexible execution of theinner activities, without a complete specification of the process.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 40 / 81
Loop ActivityAn activity with a loop marker.
Loop activityAn activity possibly repeated multiple times. A Loop condition indicateswhether the activity must be repeated or whether the process mustcontinue on the outgoing flow.
• Loop condition “Until X” is captured by gate “If not X”.• A text annotation used to graphically show the loop condition.• Iterations are performed sequentially.• Number of iterations dynamically established.
WarningCorresponds to a normal activity followed by a gateway that connects backto the activity if the loop condition is true.
• Do not mix the two notations!
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 41 / 81
Example: Loops
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 42 / 81
Example: Loops
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 42 / 81
Multi-Instance ActivityAn activity marked by three parallel bars.
MI activityActivity instantiated multiple times, one per element in a collection.
• Number of iterations depends on the case and is known when theactivity is reached.
I Design time or dynamically, but before the activity starts.• Text annotation of the form “for each X” is useful if the activity labeldoes not clarify the MI nature.
• Execution can be:I Sequential (horizontal bars).I Parallel (vertical bars).
• Default termination of the activity: all-complete.• A terminate/interrupting boundary event can be used to stop allrunning instances.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 43 / 81
Example: Multi-Instances
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 44 / 81
One-To-Many
ExampleConsider a hiring process that starts autonomously by posting informationabout a new job. The process continues by accepting applications (from an“Applicant” pool), interviewing candidates, ultimately hiring one of them.
Refine the process considering that only 5 selected candidates areinterviewed.
WarningProcess at two different granularities:
• Case: a job.• Portion of the process: applicant (one job, many applicants).
The “many” part requires forms of synchronization.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 45 / 81
One-To-Many
ExampleConsider a hiring process that starts autonomously by posting informationabout a new job. The process continues by accepting applications (from an“Applicant” pool), interviewing candidates, ultimately hiring one of them.
Refine the process considering that only 5 selected candidates areinterviewed.
WarningProcess at two different granularities:
• Case: a job.• Portion of the process: applicant (one job, many applicants).
The “many” part requires forms of synchronization.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 45 / 81
One-To-Many within a PoolGuideline1. Identify all N:1 activities.2. Surround them in a loop or MI activity or a combination thereof.
Main issues:• If in a process phase we do not know the number of instances inadvance, we can only use loop.
I Pipelining impossible.• If in a process phase we know the number of instances in advance, wecan use MI.
I Pipelining still impossible across phases.
Example• Do we know the number of applicants in advance?• Shall we keep “screen” and “interview” within the same loop?• What if we want to interview only 5 candidates?• Is it possible to pipeline “screen” and “interview”?
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 46 / 81
Multipool Process
ObservationBPMN recommends to associate a process to a pool.However, this cannot be done in general if activity instances within aprocess are not aligned, i.e., there is no 1:1 correspondence between them.
Multipool processIn general a process consist of many coordinated pools, each groupingactivities that are aligned with each other.
• N:1 situation: avoids looping + MIs with the corresponding pipeliningissues.
• N:M situation: the only viable solution.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 47 / 81
Multipool Hiring Process
ExampleConsider again the hiring process.
• “Post a job” is 1:1 with the job (case).• “Evaluate a candidate” is 1:1 with an applicant.
What is the relationship between applicant and job?• N:1 (isolation): each applicant sends CV for a specific job.
I Single pool solution requires looping + MIs, with pipelining issues.I Multipool solution avoids this.
• N:M (sharing): each applicant sends CV, and the company lookswhether there are matching jobs for that CV.
I Multipool separation necessary.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 48 / 81
Multipool Process: Needs and Issues
• Harder to understand.• The process is actually split into independent processes: this requirescoordination to synchronize the states of such processes and suitablyreconstruct the overall process.
I Data store, using data objects and their states for indirectsynchronization/decision making.
I Signals, to broadcast a control-flow state and implicitly triggermulti-pool synchronization.
I Messages, to exchange data, hand-over work, and handle “selective”synchronization between two pools.
• Particularly useful to model batch processes.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 49 / 81
Hiring Process and Multipool Coordination
ExampleWe revisit the hiring process using one external pool for the applicant, andtwo process pools: Evaluate Candidate and Hiring Process.The Hiring process starts autonomously by posting a job. If the job issuccessfully assigned to someone, it is marked as “filled”. If this is not thecase within 3 months, the job is marked as “abandoned”.The Evaluate candidate process starts when a resume is received by thecompany from an applicant. We assume that the resume is for a specificjob. If the job is not currently offered, the process terminates by notifyingthis to the applicant. If it is open, a subprocess “screen and interview” isinvoked. Then the company decides whether to make an offer to thecandidate or not. If not, this is notified to her. If so, then the offer ismade to the candidate, who can then accept or reject the offer. As soonas the job is filled, the evaluation of candidates must be interrupted.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 50 / 81
Hiring Process and Multipool Coordination
GuidelineHiring process could be organized as follows:
• 1 external pool for the Applicant, two process pools: Hiring Processand Evaluate Candidate.
• Job Status data store to synch on the job lifecycle.• Message exchange to send data around and take decisions inagreement with the other pools.
• Signal event + event subprocess to interrupt sibling cases running inthe other pools (e.g., to stop evaluating people when the job hasbeen filled).
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 51 / 81
Batch Process
Common situation where the process must be captured via multiple pools.
Batch processA process operating over a batch of items, which are handled separately inanother process (i.e., the other process treats them as cases).
• Typically, batch processing is triggered by a time event.• There are cases in which the result of batch processing is needed alsoin the “item-level” process.
Whenever the batch-level process needs to interact with the item-levelprocess, the same forms of coordination seen before can be used.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 52 / 81
Batch Posting of Orders
ExampleOnce an order is received from the customer, it is registered in the“Orders” DB. Orders are posted on a daily basis: at 8am in the morning,all the orders issued during the previous 24 hours are posted. As aconsequence of the posting, each order is automatically assigned to anagent, storing this information into the DB. Then the agent takes care offulfilling the order.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 53 / 81
Solution?
Orders
Update Orders DB
Receive order 8 am
Post Batch Assign Agents Fulfill Order
• Green: one order.• Red: many orders.• Orange: all known orders.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 54 / 81
Solution?
Orders
Update Orders DB
Receive order 8 am
Post Batch Assign Agents Fulfill Order
• Green: one order.• Red: many orders.• Orange: all known orders.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 54 / 81
Solution?!?Data-store provides a suitable loose coupling mechanism.
Post
ord
er b
atch
Orders
Update Orders DB
Receive order
8 am
Post Batch Assign Agents
Fulfill Order
Who fulfills the order? The order is fulfilled without waiting for the agentassignment: race conditions.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 55 / 81
Solution?!?Data-store provides a suitable loose coupling mechanism.
Post
ord
er b
atch
Orders
Update Orders DB
Receive order
8 am
Post Batch Assign Agents
Fulfill Order
Who fulfills the order? The order is fulfilled without waiting for the agentassignment: race conditions.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 55 / 81
Solution 1: Stopwatch + Data-Store SynchronizationPo
st o
rder
bat
ch
Orders
Update Orders DB
Receive order
8 am
Post Batch Assign Agents
Fulfill Order
Set Agent
for each Order
Get Agent
9 am
Wait until batch ends
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 56 / 81
Solution 2: Message-Based SynchronizationPo
st o
rder
bat
ch
Orders
Update Orders DB
Receive order
8 am
Post Batch Assign Agents
Fulfill Order
Return Agent
for each Order
Receive agent
If the fact that an agent is set must be broadcasted: throw signal event!
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 57 / 81
Instance AlignmentIn some situations, the end-to-end process cannot be related to a singlenotion of case.ExamplePurchase of apps for smartphones:
• Process scope: from app request and download to payment.• Request and download: “app” case.• Payment: “payment” case, combining multiple ordered apps.• Billing: “bill” case, containing payment-related information for allapps ordered during the last . . . months.
Such different cases typically need to synch.
ExampleAn app provides basic functionalities as soon as it is downloaded, but fullfunctonalities are only available upon its payment.
Again: multipool approach.Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 58 / 81
Instance Alignment: the App Order-Payment-Bill ExampleCu
stom
erO
rder
pro
cess
Billin
g pr
oces
s
Paym
ent p
roce
ss
Receiveorder
DownloadApp
Enable Basic Functionalities
Update Customer Account
Enable Full Functionalities
Receivepaymentadvice
Customer account
order
update available functionalities
update available functionalities
credit account
debit account
billing statement payment
paymentadvice
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 59 / 81
Instance Alignment: the App Order-Payment-Bill ExampleCu
stom
erO
rder
pro
cess
Billin
g pr
oces
s
Paym
ent p
roce
ss
Receiveorder
DownloadApp
Enable Basic Functionalities
Update Customer Account
Enable Full Functionalities
Receivepaymentadvice
Customer account
order
update available functionalities
update available functionalities
credit account
debit account
billing statement payment
paymentadvice
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 59 / 81
Advanced Splitting and Merging
BPMN provides advanced splitting/merging behavior.• Conditional flows.• OR split/join.• Complex gateway: discriminator, n-out of-m, . . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 60 / 81
An Interesting Example
Claim handlingWhen a claim is received, it is registered. After registration, the claim isclassified leading to two possible outcomes: simple or complex. If theclaim is simple, the policy is checked. For complex claims, both the policyand the damage are checked independently.
Questions• Can we model the example using the constructs seen so far?• Can we model it in a compact way?• Is this a decision? Or an AND-split?
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 61 / 81
Another Interesting Example
Contract CheckAfter a contract is drafted, it is subject to different checks. If it is atechnical contract, a technical review is done. If it involves a financialtransaction of more than 10K Euros, then a financial check is carried out.If the contract involves a premium customer, then a quality check isexecuted. If none of these special conditions applies, then a quick checksuffices.
Questions• Can we model the example using the constructs seen so far?• Can we model it in a compact way?• Is this a decision? Or an AND-split?
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 62 / 81
Conditional FlowSequence flow taken only if a certain condition is true. Multipleconditional flows departing from the same activity can be used to modelinclusive choice. BPMN supports conditional flows in two ways.
OR-split (gateway decorated with an “O”)Inclusive gateway whose gates are independent choices.
• At least one condition must be true.• If more than one is true, corresponding gates are followed in parallel.• Default flow (barred) can be used to model “otherwise”.• Can be used to model optional work.
I Use label “always” for the path that must be always taken.
Conditional flow (Sequence flow + diamond-on-the-tail + condition)Reflects the general intuition above.
• Can only be used if the source is an activity.• Same properties mentioned for the OR-split.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 63 / 81
Claim Handling with OR-Split
ExampleWhen a claim is received, it is registered. After registration, the claim isclassified leading to two possible outcomes: simple or complex. If theclaim is simple, the policy is checked. For complex claims, both the policyand the damage are checked independently.
Register claim
Receive claim
Classify claim
Check policy
Check damage
always
complex claim
. . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 64 / 81
Claim Handling with OR-Split
ExampleWhen a claim is received, it is registered. After registration, the claim isclassified leading to two possible outcomes: simple or complex. If theclaim is simple, the policy is checked. For complex claims, both the policyand the damage are checked independently.
Register claim
Receive claim
Classify claim
Check policy
Check damage
always
complex claim
. . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 64 / 81
Contract Check with Conditional FlowExampleAfter a contract is drafted, it is subject to different checks. If it is atechnical contract, a technical review is done. If it involves a financialtransaction of more than 10K Euros, then a financial check is carried out.If the contract involves a premium customer, then a quality check isexecuted. If none of these special conditions applies, then a quick checksuffices.
Receive contractrequest
Draft contract
Do technical
review
Do financial
check
Do quality check
Do quick check
is technical contract
involves > 10K €
involves premium customer
. . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 65 / 81
Contract Check with Conditional FlowExampleAfter a contract is drafted, it is subject to different checks. If it is atechnical contract, a technical review is done. If it involves a financialtransaction of more than 10K Euros, then a financial check is carried out.If the contract involves a premium customer, then a quality check isexecuted. If none of these special conditions applies, then a quick checksuffices.
Receive contractrequest
Draft contract
Do technical
review
Do financial
check
Do quality check
Do quick check
is technical contract
involves > 10K €
involves premium customer
. . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 65 / 81
How to Join?
Register claim
Receive claim
Classify claim
Check policy
Check damage
always
complex claim
Receive contractrequest
Draft contract
Do technical
review
Do financial
check
Do quality check
Do quick check
is technical contract
involves > 10K €
involves premium customer
? . . .
? . . .
Handle request ?
Handle additions
. . .
add late features
. . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 66 / 81
How to Join?
Handle request ?
Handle additions
. . .
add late features
. . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 67 / 81
Useless Attempts
Two answers
Register claim
Receive claim
Classify claim
Check policy
Check damage
always
complex claim
Prepare answer . . .
No answer
Register claim
Receive claim
Classify claim
Check policy
Check damage
always
complex claim
Prepare answer . . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 68 / 81
Useless Attempts
Two answers
Register claim
Receive claim
Classify claim
Check policy
Check damage
always
complex claim
Prepare answer . . .
No answer
Register claim
Receive claim
Classify claim
Check policy
Check damage
always
complex claim
Prepare answer . . .
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 68 / 81
OR-Join
OR-JoinSelectively synchronizes conditionally enabled parallel threads.
• Non-local semantics: needs to know which parallel threads actuallyexist and will need to be synchronized in the future.
• Decides to wait or forward work depending on the presence or absenceof remaining threads to be synchronized.
Typical usages:• Selective synch corresponding to an inclusive choice.• Synch in case of interrupting exceptional flow.• Synch in case of non-interrupting exceptional flow.
Big QuestionHow to determine such threads?
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 69 / 81
OR-Join for Non-Interrupting Exceptional Flow
Handle request ?
Handle additions
add late features
A B
B executed only if the request is completed, possibly including additions.• Remember: additions are only handled if the message is received inthe proper process phase. We cannot know in advance whether thiswill be indeed the case.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 70 / 81
OR-Join for Interrupting Exceptional Flow
Draft contract
Do financial
check
Do technical
review
needs revision
Revise financial
terms
Finalize contract
We do not know in advance whether the technical review will need tosynch with the financial review or the revision of financial terms.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 71 / 81
Block-Structured Process Model - Intuition
The graph structure can be understood as composition of blocks.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 72 / 81
Block-Structured Process ModelA process model obtained via recursive composition of SESE blocks.
SESE blockA process fragment that has a single input and a single output, and can beabstracted as a subprocess.Block types:
• end-to-end process.• Single task.• Sequence block.• Choice block (X).• Parallel block (+).• Inclusive block (O).• Loop block.
This is just a guideline, we typically need at least some exceptions for endpoints and exception handling.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 73 / 81
SESE Blocks
Task
Task
Choice
B1
B2
Bn
...X X
Sequence
B1 B2
Parallel
B1
B2
Bn
...+ +
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 74 / 81
SESE Blocks
Inclusive
B1
B2
Bn
...O O
Loop
X XB
End-to-end process
Process
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 75 / 81
OR-Join Semantics for SESE Block
Quite simple:1. When the OR-split of the block is reached, the enabled gates are
determined.2. Each enabled gate has a 1:1 correspondence with a sequence flow
entering into the OR-join of the block.3. The OR-join therefore knows which execution threads need to be
synchronized, and where they are located.4. It can be then realize as a simple variant of an AND-join.
This can be generalized to non-block-structured processes, provided thatthey do not contain loops indirectly producing work that goes back intothe OR-join.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 76 / 81
OR-Join in the General Case
Do you like paradoxes?
Vicious circle (adapted from van der Aalst et. al)
A1
B1 B2
A2
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 77 / 81
General Execution Semantics for OR-Join
From the BPMN official documentation. . .
An Inclusive Gateway is activated if:• At least one incoming Sequence Flow has at least one token and• For every directed path formed by sequence flow that
I starts with a Sequence Flow f of the diagram that has a token,I ends with an incoming Sequence Flow of the inclusive gateway that has
no token,I does not visit the Inclusive Gateway
then there is also a directed path formed by Sequence Flow thatI starts with f ,I ends with an incoming Sequence Flow of the inclusive gateway that has
a token, andI does not visit the Inclusive Gateway.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 78 / 81
Other Forms of Synchronization
Consider another variant of the contract example seen before.
ExampleOnce a contract is drafted, a financial and technical reviews are conductedin parallel. As soon as one of the two ends, an executive review must beconducted as well. When all reviews are finished, the contract is finalized.
QuestionHow to enable an activity as soon as the first among two other activitiescompletes?
• A simple merge does not work, because it would be triggered multipletimes!
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 79 / 81
Discriminator
DiscriminatorPasses the first incoming sequence flows and blocks all those that arrivelater.
• It resets when all incoming flows arrive.
It does not have a specific symbol in BPMN. There is however the notionof “complex gateway” (∗ decoration) to represent advanced forms ofsynchronization like the discriminator one.
GeneralizationN-out of-M join.
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 80 / 81
Contract Drafting with Discriminator
ExampleOnce a contract is drafted, a financial and technical reviews are conductedin parallel. As soon as one of the two ends, an executive review must beconducted as well. When all reviews are finished, the contract is finalized.
Draft contract
Do financial
check
Do technical
review
Revise financial
terms
Finalize contract
Whichever completes first
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 81 / 81
Contract Drafting with Discriminator
ExampleOnce a contract is drafted, a financial and technical reviews are conductedin parallel. As soon as one of the two ends, an executive review must beconducted as well. When all reviews are finished, the contract is finalized.
Draft contract
Do financial
check
Do technical
review
Revise financial
terms
Finalize contract
Whichever completes first
Marco Montali (unibz) DPM - 8c.BPMN - analytic A.Y. 2015/2016 81 / 81