Skip to main content
Skip table of contents

Wat is een workflow?

Concept

Een workflow of BPMN-procesdefinitie is de template waarop een individueel proces binnen de dienstverlening gebaseerd is. In Camunda termen spreken we ook wel van een process definition waarvan unieke process instances afgeleid zijn.

Workflow template

In de Studio workflow editor kun je workflows aanmaken volgens de BPMN (Business Process Model & Notation) specificatie. Een workflow is dus opgebouwd uit gestandaardiseerde bouwstenen, bekend als BPMN-elementen. Binnen elk dossiertype heb je meestal één hoofdworkflow (ook wel hoofdproces genoemd) en een paar hulpworkflows (called workflows) die je vanuit de hoofdworkflow kan aanspreken. Verder is het ook mogelijk om binnen een workflow een subworkflow (ook wel aanduid als subproces) te nesten.

Conceptueel diagram

Workflow A vertegenwoordigt het hoofdproces. Workflow B en workflow C zijn called workfows. Workflow D is een subworkflow (subproces).

BPMN-elementen

De Camunda engine binnen Skryv verwerkt workflows die opgesteld zijn volgens de BPMN 2.0 specificatie. De workflow is opgebouwd uit verschillende types bouwstenen, elk met hun eigen betekenis en eigenschappen. Bovenop de standaard specificaties heeft Camunda aan elk element nog een aantal extra eigenschappen of extensies toegevoegd die zorgen voor een correcte uitvoerbaarheid. Onderstaande tabel toont de belangrijkste elementtypes. Binnen deze types zijn er nog heel wat subtypes beschikbaar. Klik telkens door op de link voor meer informatie.

Element type

Symbool (voorbeeld)

Uitleg

Events

image-20250508-074842.png

Een event markeert een gebeurtenis binnen het proces.

Taken

image-20250508-074938.png

Een taak is een activiteit dat een stuk werk vertegenwoordigt.

Flows

image-20250508-074952.png

Een flow bepaalt de volgorde en opeenvolging van elementen binnen de workflow.

Gateways

image-20250508-075003.png

Een gateway laat toe om meerdere paden binnen je workflow te definiëren.

Call activities

image-20250508-075018.png

Een call activity is een activiteit waarmee je een tweede proces (hulpproces) kan oproepen.

Subprocessen

image-20250508-075032.png

Een subproces is een proces dat genest zit binnen het hoofdproces. Dit laat toe om gelaagd te werken en zo de leesbaarheid van het geheel te bewaken.

Over BPMN is heel wat informatie te vinden in boeken en op het internet. Deze Skryv documentatiesite bevat alvast de belangrijkste informatie om je op weg te helpen. Voor wie meer wil leren, is er onderaan deze pagina een lijst met verdere hulpbronnen.

Voorbeeld

Hieronder vind je een voorbeeld van een basis BPMN-workflow. Het beschrijft het proces van een evaluatie.

Step

BPMN-element

Beschrijving

1

Start event

Markeert de start van de evaluatie.

2

Gebruikerstaak

De leerling vult het examen in.

3

Intermediate signal event

Mijlpaal bereikt: de leerling heeft het examen afgerond.

4

Gebruikerstaak

De docent corrigeert het door de leerling ingevulde examen.

5

Business decision task

Er wordt een cijfer gegeven op basis van het aantal fouten dat de leerling heeft gemaakt.

6

Exclusive gateway

De flow splitst zich op. Als het cijfer tussen A en E ligt, wordt de bovenste tak genomen. Als het cijfer F is, wordt de onderste tak genomen.

7

Service taak

Er wordt een certificaat gegenereerd met de naam van de leerling, het behaalde cijfer en de datum van afgifte.

8

Service taak

Het certificaat wordt via een e-mailservice naar de student gestuurd.

9

Service taak

Een afwijzingsbrief wordt via een e-mailservice naar de student gestuurd.

10

End event

De evaluatie wordt als voltooid beschouwd.

Formaat

