Lesmateriaal

BPMN 2.0-referentie

Deelnemers

Pool
Participant
Lane
Lane

Pool

Container voor een proces. Een deelnemer in een interactie. Pools wisselen alleen gegevens uit via message flows. Kan worden ingeklapt om details te verbergen.

OrderafhandelingVerkoopMagazijnVerzendingOrdergeplaatstOrderbevestigenOrderinpakkenOrderbezorgenOrder bezorgd
Openen in BP1 Modeler →
Eén pool, één proces: de order gaat van Verkoop naar Magazijn naar Verzending — de pool coördineert het werk
KlantWebwinkelProduct nodigOrderplaatsenPakket bezorgdGoederenuitpakkenOrder voltooidOrderontvangenPicken eninpakkenPakketverzendenOrderverzondenOrderPakket
Openen in BP1 Modeler →
Collaboration: de klant en de winkel zijn aparte pools — ze communiceren alleen via berichten

Lane

Een baan binnen een pool die laat zien wie de taken uitvoert (een functie, rol, afdeling of IT-systeem).

KlantenserviceSupportmedewerkerEngineerNieuw ticketTicketclassificerenVraag of bug?AntwoordgevenBug oplossenTicketgeslotenVraagBug
Openen in BP1 Modeler →
Lanes verdelen één proces over rollen: de medewerker classificeert het ticket, een bug gaat naar de lane Engineer

Activiteiten

Task-typen

Abstract
Task (None)
Manual
Manual
User
User Task
Send
Send Task
Receive
Receive Task
Script
Script Task
Service
Service Task
Business Rule
Business Rule

Abstract (None Task)

Het type is niet gespecificeerd. Gebruikt bij vroege modellering wanneer de uitvoeringswijze nog niet is bepaald, of wanneer die niet relevant is voor het doel van het diagram. In feite een tijdelijke aanduiding die later wordt verfijnd tot een concreet type.

User Task

Uitgevoerd door een mens via een software-interface: een CRM-formulier, een scherm in een webapp, een item in een taakbeheerder. Het belangrijkste verschil met een manual task is dat de persoon binnen het systeem werkt dat de status van de taak bijhoudt.

Voorbeelden: een aanvraag goedkeuren in het systeem, een formulier invullen, een document beoordelen in een selfserviceportaal.

Manual Task

Uitgevoerd door een mens zonder tussenkomst van de BPM-engine. Het systeem kan niet automatisch detecteren wanneer dit werk begint of eindigt.

Voorbeelden: een document fysiek ondertekenen, een klant bellen, een fysieke vergadering houden, een pakket per koerier bezorgen.

Service Task

Automatisch uitgevoerd door een programma of service. Er komt geen mens aan te pas. Het meest voorkomende task-type in uitvoerbare processen.

Voorbeelden: een HTTP-verzoek aan een API, een schrijfbewerking naar een database, een microservice-aanroep, een berekening uitvoeren.

Send Task

Stuurt een bericht naar een specifieke externe deelnemer (een ander proces of systeem) en eindigt direct, zonder op een antwoord te wachten. Een fire-and-forget-patroon.

Voorbeelden: een e-mail naar een klant sturen, een event publiceren op een message queue, een melding versturen via webhook.

Receive Task

Wacht op een inkomend bericht van een externe deelnemer. Het proces pauzeert bij deze taak totdat het bericht binnenkomt.

Een speciale variant is de instantiërende Receive: als zo'n taak de eerste stap in een proces is, start de ontvangst van het bericht zelf een nieuwe procesinstantie (een alternatief voor een message start event).

Voorbeelden: wachten op het antwoord van een tegenpartij, wachten op een callback van een betaalprovider, wachten op een leverbevestiging.

Script Task

Voert een ingebed script (code) uit dat rechtstreeks in het procesmodel is gedefinieerd. Anders dan een service task roept de code geen extern systeem aan — het draait binnen de BPM-engine.

