Pools, Lanes and Collaborations
A pool represents a participant in a collaboration, and a lane is a part of a pool, for example, a role or a department. A process doesn’t need a pool to run.
Pools
When you add a pool in the Modeler view, it wraps all elements of the diagram.
| Deleting a pool deletes all elements inside it. |
When the diagram has a pool and no element is selected, the properties panel shows the collaboration properties, Id and Name, instead of the process properties.
To set the process properties, select the pool. The pool has the Id and Name properties and the Process group with the process properties.
In XML, adding a pool creates a collaboration element with a participant element:
<collaboration id="Collaboration_16sinaz">
<participant id="Participant_1txu04k" processRef="pool-demo" />
</collaboration>
<process id="pool-demo" name="Pool demo" isExecutable="true">
<startEvent id="Event_0yeospn">
<outgoing>Flow_1snk2tn</outgoing>
</startEvent>
<sequenceFlow id="Flow_1snk2tn" sourceRef="Event_0yeospn" targetRef="Activity_187mecy" />
<userTask id="Activity_187mecy">
<incoming>Flow_1snk2tn</incoming>
</userTask>
</process>
Collaborations
Several pools make a collaboration. In XML, the collaboration element contains a participant element for each pool, and the processRef attribute of a participant refers to the id of its process.
When you deploy a collaboration, each process is deployed as a separate process definition with its own id. All of them appear in the process definitions list, and you can start any of them.
Message flows between pools only document how the processes communicate. The engine doesn’t send messages along them. To send a message to a process, call the engine API from your code. See Sending Messages.
A collaboration shows related processes in one diagram. For example, a main process and the process that it calls from several places:
Here, the message flows only show that the same process is called from different points of the main process.
Another example shows processes that exchange messages and signals:
Here, process One sends a message to start process Two and then waits for a message from process Two. Or the timer event fires, and the signal from process One starts process Three.
Lanes
In Jmix BPM, a lane can assign the user tasks placed on it. A user task with no assignee and no candidate groups gets the assignee, candidate users and candidate groups of its lane. See Assigning Tasks by Lane.