Skip to main content
Skip table of contents

Workflow XML-formaat

Inleiding

Deze pagina beschrijft de XML-structuur van een BPMN-definitie uitvoerbaar binnen een Skryv applicatie door een Camunda workflow engine.

CODE
<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.

CODE
<?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 modelelementen

  • camunda — Camunda-specifieke uitbreidingen (taken, listeners, expressies)

  • bpmndi / dc / di — visuele diagraminformatie (posities, afmetingen)

Procesdefinitie

<bpmn:process>

Het centrale blok dat de uitvoerbare logica beschrijft.

CODE
<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).

CODE
<bpmn:endEvent id="Event_0jn7m2v" name="einde aanvraagproces"
               camunda:asyncBefore="true" camunda:asyncAfter="true">
  <bpmn:extensionElements>
    <camunda:executionListener
      expression="${execution.setVariable(&quot;aanvraagAfsluiten&quot;, 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.

CODE
<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.

CODE
<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>.

CODE
<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.

CODE
<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.

CODE
<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 getriggerd assignment.

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.

CODE
<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:

CODE
<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:

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.