Voorbeelden: een dataformaat converteren, een deadline berekenen, een tekst voor een e-mail opbouwen, een voorwaarde controleren.

Business Rule Task

Roept een beslisengine aan (bijv. een DMN-tabel). Invoer wordt door een set regels gehaald en er wordt een beslissing teruggegeven.

Voorbeelden: een korting bepalen op basis van klantsegment, een verzekeringspremie berekenen, een aanvraag toetsen aan beleid, een aanvraag classificeren.
TaskManual taskUser taskReceive taskSend taskScript taskService taskBusiness ruletask
Openen in BP1 Modeler →
Task-typen: de vorm is gelijk, alleen het icoon in de hoek vertelt hoe het werk wordt gedaan

Task markers

Kleine iconen onderaan in het midden van een taakrechthoek. Ze geven het gedrag van de taak aan — niet het type.

Loop
Loop
Multi-inst. ∥
Parallel MI
Multi-inst. ≡
Sequential MI
Compensation
Compensation
Ad-hoc ~
Ad-hoc
Subprocess +
Subprocess
MarkerBetekenisVoorbeeld
↻ LoopDe taak herhaalt zolang een voorwaarde geldt (één instantie, meerdere iteraties)Een document herzien → indienen → bij afwijzing opnieuw
∥ Parallelle multi-instanceN instanties starten tegelijk — één per item in de verzamelingDe melding tegelijk naar elke goedkeurder sturen
≡ Sequentiële multi-instanceDezelfde N instanties, maar na elkaarElke kandidaat om de beurt interviewen
⏪ CompensationEen rollback-taak: draait alleen wanneer compensatie wordt getriggerd, om een reeds voltooide actie ongedaan te maken“Boeking annuleren” nadat “Hotel boeken” al is voltooid
~ Ad-hocTaken binnen het subproces draaien in willekeurige volgorde, kunnen worden herhaald of overgeslagen; start- en end events zijn binnenin niet toegestaanVrije keuze van stappen tijdens een klantgesprek
+ SubprocessEen samengestelde activiteit met een verborgen interne volgorde; flows kunnen de grens niet overschrijden“Orderverwerking” verbergt 10 interne stappen
ContractopgesteldVoorwaardenonderhandelenContracttekenenContractgetekendTot beide partijen akkoord
Openen in BP1 Modeler →
Loop: één taak herhaalt zich — “Voorwaarden onderhandelen” draait opnieuw tot beide partijen akkoord zijn
InkoopaangevraagdOfferteaanvragenLeverancierkiezenLeveranciergekozenPer leverancier
Openen in BP1 Modeler →
Parallelle multi-instance (drie streepjes): “Offerte aanvragen” draait tegelijk één keer per leverancier; het proces gaat verder als alle offertes binnen zijn
ReisaangevraagdHotel boekenVlucht boekenVlucht geboekt?Reis geboektReis geannuleerdAnnuleringgevraagdHotelboekingannulerenJaNee
Openen in BP1 Modeler →
Compensation: “Hotelboeking annuleren” draait alleen als de reis wordt geannuleerd nadat het hotel is geboekt — de taak hangt aan een compensation boundary event, niet aan een flow

Subprocess

Een samengestelde activiteit gemarkeerd met “+”. Bevat een eigen reeks stappen. Flows kunnen de grens niet overschrijden. Intermediate events hechten aan de rand.

Order ontvangenOrder betalenKaartbelastenKwitantiesturenOrderverzendenOrderverzonden
Openen in BP1 Modeler →
Een subproces omvat zijn eigen stappen: uitgevouwen toont “Order betalen” ze met een eigen start en einde; ingeklapt verbergt “Order verzenden” ze achter de +-marker

Call Activity

Dikke rand. Verwijst naar een globaal subproces (bijv. “Inkoop”) dat in verschillende processen wordt hergebruikt.

