Illustration of BPMN Loop 
Types 
Standard Loop 
Multi Instance – Parallel 
Multi Instance – Sequential 
Max Tay, OCEB® Business Advanced, CBPP® 
© 2014 Max Tay, MaxConsilium Pty Ltd
BPMN Loops 
 Loop is a characteristics, 
LoopCharacteristics, that can be applied 
to any activity. 
 There are three types of loop in BPMN: 
◦ Standard loop 
◦ Multi instance parallel 
◦ Multi instance sequential 
© 2014 Max Tay, MaxConsilium Pty Ltd
Attributes of Standard Loop 
Attribute Description 
loopCondition: boolean A flag to control the loop where the activity will loop as 
long as the flag is true. 
testBefore: boolean A flag to control whether the loop condition is evaluated at 
the beginning or at the end of the iteration. 
© 2014 Max Tay, MaxConsilium Pty Ltd 
loopMaximum: number 
(optional) 
A numeric cap can be optionally specified.
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
testBefore: false 
© 2014 Max Tay, MaxConsilium Pty Ltd
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#1 
testBefore: false
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#1 
testBefore: false
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
Loop 
condition 
is true 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#1 
testBefore: false
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#2 
testBefore: false
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#2 
testBefore: false
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#2 
testBefore: false 
Loop 
condition 
is true
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#3 
testBefore: false
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#3 
testBefore: false
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#3 
testBefore: false 
Loop 
condition 
is false
Standard Loop 
Call 
subprocess 
Sub process 
Do task 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Iteration 
#3 
testBefore: false 
Loop 
condition 
is false
Attributes of Multi Instance 
Note: This is not a complete list of all the attributes for multi instance. 
Attribute Description 
isSequential: boolean A flag to control sequential or in parallel instances. 
loopCardinality: number This controls the number of instances that will be created. 
© 2014 Max Tay, MaxConsilium Pty Ltd 
loopDataInputRef: 
data input 
Specifies the collection of data, which will be used by the multi 
instances. Also controls the number of instances that will be 
created – one instance per item. 
loopDataOutputRef: 
data output 
Specifies the collection of data, which will be produced by the 
multi instances. 
inputDataItem: data 
input 
Represents data for each instance of the collection stored in the 
loopDataInput. Number of item depends on number of instance. 
outputDataItem: data 
output 
Represent sdata for each instance of the collection stored in the 
loopDataOutput. Number of item depends on number of instance.
Attributes of Multi Instance 
(cont’) 
Attribute Description 
© 2014 Max Tay, MaxConsilium Pty Ltd 
behavior: none / one / all / 
complex 
Specifies when events is thrown from an instance that is 
about to complete. 
• None – the event defined in the 
noneBehaviorEventRef will be thrown for each 
instance completed. 
• One – the event defined in the oneBehaviorEventRef 
will be thrown upon the first instance completed. 
• All – no event is thrown, a token is produced after 
completion of all instances. 
• Complex – the complexBehaviorDefinition is checked 
to determine if and which events to throw. 
noneBehaviorEventRef: 
event 
The event that is thrown when the behavior is set to None 
and an instance has completed. 
oneBehaviorEventRef: 
event 
The event that is thrown when the behavior is set to One 
and an instance has completed. 
complexBehaviorDefinition: Controls when and which events are thrown where 
behavior is set to Complex. 
completionCondition: expression Defines a boolean expression that when evaluated to 
true, cancels the remaining instances and produces a 
token.
Multi Instance – Parallel 
Call 
subprocess 
isSequential: false 
loopCardinality: 4 
behavior: all 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
Do task
Multi Instance – Parallel 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: false 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task
Multi Instance – Parallel 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: false 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task
Multi Instance – Parallel 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: false 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task 
Waiting for all 
instances to 
complete
Multi Instance – Parallel 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: false 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task 
All instances 
completed
Multi Instance – Parallel 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: false 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task 
All instances 
completed
Multi Instance – Sequential 
Call 
subprocess 
isSequential: true 
loopCardinality: 4 
behavior: all 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
Do task
Multi Instance – Sequential 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: true 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task
Multi Instance – Sequential 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: true 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task 
Waiting for all 
instances to 
complete
Multi Instance – Sequential 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: true 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task 
Waiting for all 
instances to 
complete
Multi Instance – Sequential 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: true 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task 
Waiting for all 
instances to 
complete
Multi Instance – Sequential 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: true 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task
Multi Instance – Sequential 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: true 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task 
All instances 
completed
Multi Instance – Sequential 
Call 
subprocess 
© 2014 Max Tay, MaxConsilium Pty Ltd 
Subprocess 
isSequential: true 
loopCardinality: 4 
behavior: all 
Do task 
Do task 
Do task 
Do task 
All instances 
completed
© 2014 Max Tay, MaxConsilium Pty Ltd

Illustration of BPMN Loop Types

  • 1.
    Illustration of BPMNLoop Types Standard Loop Multi Instance – Parallel Multi Instance – Sequential Max Tay, OCEB® Business Advanced, CBPP® © 2014 Max Tay, MaxConsilium Pty Ltd
  • 2.
    BPMN Loops Loop is a characteristics, LoopCharacteristics, that can be applied to any activity.  There are three types of loop in BPMN: ◦ Standard loop ◦ Multi instance parallel ◦ Multi instance sequential © 2014 Max Tay, MaxConsilium Pty Ltd
  • 3.
    Attributes of StandardLoop Attribute Description loopCondition: boolean A flag to control the loop where the activity will loop as long as the flag is true. testBefore: boolean A flag to control whether the loop condition is evaluated at the beginning or at the end of the iteration. © 2014 Max Tay, MaxConsilium Pty Ltd loopMaximum: number (optional) A numeric cap can be optionally specified.
  • 4.
    Standard Loop Call subprocess Sub process Do task testBefore: false © 2014 Max Tay, MaxConsilium Pty Ltd
  • 5.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #1 testBefore: false
  • 6.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #1 testBefore: false
  • 7.
    Standard Loop Call subprocess Sub process Do task Loop condition is true © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #1 testBefore: false
  • 8.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #2 testBefore: false
  • 9.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #2 testBefore: false
  • 10.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #2 testBefore: false Loop condition is true
  • 11.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #3 testBefore: false
  • 12.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #3 testBefore: false
  • 13.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #3 testBefore: false Loop condition is false
  • 14.
    Standard Loop Call subprocess Sub process Do task © 2014 Max Tay, MaxConsilium Pty Ltd Iteration #3 testBefore: false Loop condition is false
  • 15.
    Attributes of MultiInstance Note: This is not a complete list of all the attributes for multi instance. Attribute Description isSequential: boolean A flag to control sequential or in parallel instances. loopCardinality: number This controls the number of instances that will be created. © 2014 Max Tay, MaxConsilium Pty Ltd loopDataInputRef: data input Specifies the collection of data, which will be used by the multi instances. Also controls the number of instances that will be created – one instance per item. loopDataOutputRef: data output Specifies the collection of data, which will be produced by the multi instances. inputDataItem: data input Represents data for each instance of the collection stored in the loopDataInput. Number of item depends on number of instance. outputDataItem: data output Represent sdata for each instance of the collection stored in the loopDataOutput. Number of item depends on number of instance.
  • 16.
    Attributes of MultiInstance (cont’) Attribute Description © 2014 Max Tay, MaxConsilium Pty Ltd behavior: none / one / all / complex Specifies when events is thrown from an instance that is about to complete. • None – the event defined in the noneBehaviorEventRef will be thrown for each instance completed. • One – the event defined in the oneBehaviorEventRef will be thrown upon the first instance completed. • All – no event is thrown, a token is produced after completion of all instances. • Complex – the complexBehaviorDefinition is checked to determine if and which events to throw. noneBehaviorEventRef: event The event that is thrown when the behavior is set to None and an instance has completed. oneBehaviorEventRef: event The event that is thrown when the behavior is set to One and an instance has completed. complexBehaviorDefinition: Controls when and which events are thrown where behavior is set to Complex. completionCondition: expression Defines a boolean expression that when evaluated to true, cancels the remaining instances and produces a token.
  • 17.
    Multi Instance –Parallel Call subprocess isSequential: false loopCardinality: 4 behavior: all © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess Do task
  • 18.
    Multi Instance –Parallel Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: false loopCardinality: 4 behavior: all Do task Do task Do task Do task
  • 19.
    Multi Instance –Parallel Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: false loopCardinality: 4 behavior: all Do task Do task Do task Do task
  • 20.
    Multi Instance –Parallel Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: false loopCardinality: 4 behavior: all Do task Do task Do task Do task Waiting for all instances to complete
  • 21.
    Multi Instance –Parallel Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: false loopCardinality: 4 behavior: all Do task Do task Do task Do task All instances completed
  • 22.
    Multi Instance –Parallel Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: false loopCardinality: 4 behavior: all Do task Do task Do task Do task All instances completed
  • 23.
    Multi Instance –Sequential Call subprocess isSequential: true loopCardinality: 4 behavior: all © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess Do task
  • 24.
    Multi Instance –Sequential Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: true loopCardinality: 4 behavior: all Do task Do task Do task Do task
  • 25.
    Multi Instance –Sequential Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: true loopCardinality: 4 behavior: all Do task Do task Do task Do task Waiting for all instances to complete
  • 26.
    Multi Instance –Sequential Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: true loopCardinality: 4 behavior: all Do task Do task Do task Do task Waiting for all instances to complete
  • 27.
    Multi Instance –Sequential Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: true loopCardinality: 4 behavior: all Do task Do task Do task Do task Waiting for all instances to complete
  • 28.
    Multi Instance –Sequential Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: true loopCardinality: 4 behavior: all Do task Do task Do task Do task
  • 29.
    Multi Instance –Sequential Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: true loopCardinality: 4 behavior: all Do task Do task Do task Do task All instances completed
  • 30.
    Multi Instance –Sequential Call subprocess © 2014 Max Tay, MaxConsilium Pty Ltd Subprocess isSequential: true loopCardinality: 4 behavior: all Do task Do task Do task Do task All instances completed
  • 31.
    © 2014 MaxTay, MaxConsilium Pty Ltd