Cumul check workflow instellen
Vooraf
Omdat de workflow engine geen notie heeft van dossiertypes, maakt het in principe niet uit onder welk dossiertype je de cumul check workflow aanmaakt.
Maak cumul check workflow aan
Maak de cumul check workflow aan en configureer volgende elementen.
Stap 1: Start event ‘Cumul check opgestart’
Dit is een leeg ('untyped') start event.
Stap 2: Service taak ‘Haal dossiers met cumulKey op’
Stel expressie in
Deze taak voert een expressie uit die achterliggend een query maakt naar de cumul check tabel in de database. Hiertoe moet je volgende expressie instellen.
${genericCumulService.findByKeyWithoutSelf(dossierId, cumulType, cumulKey)}
De drie meegestuurde parameters zijn meegestuurd vanuit de call activity in het hoofdproces:
dossierId
: dit is het specifieke dossier waarvoor je de cumul check wil uitvoeren.cumulType
: stemt doorgaans overeen met het dossiertype.cumulKey
: string aan de hand waarvan je de uniciteit wil checken.
Als resultaat zal je een lijst met dubbele dossiers terugkrijgen (in de vorm van een Java lijst object) die je moet vatten onder een resultaatvariabele. Deze variabele moet je instellen via de eigenschappen van de taak.
Resultaatvariabele: cumulDossiers
Stel execution listener in
Via een start listener stel je een nieuwe procesvariabele cumulDossierLijst in. Dit is een lege string waarbinnen je straks een opsomming zal schrijven van alle dubbele dossiers (indien aanwezig).
${execution.setVariable('cumulDossierLijst','')}
Stel transaction boundary in
Stel binnen deze service taak de eigenschappen asynchronous after
en exclusive
in. Meer info over asynchroniciteit en transaction boundaries vind je via deze sectie binnen de documentatie.
Stap 3: Exclusive gateway ‘Cumul dossiers aanwezig?’
Hierop zijn twee uitgaande flows gedefinieerd.
Standaard gaan we ervan uit dat er geen cumul dossiers zijn (dit is logischerwijs het meest verwachte scenario). In dat geval volg je rechtdoor de ‘happy path’ en stel je deze flow in als een default flow.
Als er wel cumul dossiers zijn, dan wordt het naar beneden afwijkende pad geactiveerd. Stel daar een expressie in die checkt of de variabele
cumulDossiers
iets bevat (d.w.z. niet leeg is).${!cumulDossiers.isEmpty()}
Stap 4: Parallel multi-instance service taak ‘Bewaar lijst van cumul dossiers’
Stel iteratie eigenschappen in
Deze taak itereert over alle entries binnen de variabele cumulDossiers
. Dit stel je in onder de eigenschap Collection
. Elke unieke entry is bij de uitvoering van de bijhorende service taak instantie beschikbaar onder de variabele cumul
. Dit stel je in onder de eigenschap Element Variable
. Meer info over multi-instance gedrag vind je in deze sectie van de documentatie.
Stel expressie in
De service taak kopieert deze variabele als een string in de procesvariabele cumulDossier
via volgende expressie.
${execution.setVariable('cumulDossier', cumul)}
Stel execution listener in
Via een end listener stel je een script (type JavaScript) in dat telkens het dossierlabel van het cumulDossier
in scope toevoegt aan de string cumulDossierLijst
.
var cumulDossier = execution.getVariable('cumulDossier');
var cumulDossierLijst = execution.getVariable('cumulDossierLijst');
var cumulDossierLabel = skryv.dossier(cumulDossier).getLabel();
cumulDossierLijst = cumulDossierLabel.concat(', ').concat(cumulDossierLijst);
if (cumulDossierLijst.endsWith(', ')) {
cumulDossierLijst = cumulDossierLijst.substring(0, cumulDossierLijst.length - 2);
}
execution.setVariable('cumulDossierLabel', cumulDossierLabel);
execution.setVariable('cumulDossierLijst', cumulDossierLijst);
Het script voegt bij iedere instantie van de service taak een dossierlabel (cumulDossierLabel
) toe aan de variabele cumulDossierLijst
. Bij de laatste dossierId wordt de komma verwijderd. Let ook op hoe globale variabelen gekopieerd worden naar lokale variabelen bij de start van het script, en hoe de lokala variabelen terug gekopieerd worden naar de globale variabelen bij het eind van het script.
Stap 5: Service taak ‘Voeg cumuldossiers toe aan formulier’
Stel expressie in
Voeg een dummy expressie toe.
${true}
Voeg execution listener 1 toe
Via een start listener zet je in het controleformulier een boolean op true die aanduidt dat er voor dit specifieke dossier duplicaten gevonden zijn.
${skryv.dossierFromScope(execution).getOrCreateDocumentByDefinitionKey(cumulFormulier).setField(cumulFormulierBoolean, true)}
De meegestuurde parameters zijn meegestuurd vanuit de call activity in het hoofdproces:
cumulFormulier
: dit is de key van het controleformulier waar je eventuele cumul info wil neerschrijven en weergeven aan de dossierbehandelaar.cumulFormulierBoolean
: dit is de key van het veld in het controleformulier waar je via een boolean (ja/nee) aanduidt of er al dan niet cumul dossiers gevonden zijn.
Voeg execution listener 2 toe
Via een start listener vul je in het controleformulier een veld in met daarin de lijst van gevonden duplicaten (cumul dossiers).
${skryv.dossierFromScope(execution).getOrCreateDocumentByDefinitionKey(cumulFormulier).setField(cumulFormulierDossiers, cumulDossierLijst)}
De meegestuurde parameters zijn meegestuurd vanuit de call activity in het hoofdproces:
cumulFormulier
: dit is de key van het controleformulier waar je eventuele cumul info wil neerschrijven en weergeven aan de dossierbehandelaar.cumulFormulierDossiers
: dit is de key van het veld in het controleformulier waar je de opgebouwde lijstcumulFormulierLijst
naartoe wil schrijven.
Stap 6: Service taak ‘Voeg dossier toe aan cumul database'
Stel expressie in
In deze service taak voegen we het dossier waarvoor de cumul check wordt uitgevoerd, toe aan de cumul database.
${genericCumulService.add(dossierId, cumulType, cumulKey)}
De drie meegestuurde parameters zijn meegestuurd vanuit de call activity in het hoofdproces:
dossierId
: dit is het specifieke dossier waarvoor je net de cumul check hebt uitgevoerd.cumulType
: stemt doorgaans overeen met het dossiertype.cumulKey
: string aan de hand waarvan je de uniciteit checkt.
Stap 7: End event ‘Cumul check afgerond’
Dit is een leeg ('untyped') end event.
Als je al deze stappen hebt doorlopen en je de cumul check workflow grondig hebt getest via mock data, kan je deze nu via een call activity integreren in je hoofdproces.