Verschil met een ingebed subproces: in een ingebed subproces zijn gegevens direct toegankelijk (gedeelde scope met het bovenliggende proces). Een Call Activity is een apart proces — de invoer en uitvoer vereisen expliciete data-mapping: wat we bij de aanroep meegeven en wat we bij terugkeer teruglezen.
VerkoopLeasingOrdergeplaatstKrediettoetsenOrderbevestigenOrder bevestigdLeaseaangevraagdKrediettoetsenLeasetekenenLeasegetekend
Openen in BP1 Modeler →
Call Activity (dikke rand): “Verkoop” en “Leasing” roepen hetzelfde globale proces “Krediet toetsen” aan

Ad-hoc-subproces

Marker “~”. Activiteiten binnenin mogen in willekeurige volgorde draaien, herhaald of overgeslagen worden. Start-/end events zijn binnenin niet toegestaan.

AanbodgeaccepteerdEerste dag voorbereidenLaptopbestellenAccountsaanmakenPas uitgevenMentortoewijzenWerkplek klaar
Openen in BP1 Modeler →
Ad-hoc-subproces (~): de taken hebben geen flows — ze worden in willekeurige volgorde uitgevoerd, herhaald of overgeslagen

Event-subproces

Gestreepte rand binnen een proces. Getriggerd door een start event terwijl het bovenliggende proces actief is. Onderbrekend — annuleert het bovenliggende proces. Niet-onderbrekend — draait parallel.

WebwinkelOrder ontvangenOrderinpakkenOrderverzendenOrderverzondenAdres wijzigenAdres gewijzigdAdresbijwerkenAdres bijgewerkt
Openen in BP1 Modeler →
Event-subproces (gestippelde rand): geen inkomende flow — het bericht “Adres gewijzigd” start het terwijl de order loopt; de gestreepte start onderbreekt de hoofdflow niet

Gateways

Regelen splitsen en samenvoegen. Een gateway doet zelf geen werk — hij stuurt alleen de flow; de taak ervoor bereidt de beslissing voor.

Exclusive XOR
Of/of
Parallel AND
En/en
Inclusive OR
Eén of meer
Event-based
Event-based
Complex
Complex
None
None

Exclusive (XOR) Gateway

De meest voorkomende gateway. Bij het splitsen activeert hij precies één uitgaand pad — het pad waarvan de voorwaarde als eerste waar is. Als geen enkele voorwaarde geldt, loopt het proces vast met een fout (het is dus goede praktijk om altijd een “default”-tak te definiëren). Bij het samenvoegen laat hij elke binnenkomende token direct door, zonder op de andere te wachten.

Analogie: een splitsing in de weg waar je maar één kant op rijdt.

Voorbeelden: “Is de order betaald? → Ja / Nee”, “Is het bedrag > 10.000? → Ja / Nee”.
Tip: formuleer de vraag vóór de gateway en zet de antwoordopties op de uitgaande pijlen.
Order betaaldBezorgingkiezenBezorgmethode?Aan koerieroverdragenKlaarzettenvoor afhalenPer postversturenOrderverstuurdKoerierAfhalenPost
Openen in BP1 Modeler →
XOR gateway: precies één tak wordt gevolgd; de samenvoegende XOR geeft de order door zonder te wachten

Parallel (AND) Gateway

Bij het splitsen activeert hij alle uitgaande paden tegelijk, onvoorwaardelijk — zonder controles. Bij het samenvoegen wacht hij op tokens op alle binnenkomende paden en pas wanneer ze allemaal zijn aangekomen, geeft hij één enkele token door.

Analogie: een manager verdeelt taken over vijf medewerkers en wacht tot alle vijf klaar zijn.

Voorbeelden: de goederen verzenden en de factuur opstellen tegelijk; verschillende afdelingen die documenten tegelijk beoordelen.
Antipatroon: voeg takken niet samen met AND als ze door XOR zijn gesplitst of als er altijd maar één van wordt gevolgd. AND wacht eeuwig op tokens op alle invoeren — het proces loopt vast (deadlock). Voeg na een XOR samen met een XOR (of een leeg ruitje).
Order betaaldGoederenverzendenFactuuropmakenOrder voltooid
Openen in BP1 Modeler →
AND gateway: verzending en facturering starten samen; de samenvoegende AND wacht op beide

