Multiple Instances and Data Animator




  • Flavio Corradini, Chiara Muzi, Barbara Re, Lorenzo Rossi, and Francesco Tiezzi. Animating Multiple Instances in BPMN Collaborations: From Formal Semantics to Tool Support. International Conference on Business Process Management, BPM 2018: Business Process Management, pp 83-101. [Link]
  • Flavio Corradini, Chiara Muzi, Barbara Re, Lorenzo Rossi, and Francesco Tiezzi. MIDA: Multiple Instances and Data Animator. International Conference on Business Process Management, BPM Demo, pp. 86-90. [Link]


  • Flavio Corradini, Chiara Muzi, Barbara Re, Lorenzo Rossi, and Francesco Tiezzi. Animating Multiple Instances in BPMN Collaborations: From Formal Semantics to Tool Support. Technical Report. University of Camerino [PDF]


MIDA (Multiple Instances and Data Animator) is a BPMN animator based on the Camunda web modeller. MIDA integrates our BPMN formal semantics into the token simulation plug-in. We have enriched this plug-in with a wider set of BPMN elements and redefined their semantics. Moreover, we have implemented data objects, data-driven gateways, pattern-matching for messages and correlation. The result is a complete tool for animating BPMN models in collaborative, multi-instance and data-based contexts. MIDA web application is written in JavaScript. It embeds BPMN models into personal browsers without using any server backend. The graphical interface of MIDA presents to users a modelling environment. Here, users can create BPMN models using all the facilities of the Camunda modeller. When the animation mode is activated, by clicking the corresponding button, one or more instances of the desired process can be fired.

MIDA is freely available here:  [TRY IT!!!]

For users convenience, we provide a list of BPMN example models that can be run on MIDA – [.bpmn files are available here].

MIDA source code is available [here]




Step-by-Step video

Step-by-Step guide

To access MIDA tool open this link The interface provides a example model for showing the MIDA capabilities.

Anyway, users can design theBPMN models (including data) using the element palette on the left, or load their own model by uploading the .bpmn file already defined. Moreover, additional element informations can be accessed via Property Panel.

Modelling Multiple Instances and Data.

To define multiple instance pool modellers have to double click the desired pool and choose the desired participant multiplicity.

To define multiple instance activities modellers have to click on the element for opening its palette, then click on the wrench and click on a multiple instance marker. Then, opening the Property Panel the designer can fill the loop cardinality filed with an integer value.






To define  data and express conditions modellers can define variables, assign values and compare them using Java Script syntax.

Define: "var x;"
Assing: "x = 9;"
Compare: "x >= 2"

To specify variables into data objects we use the element Data Object Field tag. It can be accessed via property panel. Here, users can define variables also with an initial value. Each definition has to be separated by semicolon. User can define any kind of variable handled by Js, even data structures like array.

Guards and the assignments can be specified in the same way inside the Guard and Assignements field of the activity.

The guard has to be a boolean expression over data fields or constant values:

!field & field2 != 0//guard

The assignments has to be expressions separated by a semicolon:

field3 = field; //expressions
fiels2 ++;

Data can be related to particular instance by using the predefined keyword instance inside data objects or data. This variable represents dynamically the unique identifier of the instance that is performing the operation.

Condition expressions for the data driven gateways have to be defined into the property panel of each outgoing sequence flows. From condition type select Expression and specify a boolean expression.

Messages can share data between pools. To do that, the designer has to specify the content of the message sent by the element (Send Task or Intermediate Throw Event). The property panel provides a custom Message field in witch is possible to insert variables and constant values separated by semicolon:

a; b; 0; c//send

To receive this data, the designer has to specify a message template in the Message field of the Property Panel of the receiving element (Receive Task or Intermediate Catch Event). The template consist in a list of variables and constant values separated by semicolon, the fields starting with the exclamation mark are those in which check the correlation:

x; !y; z; !'ok' //receive

The message will be correctly delivered if:

  1. the send and the receive have the same number of fields
  2. the correlation fields in the receive are equal to the corresponding sent field

Following the example,  the result of the message passing is the following:

if b === y and c === 'ok' then x = a; and z = 0;