Ga naar inhoud

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>.bpmn met proces-id == <key>.
  • [ ] Generiek/herbruikbaar (geen formulier-specifieke aannames).
  • [ ] Volledige bpmndi-diagraminfo (rendert in de cockpit).
  • [ ] Elke camunda:topic heeft een handler in app/ExternalTasks/.
  • [ ] Aangeroepen via callActivity calledElement="<key>" met camunda:in/out.
  • [ ] Gecommit + PR geopend. (Uitrollen + cockpit-check doet de serverbeheerder.)