Inclusive (OR) Gateway

Een hybride van XOR en AND. Bij het splitsen activeert hij één of meer paden afhankelijk van de voorwaarden — elke voorwaarde wordt onafhankelijk geëvalueerd. Bij het samenvoegen wacht hij alleen op tokens op de paden die daadwerkelijk zijn geactiveerd (niet op allemaal, zoals AND doet).

Analogie: een buffet — je neemt één gerecht, twee of alles, maar nooit niets.

Voorbeelden: de klant koos bezorging en/of afhalen en/of cadeauverpakking — voer de gekozen opties uit en wacht tot ze allemaal klaar zijn.
Let op: OR gateways zijn lastiger te analyseren. In vertakte diagrammen kunnen de synchronisatieregels ondoorzichtig zijn. Niet elke engine ondersteunt ze correct.
Order betaaldOrder bevat?PakketverzendenDownloadlinksturenOrderafgehandeldFysieke warenDigitale waren
Openen in BP1 Modeler →
OR gateway: fysieke waren, digitale waren of beide — één of beide takken lopen, en de samenvoegende OR wacht alleen op de gevolgde takken

Event-based Gateway

Fundamenteel anders dan de rest: hij routeert niet op basis van data, maar op basis van welk event het eerst binnenkomt. Na de gateway plaats je intermediate wachtende events (timer, message, conditional, signal). Zodra er één afgaat, worden de andere geannuleerd.

Analogie: je stuurt een kandidaat een aanbod en wacht: reageert hij, dan ga je verder; blijft het een week stil, dan ga je naar de volgende kandidaat.

Voorbeelden: wachten op betaling met een timer (niet betaald binnen 3 dagen → order annuleren); wachten op het antwoord van de klant of op een deadline.
OrdergeplaatstFactuursturenBetaling ontvangenOrderverzendenOrderverzonden3 dagenOrderannulerenOrdergeannuleerd
Openen in BP1 Modeler →
Event-based gateway: wat het eerst komt, wint — een betaling laat de order verzenden, 3 dagen zonder betaling annuleren hem

Complex Gateway

Gebruikt wanneer de vertakkingslogica niet met standaard gateways uit te drukken is. De samenvoegvoorwaarde wordt bepaald door een expressie (bijvoorbeeld “ga verder wanneer 3 van de 5 takken klaar zijn” of “wanneer het eerste antwoord binnen is en 10 minuten zijn verstreken”).

In de praktijk: zelden gebruikt en niet elke BPM-engine ondersteunt het. Als een combinatie van XOR / AND / OR volstaat, kies dan daarvoor.

None (Default Exclusive)

Een ruit zonder marker. Semantisch gelijk aan een exclusive (XOR) gateway — de BPMN-standaard staat toe het kruis weg te laten. Sommige methodologen vinden dit slechte praktijk omdat het de leesbaarheid schaadt: het is onduidelijk of de auteur de marker vergat of bewust voor XOR koos.

Events

Kernbegrippen

Een event is iets dat gebeurt (een feit), in tegenstelling tot een taak (een actieve handeling). Getekend als cirkels.

Start
Dunne cirkel
Intermediate
Dubbele cirkel
End
Dikke cirkel

Catching (niet-gevulde marker) — wachten. Throwing (gevuld) — werpen. Boundary events: onderbrekend (doorgetrokken) en niet-onderbrekend (gestreept).

Overzichtstabel events

“—” = niet gedefinieerd door de standaard.

TypeStartIntermediateEnd
NormaalEvent-subpr.Niet-onderbr.CatchBoundaryBoundary niet-onderbr.Throw
None—————
✉ Message
⏱ Timer——
⚡ Error—————
▲ Signal
📋 Conditional——
↗ Escalation——
⬤ Terminate———————
⏪ Compensation————
✖ Cancel——————
➡ Link——————
⬠ Multiple
➕ Parallel mult.——

