This tutorial illustrates the use of multiple instance tasks.
Imagine a company in the process of selecting candidates for a position. There is a task of editing the list of promising candidates when the applications are evaluated. After this is finished, a task for each candidate of the list should be created. Each task should record the results of an interview by phone. These interview tasks should be offered to all staff in the HR department.
We define the following types for candidates in the specification's data definitions:
<xs:element name="Name" type="xs:string"/>
<xs:element name="Phone_number" type="xs:string"/>
<xs:element name="Comment" type="xs:string"/>
<xs:element name="Candidate" type="candidateType" minOccurs="1" maxOccurs="unbounded"/>
We declare a net variable candidates:candidatesType. We use this variable as input/output in task "Edit candidate". We also pull this variable into the MI-task "Interview candidates". Then we click on the button "mark as MI". If all is correct the variable is renamed "candidates_item" (see screenshot).
If we now click on the input mapping we see that the following splitter query has been created:
for $s in /candidates/*
The joining query in the output mapping looks like this:
for $j in /Interview_candidates/Candidate
The last task is called "Check candidate list" and takes the net variable candidates as input.
Now let's not touch anything and see if it works. We upload the workflow, start a case and assign the first tasks to an existing participant.
The complete spec is attached below.
Dynamic Instance Creation
Next we will explore how dynamic instance creation works. For this purpose, we open the attached spec in the editor, select "Interview candidates" and set the checkmark in the MI-attributes as show here.
We save the spec, start a new workflow, and fill in two candidates.
Next we fill in the first interview form.
In our started queue, we click the button "New Instance".
The next dialoge comes up. We have to fill in the correct XML elements.
We can now edit the corresponding work item.