CMMN gebruiken in BPMN-workflow
Algemene principes
Een CMMN is niet rechtstreeks opgenomen in het BPMN-proces, maar wordt er gerepresenteerd door een call activity. Als een process token hier arriveert wordt de optionele actie beschikbaar gesteld in de frontoffice dan wel backoffice. De call activity wordt afgesloten van zodra de gebruiker de optie activeert (d.w.z. op de knop klikt en bevestigt).
Na afsluit van de call activity gaat de process token verder naar het volgende element binnen de BPMN (gebruikerstaak, servicetaak, business rule taak, call activity of andere) die ervoor zorgt dat de optionele actie ook effectief wordt uitgevoerd (bijvoorbeeld de aanvraag annuleren, een bijkomende vraag stellen of een premiebedrag herberekenen).
Indien je wil dat de optionele actie vanaf een bepaald ogenblik niet meer beschikbaar is voor een gebruiker, moet je de gelinkte call activity afsluiten via een boundary message event. Dit event wordt dan getriggerd door send task die je op de gewenste plaats in de workflow zet (bijvoorbeeld nadat een premie is goedgekeurd voor uitbetaling kan de burger zijn aanvraag niet meer annuleren).
Optionele acties hebben vaak een generiek karakter, bijvoorbeeld een aanvraag annuleren, een vraag stellen aan de dossierbeheerder of bijkomende stukken opvragen bij de burger. Op dat moment is het een goed idee om deze acties onder te brengen in een aparte flow en die dan in het hoofdproces op te roepen via een call activity. Meer info hierover op de pagina call activities & called workflows.
Optionele acties frontoffice: voorbeelden
Aanvraag annuleren
In onderstaand voorbeeld zie je een workflow waarbij de frontoffice gebruiker zijn ingediende aanvraag kan annuleren. Bemerk dat de workflow zich enkel toespitst op het annuleren zelf. Dit zorgt ervoor dat het een generiek karakter krijgt en je het via een call activity kan aanbieden in meerdere hoofdprocessen.
Deze workflow kan je nu vervolgens aanbieden als optionele actie in je hoofdproces. Bemerk dat hier twee call activities gedefinieerd zijn. ‘Optie annuleren’ representeert de CMMN en ‘Annuleren’ linkt naar bovenstaande flow. Eenmaal de call acitivity ‘Annuleren’ is afgesloten bereikt de process token een terminate end event waardoor het volledige dossier afgesloten wordt. Deze call activity ‘Annuleren’ heeft wat informatie nodig uit het hoofdproces zoals de ‘status van annuleerbaarheid’ (annuleerbaar zonder reden). Deze status wordt vastgezet en bijgesteld door de intermediate events in het hoofdproces. Merk op dat op het einde van het hoofdproces een send task ervoor zorgt dat de optionele actie afgesloten wordt en niet langer beschikbaar is voor de frontoffice gebruiker.
Een vraag stellen
In onderstaand voorbeeld zie je een workflow voor een optionele actie waarbij de frontoffice gebruiker een vraag kan stellen aan de backoffice medewerker. Van zodra een eerste vraag is gesteld, krijgt de frontoffice gebruiker de kans om een extra vraag te stellen. Dit is dus een optionele actie binnen de optionele actie. Hierbij zijn twee scenario’s mogelijk:
De backoffice medewerker heeft de eerste vraag nog niet beantwoord. In dat geval zal deze antwoordtaak geannuleerd worden.
De backoffice medewerker heeft de eerste vraag al beantwoord. In dat geval zal het eerste antwoord al in PDF-vorm in de frontoffice aanwezig zijn.
In beide scenario’s zal de frontoffice gebruiker zijn oorspronkelijk vraagformulier verder kunnen aanvullen. De backoffice medewerker krijgt vervolgens een nieuwe antwoordtaak. Bemerk het gebruik van throwing en catching link events (Extra vraag). Dit zorgt ervoor dat je geen lange, storende pijlen moet tekenen die afbreuk doen aan de leesbaarheid van de workflow.
Bovenstaand proces wordt nooit afgesloten, want er is altijd de mogelijkheid om een extra vraag te stellen. Gezien het generieke karakter ervan (een vraag stellen aan de dossierbeheerder), zou je deze worfklow op haar beurt als optionele actie kunnen integreren binnen verschillende dienstverleningen (dossiertypes). Zie voorbeeld in diagram hieronder, waarbij de call activity ‘Vraag stellen’ bovenstaand proces oproept. Voor meer info: zie de pagina rond call activities & called workflows.
Optionele acties backoffice: voorbeelden
Bijkomende info opvragen
In onderstaand proces vraagt een backoffice medewerker bijkomende informatie op bij de burger. Bemerk hoe er een loop in de flow zit die de backoffice medewerker in staat stelt om telkens bijkomende stukken op te vragen totdat hij of zij uiteindelijk tevreden is. Pas dan wordt de flow tot een conclusie gebracht.
Bovenstaande workflow kan je nu aanbieden als optionele actie in je hoofdproces. Nadat de dossierbeheerder bijkomende stukken heeft opgevraagd, zal het proces wachten bij het message intermediate event ‘Bijkomende stukken in orde?’ vooraleer verder te gaan. Dit message event kan enkel getriggerd worden door de send message task ‘Verstuur message bijkomende stukken in orde’. Bemerk verder dat de optionele actie ‘Bijkomende stukken opvragen?’ slechts beschikbaar is vanaf het ogenblik dat de aanvraag is ingediend tot het moment dat de send message task ‘Verstuur message optionele actie onbeschikbaar’ getriggerd wordt.
Premiebedrag (her)berekenen
In onderstaand proces wordt een premiebedrag berekend.
Door dit in een aparte workflow onder te brengen, kan je deze functie op verschillende plekken in het hoofdproces aanroepen via een call activity. Bovendien kan je het ook als optionele actie aanbieden. Mogelijke use case is dat de aanvrager de verkeerde input gegevens heeft ingediend (bijvoorbeeld fout factuurbedrag) of dat de berekeningswijze voor de premie is bijgesteld.