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 |
---|---|---|
![]() | Een event markeert een gebeurtenis binnen het proces. | |
![]() | Een taak is een activiteit dat een stuk werk vertegenwoordigt. | |
![]() | Een flow bepaalt de volgorde en opeenvolging van elementen binnen de workflow. | |
![]() | Een gateway laat toe om meerdere paden binnen je workflow te definiëren. | |
![]() | Een call activity is een activiteit waarmee je een tweede proces (hulpproces) kan oproepen. | |
![]() | 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.
<?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
Basistutorial op de Camunda website: BPMN Tutorial: Learn Business Process Model and Notation | Camunda
Klanten of partners van Skryv kunnen terecht binnen de Skryv Academy. Meer info hierover bij je Skryv aanspreekpunt.
Websites
Documentatie in opbouw.
Boeken
Documentatie in opbouw.