BPMN processen worden opgeslagen in XML-bestanden met de naamextensie .bpmn, die kunnen worden geïnterpreteerd en uitgevoerd door de workflow engine in de applicatie. Voorbeeld hieronder.

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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_10ft502" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.3">
  <bpmn:process id="scenarioA" name="scenarioA" isExecutable="true">
    <bpmn:startEvent id="Event_0a8folm">
      <bpmn:outgoing>Flow_1qh3d00</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:exclusiveGateway id="Gateway_0nce1bh">
      <bpmn:incoming>Flow_1qh3d00</bpmn:incoming>
    </bpmn:exclusiveGateway>
    <bpmn:sequenceFlow id="Flow_1qh3d00" sourceRef="Event_0a8folm" targetRef="Gateway_0nce1bh" />
    <bpmn:sequenceFlow id="Flow_1dmvock" sourceRef="Event_0t9o0j2" targetRef="Activity_1ae6ept" />
    <bpmn:sequenceFlow id="Flow_0eb5g44" sourceRef="Activity_1ae6ept" targetRef="Activity_0xhd2fb" />
    <bpmn:sequenceFlow id="Flow_02h0om8" sourceRef="Activity_0xhd2fb" targetRef="Event_19kal67" />
    <bpmn:endEvent id="Event_19kal67">
      <bpmn:incoming>Flow_02h0om8</bpmn:incoming>
      <bpmn:terminateEventDefinition id="TerminateEventDefinition_0i4uw7j" />
    </bpmn:endEvent>
    <bpmn:serviceTask id="Activity_0xhd2fb" name="Send email" camunda:modelerTemplate="com.camunda.example.MailTask" camunda:expression="${mailService.sendEmail(execution)}">
      <bpmn:extensionElements>
        <camunda:inputOutput>
          <camunda:inputParameter name="emailReceivers">info@skryv.be</camunda:inputParameter>
          <camunda:inputParameter name="emailSubject">New request</camunda:inputParameter>
          <camunda:inputParameter name="emailTemplate">email</camunda:inputParameter>
        </camunda:inputOutput>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_0eb5g44</bpmn:incoming>
      <bpmn:outgoing>Flow_02h0om8</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:userTask id="Activity_1ae6ept" name="Fill in form">
      <bpmn:incoming>Flow_1dmvock</bpmn:incoming>
      <bpmn:outgoing>Flow_0eb5g44</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:startEvent id="Event_0t9o0j2" name="Start request">
      <bpmn:outgoing>Flow_1dmvock</bpmn:outgoing>
      <bpmn:messageEventDefinition id="MessageEventDefinition_1vmygoo" messageRef="Message_3ddqsj2" />
    </bpmn:startEvent>
  </bpmn:process>
  <bpmn:message id="Message_2383vfl" name="startFlow" />
  <bpmn:message id="Message_3ddqsj2" name="startRequest" />
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="scenarioA">
      <bpmndi:BPMNEdge id="Flow_02h0om8_di" bpmnElement="Flow_02h0om8">
        <di:waypoint x="390" y="240" />
        <di:waypoint x="452" y="240" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0eb5g44_di" bpmnElement="Flow_0eb5g44">
        <di:waypoint x="230" y="240" />
        <di:waypoint x="290" y="240" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1dmvock_di" bpmnElement="Flow_1dmvock">
        <di:waypoint x="78" y="240" />
        <di:waypoint x="130" y="240" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1qh3d00_di" bpmnElement="Flow_1qh3d00">
        <di:waypoint x="488" y="880" />
        <di:waypoint x="560" y="880" />
        <di:waypoint x="560" y="965" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="Event_0a8folm_di" bpmnElement="Event_0a8folm">
        <dc:Bounds x="452" y="862" width="36" height="36" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Gateway_0nce1bh_di" bpmnElement="Gateway_0nce1bh" isMarkerVisible="true">
        <dc:Bounds x="535" y="965" width="50" height="50" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Event_0mf2ws2_di" bpmnElement="Event_19kal67">
        <dc:Bounds x="452" y="222" width="36" height="36" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_1notw23_di" bpmnElement="Activity_0xhd2fb">
        <dc:Bounds x="290" y="200" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_1ku1au7_di" bpmnElement="Activity_1ae6ept">
        <dc:Bounds x="130" y="200" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Event_0pz1zhs_di" bpmnElement="Event_0t9o0j2">
        <dc:Bounds x="42" y="222" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="30" y="265" width="64" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Meer info over BPMN

Tutorials

Websites

Documentatie in opbouw.

Boeken

Documentatie in opbouw.

JavaScript errors detected

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

If this problem persists, please contact our support.