Message

Uitwisseling met een specifieke ontvanger: e-mail, telefoontje, HTTP, push. Beschikbaar in elke positie.

WebwinkelKoeriersdienstOrder betaaldPakketinpakkenOphalen gevraagdVerzoek ontvangenPakketbezorgenPakket bezorgdOphaalverzoek
Openen in BP1 Modeler →
Message: het message end event van de winkel stuurt een ophaalverzoek, en het message start event van de koerier start een nieuw proces

Timer

Datum/tijd, interval, aftelling (deadline). Alleen catching.

Elke maandag,9:00WeekrapportopstellenRapportgoedkeurenRapportgoedgekeurd1 dagGoedkeurderherinnerenHerinneringverstuurd2 dagenEscalerennaar managerRapportgeëscaleerd
Openen in BP1 Modeler →
Timers: een start volgens planning, een niet-onderbrekende herinnering na 1 dag en een onderbrekende deadline na 2 dagen

Error

Een ernstige fout. Catching — alleen op een boundary. Throwing — alleen aan het einde.

OrdergeplaatstKaartbelastenOrderverzendenOrderverzondenBetaling geweigerdOrderannulerenOrdergeannuleerd
Openen in BP1 Modeler →
Error: als het belasten van de kaart mislukt, onderbreekt de boundary error de taak en gaat de order naar annulering

Conditional

Wachten op een externe voorwaarde (“voorraad onder het minimum”). Alleen catching.

OrderontvangenOrderbevestigenArtikel opvoorraadOrderverzendenOrderverzonden
Openen in BP1 Modeler →
Conditional: na bevestiging wacht het proces tot het artikel op voorraad is en verzendt dan de order

Signal

Broadcast (tegenover een geadresseerd bericht). Elke abonnee reageert.

HoofdkantoorWinkelDefect bevestigdRecallvoorbereidenProductteruggeroepenProductteruggeroepenUit schappenhalenSchappen leeg
Openen in BP1 Modeler →
Signal: het hoofdkantoor zendt “Product teruggeroepen” uit; elke winkel die erop luistert, start een eigen proces — geen message flow nodig

Terminate

Stopt onmiddellijk de volledige procesinstantie. Alleen als end.

Ticket geopendOorzaakzoeken(45 min)OorzaakgevondenSnelle fixproberen(30 min)Fix geprobeerd
Openen in BP1 Modeler →
Zonder Terminate: elke parallelle tak bereikt zijn eigen einde; de instantie eindigt pas na de langste tak, na 45 minuten

Wat als het niet langer zinvol is om taak 2 voort te zetten nadat taak 3 klaar is? Dan wordt het onderstaande patroon gebruikt:

Ticket geopendOorzaakzoeken(45 min)OorzaakgevondenSnelle fixproberen(30 min)Fix geprobeerdOpgelost?Ticket opgelostNeeJa
Openen in BP1 Modeler →
Met Terminate: lost de snelle fix het ticket op, dan stopt het Terminate end event meteen de hele instantie, inclusief het nog lopende “Oorzaak zoeken”
Order betaaldOrderinpakkenVerzendingVerzendingOrderverzendenOrderverzonden
Openen in BP1 Modeler →
Link: de throwing link “Verzending” beëindigt de ene rij en de catching link gaat verder op de volgende — in plaats van een lange kruisende pijl

Compensation

Draait een eerder voltooide actie terug. De compenserende taak is gekoppeld via een associatie.

OrdergeplaatstKaartbelastenOp voorraad?Order bevestigdOrdergeannuleerdBetalingteruggedraaidBetalingterugstortenJaNee
Openen in BP1 Modeler →
Compensation: het compensation end event triggert het boundary event van de voltooide taak “Kaart belasten”, en de handler daarvan stort de betaling terug

