Container voor een proces. Een deelnemer in een interactie. Pools wisselen alleen gegevens uit via message flows. Kan worden ingeklapt om details te verbergen.
Een baan binnen een pool die laat zien wie de taken uitvoert (een functie, rol, afdeling of IT-systeem).
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.
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.
Uitgevoerd door een mens zonder tussenkomst van de BPM-engine. Het systeem kan niet automatisch detecteren wanneer dit werk begint of eindigt.
Automatisch uitgevoerd door een programma of service. Er komt geen mens aan te pas. Het meest voorkomende task-type in uitvoerbare processen.
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.
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).
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.
Roept een beslisengine aan (bijv. een DMN-tabel). Invoer wordt door een set regels gehaald en er wordt een beslissing teruggegeven.
Kleine iconen onderaan in het midden van een taakrechthoek. Ze geven het gedrag van de taak aan — niet het type.
| Marker | Betekenis | Voorbeeld |
|---|---|---|
| ↻ Loop | De taak herhaalt zolang een voorwaarde geldt (één instantie, meerdere iteraties) | Een document herzien → indienen → bij afwijzing opnieuw |
| ∥ Parallelle multi-instance | N instanties starten tegelijk — één per item in de verzameling | De melding tegelijk naar elke goedkeurder sturen |
| ≡ Sequentiële multi-instance | Dezelfde N instanties, maar na elkaar | Elke kandidaat om de beurt interviewen |
| ⏪ Compensation | Een 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-hoc | Taken binnen het subproces draaien in willekeurige volgorde, kunnen worden herhaald of overgeslagen; start- en end events zijn binnenin niet toegestaan | Vrije keuze van stappen tijdens een klantgesprek |
| + Subprocess | Een samengestelde activiteit met een verborgen interne volgorde; flows kunnen de grens niet overschrijden | “Orderverwerking” verbergt 10 interne stappen |
Een samengestelde activiteit gemarkeerd met “+”. Bevat een eigen reeks stappen. Flows kunnen de grens niet overschrijden. Intermediate events hechten aan de rand.
Dikke rand. Verwijst naar een globaal subproces (bijv. “Inkoop”) dat in verschillende processen wordt hergebruikt.
Marker “~”. Activiteiten binnenin mogen in willekeurige volgorde draaien, herhaald of overgeslagen worden. Start-/end events zijn binnenin niet toegestaan.
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.
Regelen splitsen en samenvoegen. Een gateway is geen taak! De beslissing wordt vóór de gateway genomen.
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.
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.
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.
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 hebt een pizza besteld — als die na 60 minuten niet is bezorgd, bel je de pizzeria; komt hij eerder, dan eet je.
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”).
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.
Een event is iets dat gebeurt (een feit), in tegenstelling tot een taak (een actieve handeling). Getekend als cirkels.
Catching (niet-gevulde marker) — wachten. Throwing (gevuld) — werpen. Boundary events: onderbrekend (doorgetrokken) en niet-onderbrekend (gestreept).
Iconen uit bpmn-font (Camunda). “—” = niet gedefinieerd door de standaard.
| Type | Start | Intermediate | End | |||||
|---|---|---|---|---|---|---|---|---|
| Normaal | Event-subpr. | Niet-onderbr. | Catch | Boundary | Boundary niet-onderbr. | Throw | ||
| None | — | — | — | — | — | |||
| ✉ Message | ||||||||
| ⏱ Timer | — | — | ||||||
| ⚡ Error | — | — | — | — | — | |||
| ▲ Signal | ||||||||
| 📋 Conditional | — | — | ||||||
| ↗ Escalation | — | — | ||||||
| ⬤ Terminate | — | — | — | — | — | — | — | |
| ⏪ Compensation | — | — | — | — | ||||
| ✖ Cancel | — | — | — | — | — | — | ||
| ➡ Link | — | — | — | — | — | — | ||
| ⬠ Multiple | ||||||||
| ➕ Parallel mult. | — | — | ||||||
Uitwisseling met een specifieke ontvanger: e-mail, telefoontje, HTTP, push. Beschikbaar in elke positie.
Datum/tijd, interval, aftelling (deadline). Alleen catching.
Een ernstige fout. Catching — alleen op een boundary. Throwing — alleen aan het einde.
Wachten op een externe voorwaarde (“de oven is heet”). Alleen catching.
Broadcast (tegenover een geadresseerd bericht). Elke abonnee reageert.
Stopt onmiddellijk de volledige procesinstantie. Alleen als end.
Wat als het niet langer zinvol is om taak 2 voort te zetten nadat taak 3 klaar is? Dan wordt het onderstaande patroon gebruikt:
Een “teleport” voor de flow. Een gekoppeld throw + catch vervangt een lange pijl. Alleen intermediate.
Draait een eerder voltooide actie terug. De compenserende taak is gekoppeld via een associatie.
Verzonden vanuit een subproces naar het bovenliggende proces — geen fout. Kan niet-onderbrekend zijn.
Alleen in de context van transacties. End — rollback. Boundary — catch.
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.
Een cilinder. Persistente opslag die de procesinstantie overleeft: een database, een register, een bestandsopslag. Taken lezen eruit en schrijven erin.
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.
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.
Een gestreepte afgeronde rechthoek. Een visuele groepering van elementen (bijv. “alle logistieke taken”). Heeft geen uitvoeringssemantiek; flows mogen de grens vrij overschrijden.
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.
Een gestreepte pijl met een open punt. Verbindt verschillende pools — een bericht dat tussen onafhankelijke deelnemers wordt uitgewisseld. Niet gebruikt binnen één pool.
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.
Maak gratis je eerste BPMN-diagram — geen registratie of creditcard nodig.
Genereer BPMN-flowcharts met AI