<?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=BPMN_v1.1_-_Loops</id>
	<title>BPMN v1.1 - Loops - 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=BPMN_v1.1_-_Loops"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=BPMN_v1.1_-_Loops&amp;action=history"/>
	<updated>2026-04-30T07:03:38Z</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=BPMN_v1.1_-_Loops&amp;diff=7827&amp;oldid=prev</id>
		<title>Bernard Szlachta at 02:41, 17 November 2012</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=BPMN_v1.1_-_Loops&amp;diff=7827&amp;oldid=prev"/>
		<updated>2012-11-17T02:41:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Cat|OCEB B200.3 - BPMN|02}}&lt;br /&gt;
{{Cat|OCEB T200.2 - BPMN|02}}&lt;br /&gt;
{{OCEB Links}}&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;false&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; &amp;gt;&lt;br /&gt;
;title: BPMN 2.0 BPMN v1.1 - Loops&lt;br /&gt;
;author: Bernard Szlachta (NobleProg Ltd)&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Loops ⌘==&lt;br /&gt;
* Standard Loop&lt;br /&gt;
** While&lt;br /&gt;
** Until&lt;br /&gt;
* Multi Instance&lt;br /&gt;
** Parallel&lt;br /&gt;
** Sequential&lt;br /&gt;
&lt;br /&gt;
== Standard Loop ⌘==&lt;br /&gt;
* have a boolean expression that is evaluated after each cycle of the loop&lt;br /&gt;
* If the expression is still True, then the loop will continue&lt;br /&gt;
&lt;br /&gt;
;While (TestTime = Before)&lt;br /&gt;
* expression is evaluated before the activity is performed&lt;br /&gt;
* the activity may not actually be performed&lt;br /&gt;
&lt;br /&gt;
;Until (TestTime = After)&lt;br /&gt;
* the activity will be performed at least once.&lt;br /&gt;
&lt;br /&gt;
== Standard Loop Attributes ⌘==&lt;br /&gt;
* have a boolean expression that is evaluated &amp;#039;&amp;#039;after each&amp;#039;&amp;#039; cycle of the loop&lt;br /&gt;
* If the expression is still True, then the loop will continue&lt;br /&gt;
* There are two variations of the loop, which reflect the programming constructs of &amp;#039;&amp;#039;&amp;#039;while&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;until&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;while&amp;#039;&amp;#039;&amp;#039; loop will evaluate the expression before the activity is performed, which means that the activity may not actually be performed&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;until&amp;#039;&amp;#039;&amp;#039; loop will evaluate the expression after the activity has been performed, which means that the activity will be performed at least once&lt;br /&gt;
&lt;br /&gt;
;LoopCondition : Expression&lt;br /&gt;
* MUST have a &amp;#039;&amp;#039;&amp;#039;boolean&amp;#039;&amp;#039;&amp;#039; Expression to be evaluated&lt;br /&gt;
* plus the timing when the expression SHALL be evaluated (TestTime)&lt;br /&gt;
&lt;br /&gt;
; LoopCounter : Integer&lt;br /&gt;
* used at runtime to count the number of loops and is automatically updated by the process engine&lt;br /&gt;
* The LoopCounter attribute MUST be incremented at the start of a loop&lt;br /&gt;
* The modeler may use the attribute in the LoopCondition Expression (e.g. LoopCounter &amp;lt;= 12)&lt;br /&gt;
&lt;br /&gt;
;LoopMaximum (0-1) : Integer&lt;br /&gt;
* The Maximum an optional attribute that provides is a simple way to add a cap to the number of loops&lt;br /&gt;
* This SHALL be added to the Expression defined in the LoopCondition&lt;br /&gt;
&lt;br /&gt;
; TestTime (Before | &amp;#039;&amp;#039;&amp;#039;After&amp;#039;&amp;#039;&amp;#039;) : String&lt;br /&gt;
* if &amp;#039;&amp;#039;&amp;#039;Before&amp;#039;&amp;#039;&amp;#039; the activity begins are equivalent to a programming &amp;#039;&amp;#039;&amp;#039;while&amp;#039;&amp;#039;&amp;#039; function.&lt;br /&gt;
* if &amp;#039;&amp;#039;&amp;#039;After&amp;#039;&amp;#039;&amp;#039; the activity finishes are equivalent to a programming &amp;#039;&amp;#039;&amp;#039;until&amp;#039;&amp;#039;&amp;#039; function.&lt;br /&gt;
&lt;br /&gt;
== Multi-Instance Loop Attributes ⌘==&lt;br /&gt;
* Multi-Instance loops reflect the programming construct for each&lt;br /&gt;
* The loop expression for a Multi-Instance loop is a numeric expression evaluated &amp;#039;&amp;#039;&amp;#039;only once&amp;#039;&amp;#039;&amp;#039; before the activity is performed&lt;br /&gt;
* The result of the expression evaluation will be an integer that will specify the number of times that the activity will be repeated&lt;br /&gt;
&lt;br /&gt;
;MI_Condition : Expression &lt;br /&gt;
* MultiInstance Loops MUST have a numeric Expression to be evaluated&lt;br /&gt;
* the Expression MUST resolve to an integer&lt;br /&gt;
&lt;br /&gt;
;LoopCounter : Integer &lt;br /&gt;
* only applied for Sequential MultiInstance Loops and for processes that are being executed by a process engine&lt;br /&gt;
* updated at runtime by a process engine to count the number of loops as they occur&lt;br /&gt;
* MUST be incremented at the start of a loop&lt;br /&gt;
* Unlike a Standard loop, the modeler does not use this attribute in the MI_Condition Expression, but it can be used for tracking the status of a loop&lt;br /&gt;
&lt;br /&gt;
; MI_Ordering (&amp;#039;&amp;#039;&amp;#039;Sequential&amp;#039;&amp;#039;&amp;#039; | Parallel) : String&lt;br /&gt;
* defines whether the loop instances will be performed sequentially or in parallel&lt;br /&gt;
* Sequential MI_Ordering is a more traditional loop (e.g. for i=1 to 10)&lt;br /&gt;
* Parallel MI_Ordering is equivalent to multi-instance specifications that other notations, such as UML Activity Diagrams use&lt;br /&gt;
* If set to Parallel, the Parallel marker SHALL replace the Loop Marker at the bottom center of the activity shape&lt;br /&gt;
&lt;br /&gt;
=== FlowCondition ⌘===&lt;br /&gt;
&lt;br /&gt;
; MI_FlowCondition (None | One | All | Complex) All : String [Parallel MI_Ordering only]&lt;br /&gt;
* This attribute is equivalent to using a Gateway to control the flow past a set of parallel paths.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;None&amp;#039;&amp;#039;&amp;#039; is the same as &amp;#039;&amp;#039;&amp;#039;uncontrolled flow&amp;#039;&amp;#039;&amp;#039; (no Gateway) and means that &amp;#039;&amp;#039;&amp;#039;all activity instances SHALL generate a token&amp;#039;&amp;#039;&amp;#039; that will continue when that instance is completed.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;One&amp;#039;&amp;#039;&amp;#039; is the same as an &amp;#039;&amp;#039;&amp;#039;Exclusive Gateway&amp;#039;&amp;#039;&amp;#039; and means that the &amp;#039;&amp;#039;&amp;#039;Token SHALL continue past the activity after only one of the activity instances has completed&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** The activity will continue its other instances, but additional Tokens MUST NOT be passed from the activity.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;All&amp;#039;&amp;#039;&amp;#039; is the same as a Parallel Gateway and means that the Token SHALL continue past the activity after all of the activity instances have completed.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Complex&amp;#039;&amp;#039;&amp;#039; is similar to that of a Complex Gateway. The ComplexMI_FlowCondition attribute will determine the Token flow.&lt;br /&gt;
&lt;br /&gt;
; ComplexMI_FlowCondition (0-1) : Expression [Complex MI_FlowCondition only]&lt;br /&gt;
* If the MI_FlowCondition attribute is set to “Complex,” then an Expression Must be entered&lt;br /&gt;
* MAY reference Process data&lt;br /&gt;
* be evaluated after each iteration of the Activity and SHALL resolve to a boolean&lt;br /&gt;
* If the result of the expression evaluation is TRUE, then a Token will be sent down the activity’s outgoing Sequence Flow&lt;br /&gt;
* Otherwise, no Token for that iteration will be sent&lt;/div&gt;</summary>
		<author><name>Bernard Szlachta</name></author>
	</entry>
</feed>