Escalation

Verzonden vanuit een subproces naar het bovenliggende proces — geen fout. Kan niet-onderbrekend zijn.

Order ingepaktOrder bezorgenNaar klantrijdenPakket overhandigd2 uurBezorgingvertraagdOrder bezorgdBezorgingvertraagdKlantinformerenKlant geïnformeerd
Openen in BP1 Modeler →
Escalation: het bezorgsubproces werpt “Bezorging vertraagd”; de niet-onderbrekende boundary vangt dit op en informeert de klant terwijl de bezorging doorgaat

Cancel

Alleen in de context van transacties. End — rollback. Boundary — catch.

Data, artefacten, flows

Data Object
Data Object
Data Store
Data Store
Data Input
Data Input
Data Output
Data Output
Annotation
Text Annotation
Group
Group
Flow
Sequence Flow
Message flow
Message Flow
Conditional
Conditional Flow
Default
Default Flow
Transaction
Transaction

Data Object

Een “vel papier” met een omgevouwen hoek. Vertegenwoordigt informatie die wordt aangemaakt, verbruikt of doorgegeven tussen taken binnen een procesinstantie. Bestaat alleen zolang de instantie leeft.

Voorbeelden: een klantaanvraag, een conceptcontract, een rapport dat gaandeweg wordt samengesteld.

Data Store

Een cilinder. Persistente opslag die de procesinstantie overleeft: een database, een register, een bestandsopslag. Taken lezen eruit en schrijven erin.

Voorbeelden: CRM, ERP, orderdatabase, documentarchief.

Data Input / Data Output

Parameters van een proces of subproces op de grens. Input — wat van buitenaf wordt aangeleverd; output — wat wordt teruggegeven. Pijl met een open/gevulde driehoek.

Voorbeelden: het subproces “Inkoop” neemt een lijst met artikelen als input en geeft een factuur als output terug.

Text Annotation

Een opmerking die via een gestreepte lijn aan een willekeurig element wordt gekoppeld. Beïnvloedt de uitvoering niet — het dient alleen om zaken voor de lezer van het diagram te verduidelijken.

Group

Een gestreepte afgeronde rechthoek. Een visuele groepering van elementen (bijv. “alle logistieke taken”). Heeft geen uitvoeringssemantiek; flows mogen de grens vrij overschrijden.

Sequence Flow

Een doorgetrokken pijl met een gevulde punt. Bepaalt de uitvoeringsvolgorde binnen één pool. Kan poolgrenzen niet overschrijden.

Een conditional flow (met een klein ruitje bij de bron) — gaat alleen af als de voorwaarde waar is. Gebruikt op uitgaande pijlen van een taak zonder gateway.

Een default flow (met een streepje bij de bron) — het terugvalpad van een XOR/OR gateway of een conditionele splitsing, gevolgd als geen andere voorwaarde geldt.

Message Flow

Een gestreepte pijl met een open punt. Verbindt verschillende pools — een bericht dat tussen onafhankelijke deelnemers wordt uitgewisseld. Niet gebruikt binnen één pool.

Voorbeelden: de klant stuurt een order naar de webwinkel; de bank stuurt een betaalbevestiging.

Transaction

Een subproces met een dubbele rand. ACID-semantiek: ofwel elke interne actie commit succesvol, ofwel de hele transactie wordt teruggedraaid via een Cancel event (met compensaties). Gebruikt voor consistentie bij gedistribueerde operaties.

Voorbeelden: het boeken van een pakket “vlucht + hotel + auto” — als een stap mislukt, wordt de hele boeking geannuleerd.

Klaar om BPMN in te zetten?

Praat met ons team — we brengen uw proces in kaart en tonen BP1.ai die BPMN uitvoert op uw eigen data.

Contact met sales
Alle diagrammen zijn getekend in BP1 Modeler, een gratis BPMN 2.0-editor — open er een om hem te bewerken. Samengesteld door BP1.AI.