<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=OCEB2BI_02_Business_Process_Modeling_with_BPMN</id>
	<title>OCEB2BI 02 Business Process Modeling with BPMN - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=OCEB2BI_02_Business_Process_Modeling_with_BPMN"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=OCEB2BI_02_Business_Process_Modeling_with_BPMN&amp;action=history"/>
	<updated>2026-05-25T09:08:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=OCEB2BI_02_Business_Process_Modeling_with_BPMN&amp;diff=34887&amp;oldid=prev</id>
		<title>Filip Stachecki: /* Exclusive Gateway⌘ */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=OCEB2BI_02_Business_Process_Modeling_with_BPMN&amp;diff=34887&amp;oldid=prev"/>
		<updated>2016-06-09T10:33:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Exclusive Gateway⌘&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Private]]&lt;br /&gt;
[[Category:OCEB2]]&lt;br /&gt;
==Module 2. Business Process Modeling with &amp;lt;br&amp;gt; BPMN⌘==&lt;br /&gt;
===References⌘===&lt;br /&gt;
* Business Process Model and Notation (BPMN), V2.0 &lt;br /&gt;
* Debevoise, Execution Semantics: Moving BPMN to Execution, White Paper.&lt;br /&gt;
* Kurz, Menge, and Misiak, Diagram Interchangeability in BPMN 2, White Paper.&lt;br /&gt;
&lt;br /&gt;
===Language Elements⌘===&lt;br /&gt;
====Data Modeling⌘====&lt;br /&gt;
* Data modeling is used to describe physical or information items that are created, manipulated, and used during the execution of a Process.&lt;br /&gt;
* Data can be modeled using: Data Objects, Data Inputs, Data Outputs, Data Stores, Data Associations, ....&lt;br /&gt;
=====Data Objects⌘=====&lt;br /&gt;
[[File:BPMNDataObject.png]]&lt;br /&gt;
* The primary construct for modeling data within the Process flow.&lt;br /&gt;
* Data Associations are used to move data between Data Objects.&lt;br /&gt;
* Tokens do not flow along a Data Association.&lt;br /&gt;
=====Data Object - collection⌘=====&lt;br /&gt;
:[[File:ClipCapIt-140729-110334.PNG]]&lt;br /&gt;
=====Data Object - Lifecycle and Accessibility⌘=====&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Lifecycle&amp;#039;&amp;#039;&amp;#039; of a Data Object is tied to the lifecycle of its parent Process or Sub-Process. &lt;br /&gt;
* When a Process or Sub-Process is instantiated, all Data Objects contained within it are also instantiated. &lt;br /&gt;
* When a Process or Sub-Process instance is disposed, all Data Object instances contained within it are also disposed. At this point the data within these instances are no longer available.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Accessibility&amp;#039;&amp;#039;&amp;#039; of a Data Object is driven by its lifecycle. &lt;br /&gt;
* The data within a Data Object can only be accessed when there is guaranteed to be a live Data Object instance present. &lt;br /&gt;
* Data Object can only be accessed by its &amp;#039;&amp;#039;&amp;#039;immediate parent&amp;#039;&amp;#039;&amp;#039; (Process or Sub-Process), or by &amp;#039;&amp;#039;&amp;#039;its sibling Flow Elements and their children&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=====Lifecycle and Accessibility Example 1⌘=====&lt;br /&gt;
[[File:ClipCapIt-151130-223709.PNG]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
“Data object 1” can be accessed by “Process A,” “Task A,” “Sub-Process A,” “Task B,” “Sub-Process B,” “Sub-Process C,” “Task C,” and “Task D.”&lt;br /&gt;
“Data object 2” can be accessed by: “Sub-Process A” and “Task B.”&lt;br /&gt;
“Data object 3” can be accessed by: “Sub-Process B,” “Sub-Process C,” “Task C,” and “Task D.”&lt;br /&gt;
“Data object 4” can be accessed by: “Sub-Process C” and “Task C.”&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lifecycle and Accessibility Example 2⌘=====&lt;br /&gt;
[[File:DataObjectLifecycleAndAccessibilityExample.png]]&lt;br /&gt;
&lt;br /&gt;
=====Data Input, Data Output⌘=====&lt;br /&gt;
[[File:BPMNDataObjectInOut.png]]&lt;br /&gt;
&lt;br /&gt;
* Activities and Processes often need data in order to execute. &lt;br /&gt;
* In addition they can produce data during or as a result of execution.&lt;br /&gt;
* Data requirements are captured as Data Inputs. &lt;br /&gt;
* Data that is produced is captured using Data Outputs&lt;br /&gt;
&lt;br /&gt;
=====Data Store⌘=====&lt;br /&gt;
[[File:BPMNDataStore.png]][[File:DataStoreAndAssociations.png]]&lt;br /&gt;
* A DataStore provides a mechanism for Activities to get or update stored information that will persist beyond the scope of the Process.&lt;br /&gt;
* Represents a single unit of information (e.g. database record)&lt;br /&gt;
&lt;br /&gt;
====Global Task and Global Process⌘====&lt;br /&gt;
* A Global Task is a reusable, atomic Task definition that can be called from within any Process by a Call Activity.&lt;br /&gt;
* A Global Task is not defined within a Process, but is callable element.&lt;br /&gt;
::[[File:ClipCapIt-151201-205547.PNG]]&lt;br /&gt;
* The types of Global Tasks are only a subset of standard Tasks types: &amp;#039;&amp;#039;&amp;#039;GlobalUserTask&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;GlobalManualTask&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;GlobalScriptTask&amp;#039;&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;&amp;#039;GlobalBusinessRuleTask&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* A Global Process can be called from another Process.&lt;br /&gt;
** Question: Do you know any example of non-global process?&lt;br /&gt;
&lt;br /&gt;
=====Call Activity⌘=====&lt;br /&gt;
:[[File:ClipCapIt-140729-124234.PNG]]&lt;br /&gt;
* A Call Activity is a type of Activity that identifies a point in the Process where a global Process or a Global Task is used.&lt;br /&gt;
&lt;br /&gt;
====Events: Escalation, Compensation⌘====&lt;br /&gt;
=====Escalation⌘=====&lt;br /&gt;
[[File:EscalationEvents.png]]&lt;br /&gt;
* An Escalation identifies a business situation that a Process might need to react to.&lt;br /&gt;
*In contrast to an Error, an Escalation by default is assumed to not abort the Activity to which the boundary Event is attached.&lt;br /&gt;
&lt;br /&gt;
=====Escalation Example⌘=====&lt;br /&gt;
[[File:Escalation.png]]&lt;br /&gt;
=====Compensation⌘=====&lt;br /&gt;
[[File:CompensationSimpeExample.png]]&lt;br /&gt;
* Compensation is &amp;#039;&amp;#039;&amp;#039;undoing steps&amp;#039;&amp;#039;&amp;#039; that were &amp;#039;&amp;#039;&amp;#039;already successfully completed&amp;#039;&amp;#039;&amp;#039;, because their results and possibly side effects are no longer desired and need to be reversed.&lt;br /&gt;
* If an Activity is still active, it cannot be compensated, but rather needs to be canceled.&lt;br /&gt;
* Compensation is not an error handling&lt;br /&gt;
* A compensation handler performs the steps necessary to reverse the effects of an Activity.&lt;br /&gt;
&lt;br /&gt;
=====Compensation handler⌘=====&lt;br /&gt;
[[File:Compensation.png]]&lt;br /&gt;
* A compensation handler connected via a boundary Event can only perform “black-box” compensation of the original Activity. &lt;br /&gt;
* Compensation Activity is connected to the boundary Event through an Association. &lt;br /&gt;
* The Compensation Activity can be either a &amp;#039;&amp;#039;&amp;#039;Task&amp;#039;&amp;#039;&amp;#039; or a &amp;#039;&amp;#039;&amp;#039;Sub-Process&amp;#039;&amp;#039;&amp;#039;, has a marker to show that it is used for compensation only and is outside the normal flow of the Process.&lt;br /&gt;
=====Event Sub-Processes⌘=====&lt;br /&gt;
[[File:EventSubProcessExample.png]] [[File:EventSubProcessExample2.png]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Event Sub-Processes&amp;#039;&amp;#039;&amp;#039; allow to handle an Event within the context of a given &amp;#039;&amp;#039;&amp;#039;Sub-Processes&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Process&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
* An Event Sub-Process &amp;#039;&amp;#039;&amp;#039;always begins with a Start Event&amp;#039;&amp;#039;&amp;#039;, followed by Sequence Flows. &lt;br /&gt;
* Event Sub-Processes are a special kind of Sub-Process: they create a scope and are instantiated like a Sub-Process, but they are not instantiated by normal control flow but only when the associated Start Event is triggered. &lt;br /&gt;
=====Event Sub-Processes⌘=====&lt;br /&gt;
* Event Sub-Processes are self-contained and MUST not be connected to the rest of the Sequence Flows in the Sub-Processes; also they cannot have attached boundary Events. &lt;br /&gt;
* They run in the context of the Sub-Process, and thus have access to its context.&lt;br /&gt;
* An Event Sub-Process cancels execution of the enclosing Sub-Process, if the isInterrupting attribute of its Start Event is set. If the isInterrupting attribute is not set, execution of the enclosing Sub-Process continues in parallel to the Event Sub-Process.&lt;br /&gt;
&lt;br /&gt;
=====Compensation Using Event Sub-Process⌘=====&lt;br /&gt;
[[File:CompensationExample.png]] &lt;br /&gt;
&lt;br /&gt;
A Compensation Event Sub-Process can: &amp;#039;&amp;#039;&amp;#039;access data&amp;#039;&amp;#039;&amp;#039; that is part of its parent, recursively &amp;#039;&amp;#039;&amp;#039;trigger compensation&amp;#039;&amp;#039;&amp;#039; for Activities contained in its parent, contain &amp;#039;&amp;#039;&amp;#039;compensation start event&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
====Complex Gateway⌘====&lt;br /&gt;
[[File:ComplexGateway.png]]&lt;br /&gt;
*The Complex Gateway can be used to model complex synchronization behavior&lt;br /&gt;
* For example, it could specify that tokens on three out of five incoming Sequence Flows are needed to activate the Gateway.&lt;br /&gt;
&lt;br /&gt;
[[File:ComplexGatewayExample.png|600px]]&lt;br /&gt;
=====Complex Gateway Attributes⌘=====&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;activationCondition&amp;#039;&amp;#039;&amp;#039;: Expression&amp;lt;br/&amp;gt;Determines which combination of incoming tokens will be synchronized for activation of the Gateway.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;activationCount&amp;#039;&amp;#039;&amp;#039;: integer&amp;lt;br/&amp;gt;Refers at runtime to the number of tokens that are present on an incoming Sequence Flow of the Complex Gateway.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;waitingForStart&amp;#039;&amp;#039;&amp;#039;: boolean = true&amp;lt;br/&amp;gt;Represents the internal state of the Complex Gateway. It is either waiting for start (=true) or waiting for reset (=false).&lt;br /&gt;
&lt;br /&gt;
=====Complex Gateway Example⌘=====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:ComplexGatewayExample2.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Questions: &amp;lt;br/&amp;gt;&lt;br /&gt;
1. What kind of behavior is used for a complex gateway (AND, OR, XOR)?&amp;lt;br/&amp;gt;&lt;br /&gt;
2. What is the activation condition here?&amp;lt;br/&amp;gt;&lt;br /&gt;
3. When is waitingForStart value changed to false?&amp;lt;br/&amp;gt;&lt;br /&gt;
4. What happens if no outgoing condition evaluates to true?&amp;lt;br/&amp;gt;&lt;br /&gt;
5. What happens if the activation condition never becomes true?&amp;lt;br/&amp;gt;&lt;br /&gt;
6. What does the activation count describe?&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
What kind of behavior is used for a complex gateway (AND, OR, XOR)?&lt;br /&gt;
- OR sometimes with additional restrictions&lt;br /&gt;
What is the activation condition here?&lt;br /&gt;
- 2 out of 4&lt;br /&gt;
When is waitingForStart value changed to false?&lt;br /&gt;
- attribute waitingForStart is initially true and becomes false after activation.&lt;br /&gt;
What happens if no outgoing condition evaluates to true?&lt;br /&gt;
- Exception is thrown&lt;br /&gt;
What happens if the activation condition never becomes true?&lt;br /&gt;
tokens are blocked indefinitely at the Complex Gateway, which MAY cause a deadlock of the entire Process.&lt;br /&gt;
What does the activation count describe?&lt;br /&gt;
Refers at runtime to the number of tokens that are present on an incoming Sequence Flow of the Complex Gateway&lt;br /&gt;
&lt;br /&gt;
Each incoming flow (gate?) of the Complex Gateway has an attribute activationCount, which can be used in an Expression as an integer-valued variable. This variable represents the number of tokens that are currently on the respective incoming Sequence Flows.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=====Complex Gateway Attributes⌘=====&lt;br /&gt;
&amp;lt;table border=&amp;quot;1px&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;tr bgcolor=&amp;quot;#BDBDBD&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:150px&amp;quot;&amp;gt;Attribute Name&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:300px&amp;quot;&amp;gt;Description/Usage&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;activationCondition: Expression [0..1]&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Determines which combination of incoming tokens will be synchronized for activation of the Gateway.&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;default: SequenceFlow [0..1]&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;The Sequence Flow that will receive a token when none of the conditionExpressions on other Sequence Flows evaluate to true.	The default Sequence Flow should not have a conditionExpression.&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;activationCount: integer&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;Refers at runtime to the number of tokens that are present on an incoming Sequence Flow of the Complex Gateway.&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;height:38px&amp;quot;&amp;gt;waitingForStart: boolean = true&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:499px&amp;quot;&amp;gt;Represents the internal state of the Complex Gateway. It is either waiting for start (=true) or waiting for reset (=false).&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Advanced BPMN Usage⌘===&lt;br /&gt;
====Different types of loops⌘====&lt;br /&gt;
* Activities may be repeated sequentially, behaving like a loop (&amp;#039;&amp;#039;&amp;#039;Standard Loop Characteristics&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* Desired number of Activity instances that may execute in parallel or may be sequential can be specified. (&amp;#039;&amp;#039;&amp;#039;Multi-Instance Characteristics&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
===== Standard Loop ⌘=====&lt;br /&gt;
[[File:LoopingActivity.png]]&lt;br /&gt;
*The Activity will loop as long as the boolean &amp;#039;&amp;#039;loopCondition&amp;#039;&amp;#039; is true&lt;br /&gt;
*The condition is evaluated for every loop iteration, and MAY be evaluated at the beginning or at the end of the iteration (&amp;#039;&amp;#039;testBefore&amp;#039;&amp;#039; = true lub &amp;#039;&amp;#039;testBefore&amp;#039;&amp;#039; = false)&lt;br /&gt;
*In addition, a numeric cap can be optionally specified - &amp;#039;&amp;#039;loopMaximum&amp;#039;&amp;#039;&lt;br /&gt;
*Loop activity instances are sequentially executed - one after another.&lt;br /&gt;
*Loop Activity is similar to DO WHILE loop.&lt;br /&gt;
&lt;br /&gt;
QUESTION: How many times can looping task be executed?&lt;br /&gt;
&lt;br /&gt;
===== Multi-Instance Activity⌘=====&lt;br /&gt;
&lt;br /&gt;
[[File:Element_multiple_instances_parallel.png|100px]] [[File:Figure10-48-activity-multi-instance-marker-for-parallel-instances.png|100px]] Multi-Instance parallel &lt;br /&gt;
&lt;br /&gt;
[[File:Element_multiple_instances_sequential.png|100px]] [[File:Figure10-49-activity-multi-instance-marker-for-sequential-instances.png|100px]] Multi-Instance sequential &lt;br /&gt;
*The instances MAY execute in &amp;#039;&amp;#039;&amp;#039;parallel&amp;#039;&amp;#039;&amp;#039; or MAY be &amp;#039;&amp;#039;&amp;#039;sequential&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
*Multi-Instance Activites are used with collection of items&lt;br /&gt;
*Multi-Instance Activity is similar to FOR EACH loop&lt;br /&gt;
&lt;br /&gt;
=====Multi-Instance Activity Example⌘=====&lt;br /&gt;
&lt;br /&gt;
[[File:MultiInstanceActivityExample.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=====Multi-Instance Loop core attributes⌘=====&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:253px&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;isSequential&amp;lt;/strong&amp;gt;: boolean = false&amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:361px&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;p&amp;gt;This attribute is a flag that controls whether the &amp;lt;strong&amp;gt;Activity &amp;lt;/strong&amp;gt;&amp;lt;em&amp;gt;instances &amp;lt;/em&amp;gt;will execute sequentially or in parallel.&amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:253px&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;completionCondition&amp;lt;/strong&amp;gt;: Expression [0..1]&amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:361px&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;p&amp;gt;This attribute defines a boolean Expression that when evaluated to &amp;lt;em&amp;gt;true&amp;lt;/em&amp;gt;, cancels the remaining &amp;lt;strong&amp;gt;Activity &amp;lt;/strong&amp;gt;&amp;lt;em&amp;gt;instances &amp;lt;/em&amp;gt;and produces a &amp;lt;em&amp;gt;token&amp;lt;/em&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:253px&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;loopCardinality&amp;lt;/strong&amp;gt;: Expression [0..1]&amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td style=&amp;quot;width:361px&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;p&amp;gt;A numeric Expression that controls the number of &amp;lt;strong&amp;gt;Activity&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;instances&amp;lt;/em&amp;gt; that will be created&amp;lt;/p&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Basic error handling⌘====&lt;br /&gt;
&lt;br /&gt;
[[File:ErrorEvents.png]]&lt;br /&gt;
* An Error is generated when there is a critical problem in the processing of an Activity or when the execution of an Operation failed&lt;br /&gt;
=====Error Example 1⌘=====&lt;br /&gt;
&lt;br /&gt;
[[File:Ex03_ExceptionHandling.png]]&lt;br /&gt;
=====Error Example 2⌘=====&lt;br /&gt;
&lt;br /&gt;
[[File:Ex04_ExceptionHandling.png]]&lt;br /&gt;
&lt;br /&gt;
=====Error and Compensation⌘=====&lt;br /&gt;
[[File:ErrorAndCompensation.png]]&lt;br /&gt;
&lt;br /&gt;
When is &amp;quot;Restore delegate name&amp;quot; activity executed?&lt;br /&gt;
&lt;br /&gt;
====Conversations⌘====&lt;br /&gt;
[[File:SimpleConversation.png]]&lt;br /&gt;
&lt;br /&gt;
====Conversations⌘====&lt;br /&gt;
* Conversation diagram it is a particular usage of a Collaboration diagram.&lt;br /&gt;
* A Conversation is a logical grouping of Message exchanges that can share a Correlation (a business object of interest, e.g, “Order,” “Shipment and Delivery,” and “Invoice”)&lt;br /&gt;
* Processes can appear within the Participants (Pools) of Conversation diagrams, to show how Conversation and Activities are related.&lt;br /&gt;
&amp;lt;!-- * A Conversation is associated with a set of name-value pairs, or a Correlation Key (e.g., “Order Identifier,” “Delivery Identifier”), --&amp;gt;&lt;br /&gt;
=====Conversation elements⌘=====&lt;br /&gt;
[[File:BPMNConversationExample.png]]&lt;br /&gt;
&lt;br /&gt;
:[[File:ClipCapIt-140730-112038.PNG]]&lt;br /&gt;
&lt;br /&gt;
=====Conversation Example 1⌘=====&lt;br /&gt;
[[File:Conversation.png]]&lt;br /&gt;
=====Conversation Example 2⌘=====&lt;br /&gt;
[[File:ClipCapIt-151207-200957.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Choreography⌘====&lt;br /&gt;
[[File:CollaborationChoreography.png|300px]]&lt;br /&gt;
[[File:SimpleChoreography.png|300px]]&lt;br /&gt;
&lt;br /&gt;
====Choreography⌘====&lt;br /&gt;
* A Choreography defines the sequence of interactions between Participants (Pools).&lt;br /&gt;
* Choreographies exist outside of or in between Pools. &lt;br /&gt;
* Choreography does not exist in a single Pool. Each step in the Choreography involves two or more Participants.&lt;br /&gt;
* A Choreography can&amp;#039;t be directly executed.&lt;br /&gt;
* A Choreography does not have a central control mechanism.&lt;br /&gt;
&lt;br /&gt;
=====Choreography Example 1⌘=====&lt;br /&gt;
&lt;br /&gt;
[[File:Choreography.png]]&lt;br /&gt;
&lt;br /&gt;
=====Choreography Task⌘=====&lt;br /&gt;
[[File:BPMNChoregraphyTask.png]]&lt;br /&gt;
* A Choreography Task is an atomic Activity in a Choreography Process. &lt;br /&gt;
* It represents an Interaction, which is one or two Message exchanges between two Participants.&lt;br /&gt;
=====Choreography Task with a Message⌘=====&lt;br /&gt;
[[File:BPMNChoregraphyTask2.png]]&lt;br /&gt;
&lt;br /&gt;
=====Two-way Choreography Task⌘=====&lt;br /&gt;
[[File:BPMNChoregraphyTask2way.png]]&lt;br /&gt;
=====Sequence Flow⌘=====&lt;br /&gt;
[[File:BPMNChoregraphySequenceFlow.png]]&lt;br /&gt;
&lt;br /&gt;
=====Gateways⌘=====&lt;br /&gt;
* Interactions between Participants can happen in sequence, in parallel, or through exclusive selection.&lt;br /&gt;
* Exclusive, Inclusive, Parallel, Event-based and Complex Gateways can be used with some constraints (because the lack of a central mechanism to maintain data visibility, and no central evaluation)&lt;br /&gt;
=====Exclusive Gateway Example⌘=====&lt;br /&gt;
[[File:BPMNChoregraphyExclusiveGatewayExample.png | 850px]]&lt;br /&gt;
&lt;br /&gt;
=====Choreography Example 2 from spec⌘=====&lt;br /&gt;
Business Process Model and Notation (BPMN), Version 2.0, pages 318-319&lt;br /&gt;
&lt;br /&gt;
[[File:ChoreographySpecExample1.png]]&lt;br /&gt;
&lt;br /&gt;
=====Choreography Example 2 from spec⌘=====&lt;br /&gt;
[[File:ChoreographySpecExample2.png]]&lt;br /&gt;
&lt;br /&gt;
====Execution Semantics⌘====&lt;br /&gt;
* BPMN Execution Semantics (BPMN 2.0 spec, Chapter 13) describes how BPMN elements should be executed on an engine.&lt;br /&gt;
* Not all elements can be executed. Non-operational elements like &amp;#039;&amp;#039;&amp;#039;Manual Task&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Abstract Task&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;DataState&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Ad-Hoc Process&amp;#039;&amp;#039;&amp;#039; can be ignored.&lt;br /&gt;
=====Token⌘=====&lt;br /&gt;
* A token is a &amp;#039;&amp;#039;&amp;#039;theoretical&amp;#039;&amp;#039;&amp;#039; concept that is used as an aid to define the behavior of a Process that is being performed. &lt;br /&gt;
* The behavior of Process elements can be defined by describing how they interact with a token as it “traverses” the structure of the Process.&lt;br /&gt;
* However, modeling and execution tools that implement BPMN are &amp;#039;&amp;#039;&amp;#039;NOT REQUIRED&amp;#039;&amp;#039;&amp;#039; to implement any form of token.&lt;br /&gt;
=====Sequence Flow⌘=====&lt;br /&gt;
:[[File:ClipCapIt-140730-122747.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Multiple outgoing Sequence Flows with conditions behaves as an inclusive split. &lt;br /&gt;
* A mix of multiple outgoing Sequence Flows with and without conditions is considered as a combination of a parallel and an inclusive split&lt;br /&gt;
&lt;br /&gt;
=====Exclusive Gateway⌘=====&lt;br /&gt;
[[File:ClipCapIt-160606-201628.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Each token arriving at any incoming Sequence Flows activates the gateway and is routed to exactly one of the outgoing Sequence Flows.&lt;br /&gt;
* If and only if none of the conditions evaluates to true, the token is passed on the default Sequence Flow.&lt;br /&gt;
* In case all conditions evaluate to false and a default flow has not been specified, an exception is thrown.&lt;br /&gt;
&lt;br /&gt;
=====Parallel Gateway⌘=====&lt;br /&gt;
[[File:ClipCapIt-151201-214208.PNG]]&lt;br /&gt;
* The Parallel Gateway is activated if there is at least one token on each incoming Sequence Flow.&lt;br /&gt;
* The Parallel Gateway consumes exactly one token from each incoming Sequence Flow and produces exactly one token at each outgoing Sequence Flow.&lt;br /&gt;
* If there are excess tokens at an incoming Sequence Flow, these tokens remain at this Sequence Flow after execution of the Gateway.&lt;br /&gt;
* The Parallel Gateway cannot throw any exception.&lt;br /&gt;
&lt;br /&gt;
====Diagram Interchange⌘====&lt;br /&gt;
* In order to avoid recreating processes for tools from different vendors, it&amp;#039;s important to have a standard format for exchanging BPMN processes.&lt;br /&gt;
*In BPMN 2.0 processes can be described using two aspects:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;processes models&amp;#039;&amp;#039;&amp;#039; contain the semantics&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;processes diagrams&amp;#039;&amp;#039;&amp;#039; store visual representation of the process models&lt;br /&gt;
&lt;br /&gt;
Process model contains complete definition of processes, process diagram describes an incomplete or partial representation (view) of this model.&lt;br /&gt;
=====BPMN 2.0 XML⌘=====&lt;br /&gt;
&lt;br /&gt;
* BPMN 2.0 file is an executable XML representation of a business process&lt;br /&gt;
[[File:BPMN2.0XMLExample.png]]&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &lt;br /&gt;
&amp;lt;definitions id=&amp;quot;Definition&amp;quot; ... &amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;process processType=&amp;quot;Private&amp;quot; isExecutable=&amp;quot;true&amp;quot; id=&amp;quot;com.sample.bpmn.hello&amp;quot; name=&amp;quot;Hello World&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- nodes --&amp;gt;&lt;br /&gt;
    &amp;lt;scriptTask id=&amp;quot;_2&amp;quot; name=&amp;quot;Hello&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;System.out.println(&amp;quot;Hello World&amp;quot;);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/scriptTask&amp;gt;&lt;br /&gt;
    &amp;lt;startEvent id=&amp;quot;_1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;endEvent id=&amp;quot;_3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;terminateEventDefinition/&amp;gt;&lt;br /&gt;
    &amp;lt;/endEvent&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- connections --&amp;gt;&lt;br /&gt;
    &amp;lt;sequenceFlow id=&amp;quot;_1-_2&amp;quot; sourceRef=&amp;quot;_1&amp;quot; targetRef=&amp;quot;_2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;sequenceFlow id=&amp;quot;_2-_3&amp;quot; sourceRef=&amp;quot;_2&amp;quot; targetRef=&amp;quot;_3&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/process&amp;gt;&lt;br /&gt;
&amp;lt;/source &amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====BPMN 2.0 XML⌘=====&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;bpmndi:BPMNDiagram&amp;gt;&lt;br /&gt;
    &amp;lt;bpmndi:BPMNPlane bpmnElement=&amp;quot;com.sample.bpmn.hello&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;bpmndi:BPMNShape bpmnElement=&amp;quot;_2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;dc:Bounds x=&amp;quot;96&amp;quot; y=&amp;quot;16&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;48&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/bpmndi:BPMNShape&amp;gt;&lt;br /&gt;
      &amp;lt;bpmndi:BPMNShape bpmnElement=&amp;quot;_1&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;dc:Bounds x=&amp;quot;30&amp;quot; y=&amp;quot;22&amp;quot; width=&amp;quot;36&amp;quot; height=&amp;quot;36&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/bpmndi:BPMNShape&amp;gt;&lt;br /&gt;
      &amp;lt;bpmndi:BPMNShape bpmnElement=&amp;quot;_3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;dc:Bounds x=&amp;quot;210&amp;quot; y=&amp;quot;22&amp;quot; width=&amp;quot;36&amp;quot; height=&amp;quot;36&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/bpmndi:BPMNShape&amp;gt;&lt;br /&gt;
      &amp;lt;bpmndi:BPMNEdge bpmnElement=&amp;quot;_1-_2&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;di:waypoint x=&amp;quot;66&amp;quot; y=&amp;quot;40&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;di:waypoint x=&amp;quot;96&amp;quot; y=&amp;quot;40&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/bpmndi:BPMNEdge&amp;gt;&lt;br /&gt;
      &amp;lt;bpmndi:BPMNEdge bpmnElement=&amp;quot;_2-_3&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;di:waypoint x=&amp;quot;176&amp;quot; y=&amp;quot;40&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;di:waypoint x=&amp;quot;210&amp;quot; y=&amp;quot;40&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/bpmndi:BPMNEdge&amp;gt;&lt;br /&gt;
    &amp;lt;/bpmndi:BPMNPlane&amp;gt;&lt;br /&gt;
  &amp;lt;/bpmndi:BPMNDiagram&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source &amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====BPMN 2.0 XML⌘=====&lt;br /&gt;
* BPMN 2.0 defines standarized formats for creating XML files which contains both aspects.&lt;br /&gt;
* This allows exchanging BPMN processes between tools of different vendors.&lt;br /&gt;
* XML BPMN files contain two parts:&lt;br /&gt;
** one or more process models&lt;br /&gt;
** one or more process diagrams&lt;br /&gt;
* BPMN 2.0 processes can be stored using formats defined by XMI or XSD.&lt;br /&gt;
&lt;br /&gt;
=====Interchange Capabilities⌘=====&lt;br /&gt;
From a user point of view, BPMN diagram interchange capable tools should allow: &lt;br /&gt;
* exporting processes to XML file&lt;br /&gt;
* importing processes from XML files &lt;br /&gt;
in such way that the &amp;#039;&amp;#039;&amp;#039;model content and layout are preserved&amp;#039;&amp;#039;&amp;#039; - there is no need to re-draw processes manually.&lt;br /&gt;
=====Interchange Limitations⌘=====&lt;br /&gt;
:[[File:ClipCapIt-140731-171436.PNG]]&lt;br /&gt;
&lt;br /&gt;
BPMN Diagram Interchange provides &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;no mechanism&amp;#039;&amp;#039;&amp;#039; &amp;lt;/span&amp;gt;for:&lt;br /&gt;
* colors of shapes and text&lt;br /&gt;
* decoration of shapes (shadows, gradients, backgrounds)&lt;br /&gt;
* text fonts and size&lt;br /&gt;
* text wrapping&lt;br /&gt;
* thickness and style of lines&lt;br /&gt;
&lt;br /&gt;
=====Interchanging Incomplete Models⌘=====&lt;br /&gt;
* In practice, it is common for models to be interchanged before they are complete.&lt;br /&gt;
* The importing tool is expected to be able to open exported incomplete diagrams.&lt;br /&gt;
&lt;br /&gt;
===Module 2. Questions⌘===&lt;br /&gt;
* What is complex gateway?&lt;br /&gt;
* How many different types of loops are there in BPMN?&lt;br /&gt;
* How can you trigger a compensation?&lt;br /&gt;
* What is Conversation, Choreography?&lt;br /&gt;
* What is an Execution Semantics?&lt;br /&gt;
* What is the difference between process model and process diagram?&lt;/div&gt;</summary>
		<author><name>Filip Stachecki</name></author>
	</entry>
</feed>