Een gedeeld subproces maken¶
Een gedeeld subproces is een herbruikbaar BPMN-proces dat meerdere
(hoofd)processen kunnen aanroepen via een call activity — bijvoorbeeld
zaak-aanmaken, zaak-status-zetten, zaak-resultaat-zetten, zaak-rol-zetten.
Stappen¶
1. Maak het BPMN-bestand¶
development/subprocessen/<key>.bpmn. De proces-id is de key waarmee je
'm later aanroept. Houd het generiek (geen formulier-specifieke aannames) zodat
het herbruikbaar is.
Minimaal skelet (een subproces dat één external task uitvoert):
<bpmn:process id="mijn-subproces" name="Mijn subproces" isExecutable="true">
<bpmn:startEvent id="Start"><bpmn:outgoing>f1</bpmn:outgoing></bpmn:startEvent>
<bpmn:serviceTask id="DoeIets" name="Doe iets"
camunda:type="external" camunda:topic="mijn-topic">
<bpmn:incoming>f1</bpmn:incoming><bpmn:outgoing>f2</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:endEvent id="Einde"><bpmn:incoming>f2</bpmn:incoming></bpmn:endEvent>
<bpmn:sequenceFlow id="f1" sourceRef="Start" targetRef="DoeIets" />
<bpmn:sequenceFlow id="f2" sourceRef="DoeIets" targetRef="Einde" />
</bpmn:process>
Volledige diagram-info (bpmndi) vereist
Zonder complete bpmndi-shapes/edges rendert het proces niet in de cockpit.
Teken het bij voorkeur in de modeler (Beheer → Processen) zodat de DI klopt.
2. Heeft het een service task? Maak de worker¶
Elke camunda:topic heeft een handler nodig. Zie
External tasks (workers) — een class in
app/ExternalTasks/ die automatisch ontdekt wordt.
3. Roep het aan vanuit een ander proces (call activity)¶
In het hoofd- of een ander subproces:
<bpmn:callActivity id="RoepSubprocesAan" name="..." calledElement="mijn-subproces">
<bpmn:extensionElements>
<camunda:in variables="all" /> <!-- alles meegeven -->
<camunda:in sourceExpression="Ontvangen" target="statusOmschrijving" />
<camunda:out variables="all" /> <!-- resultaten terug -->
</bpmn:extensionElements>
<bpmn:incoming>...</bpmn:incoming>
<bpmn:outgoing>...</bpmn:outgoing>
</bpmn:callActivity>
calledElement = de proces-id uit stap 1. Variabelen geef je mee met
camunda:in (variables="all", of source/target, of sourceExpression voor
een vaste waarde) en haal je terug met camunda:out.
4. Committen en een PR openen¶
Commit en push je subproces en open een PR.
Live brengen = serverbeheerder
De portal-deploy draait operaton:deploy-system-processes, dat
resources/processes/*.bpmn (de gedeelde subprocessen) én
development/features/*/*.bpmn deployt (elk een eigen, idempotente deployment).
Dat doet de serverbeheerder, niet de developer — zie
Een formulier/proces live brengen.
Checklist¶
- [ ]
development/subprocessen/<key>.bpmnmet proces-id==<key>. - [ ] Generiek/herbruikbaar (geen formulier-specifieke aannames).
- [ ] Volledige
bpmndi-diagraminfo (rendert in de cockpit). - [ ] Elke
camunda:topicheeft een handler inapp/ExternalTasks/. - [ ] Aangeroepen via
callActivity calledElement="<key>"metcamunda:in/out. - [ ] Gecommit + PR geopend. (Uitrollen + cockpit-check doet de serverbeheerder.)