Workflow XML-formaat
Inleiding
Deze pagina beschrijft de XML-structuur van een BPMN-definitie uitvoerbaar binnen een Skryv applicatie door een Camunda workflow engine.
<bpmn:definitions> ← naamruimten, metadata
<bpmn:process> ← uitvoerbare proceslogica
<bpmn:startEvent> ← startevent
<bpmn:endEvent> ← eindevent (normaal of terminate)
<bpmn:intermediateThrowEvent> ← signaal/bericht versturen
<bpmn:intermediateCatchEvent> ← wachten op bericht
<bpmn:boundaryEvent> ← timer of fout op een taak
<bpmn:exclusiveGateway> ← XOR-beslissing
<bpmn:parallelGateway> ← parallelle splitsing/samenvoeging
<bpmn:userTask> ← formuliertaak (FO of BO)
<bpmn:serviceTask> ← automatische dienstaanroep
<bpmn:businessRuleTask> ← DMN-beslissingstabel
<bpmn:callActivity> ← aanroep van een ander (sub)proces
<bpmn:sequenceFlow> ← verbinding tussen elementen
</bpmn:process>
<bpmn:signal> ← globale signaaldeclaratie
<bpmn:message> ← globale berichtdeclaratie
<bpmndi:BPMNDiagram> ← visuele lay-out (niet uitvoerbaar)
</bpmn:definitions>
Onderdelen
XML-declaratie en namespaces
<bpmn:definitions>
Het rootElement declareert alle gebruikte XML-namespaces en identificeert het bestand. Dit onderdeel is dezelfde voor elke BPMN-definitie binnen Skryv.
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:camunda="http://camunda.org/schema/1.0/bpmn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
id="Definitions_10ft502"
targetNamespace="http://bpmn.io/schema/bpmn"
exporter="Camunda Modeler"
exporterVersion="5.10.0">
De belangrijkste namespaces zijn:
bpmn— de standaard BPMN 2.0 modelelementencamunda— Camunda-specifieke uitbreidingen (taken, listeners, expressies)bpmndi/dc/di— visuele diagraminformatie (posities, afmetingen)
Procesdefinitie
<bpmn:process>
Het centrale blok dat de uitvoerbare logica beschrijft.
<bpmn:process id="aanvraagprocesEvenement" name="Aanvraagproces" isExecutable="true">
<!-- elementen: events, gateways, taken, flows, subprocessen -->
</bpmn:process>
De id en name verwijzen naar de workflow definitie zoals opgebouwd vanaf het workflow overzicht scherm binnen Skryv Studio.
Binnen dit blok komen de volgende subelementen voor.
Events
Events zijn start-, eind- en tussenliggende gebeurtenissen die de levenscyclus van een proces afbakenen. Voorbeelden: <bpmn:startEvent>, <bpmn:endEvent>, <bpmn:intermediateThrowEvent>, <bpmn:intermediateCatchEvent>, <bpmn:boundaryEvent>. Events kunnen timers, signalen, berichten of foutdefinities bevatten. <bpmn:extensionElements> bevatten dan weer Skryv & Camunda gerelateerde uitbreidingen zoals execution listeners via <camunda:executionListener> (bv. het setten van procesvariabelen bij het starten of beëindigen van een event).
<bpmn:endEvent id="Event_0jn7m2v" name="einde aanvraagproces"
camunda:asyncBefore="true" camunda:asyncAfter="true">
<bpmn:extensionElements>
<camunda:executionListener
expression="${execution.setVariable("aanvraagAfsluiten", false)}"
event="start" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_1sz653d</bpmn:incoming>
</bpmn:endEvent>
Gateways
Gateways sturen de procesflow op basis van condities. Meest gebruikt: <bpmn:exclusiveGateway> (XOR) en <bpmn:parallelGateway>. De default-flow wordt aangeduid met het default-attribuut.
<bpmn:exclusiveGateway id="Gateway_140w7eb" name="Via FO gestart?" default="Flow_0v8mano">
bpmn:incomingFlow_1d5bupd</bpmn:incoming>
bpmn:outgoingFlow_1jvcr1i</bpmn:outgoing>
bpmn:outgoingFlow_0v8mano</bpmn:outgoing>
</bpmn:exclusiveGateway>
Sequence flows
Sequence flows verbinden alle elementen. Conditionele flows bevatten een <bpmn:conditionExpression> met een workflow expressie.
<bpmn:sequenceFlow id="Flow_1jvcr1i" name="Nee"
sourceRef="Gateway_140w7eb" targetRef="Event_00rhop2">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">
${!startFO}
</bpmn:conditionExpression>
</bpmn:sequenceFlow>
Taken
Er zijn drie soorten taken die in Skryv-processen terugkomen.
Gebruikerstaken
Een gebruikerstaak is een taak voor een menselijke gebruiker (aanvrager of dossierbehandelaar). De Skryv-specifieke template com.skryv.SkryvDocUserTask koppelt een formulier (document) aan de taak via <camunda:inputOutput>.
<bpmn:userTask id="Activity_0fey2d7" name="Vul aanvraag in"
camunda:modelerTemplate="com.skryv.SkryvDocUserTask"
camunda:candidateGroups="aanvrager"
camunda:dueDate="${deadlineIndiening}">
<bpmn:extensionElements>
<camunda:inputOutput>
<camunda:inputParameter name="scope">DOSSIER</camunda:inputParameter>
<camunda:inputParameter name="definition">${aanvraagformulier}</camunda:inputParameter>
<camunda:inputParameter name="submitText">Dien aanvraag in</camunda:inputParameter>
</camunda:inputOutput>
</bpmn:extensionElements>
</bpmn:userTask>
Service taken
Een service taak is een automatische taak die een Skryv- of Camunda-service aanroept via een expressie.
<bpmn:serviceTask id="Activity_1mllj0e" name="Verstuur herinnering"
camunda:expression="${mailService.sendEmail(execution)}">
Business rule taken
Een business rule taak roept een DMN-beslissingstabel aan.
<bpmn:businessRuleTask id="Activity_13xxs6n" name="Selecteer concessiehouder"
camunda:decisionRef="Decision_1qwfbkc"
camunda:resultVariable="decisionResults"
camunda:mapDecisionResult="singleResult">
<bpmn:extensionElements>
Dit blok verschijnt binnen taken (alsook binnen events) en bevat:
<camunda:inputOutput>met taak input & output parameters<camunda:inputParameter>of<camunda:outputParameter>(bv. configureert welk formulier/document de taak toont en hoe resultaten worden opgeslagen).<camunda:executionListener>dit zijn Java/JUEL-expressies die worden uitgevoerd bij process flow-events (start,end).<camunda:taskListener>zijn task listener expressies gekoppeld aan taak-events en worden getriggerdassignment.
Signal en message definities
Buiten het <bpmn:process> blok, maar nog binnen <bpmn:definitions>, staan de globale signal definities en message definities waarnaar events in het proces verwijzen.
<bpmn:signal id="Signal_074oic5" name="DS_PlaatsingsopdrachtBeschikbaar"/>
<bpmn:message id="Message_15ln28a" name="plaatsingopdrachtOpgehaald"/>
Diagramvisualisatie
<bpmndi:BPMNDiagram>
Dit blok bevat uitsluitend de visuele weergave-informatie (coördinaten, groottes van shapes en paden van edges) die de Camunda Modeler gebruikt om het diagram te tekenen. Het heeft geen invloed op de uitvoering van het proces.
Voorbeeld 1:
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="aanvraagprocesEvenement">
<bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
<dc:Bounds x="162" y="679" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_1d5bupd_di" bpmnElement="Flow_1d5bupd">
<di:waypoint x="198" y="697" />
<di:waypoint x="565" y="697" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
Voorbeeld 2: