Bulkworkflow instellen
Vooraf
Onderstaand stappenplan toont hoe je een bulkworkflow opzet. Hierbij configureren we een bevestigingstaak om dossiers te selecteren uit een tabel (view op basis van zoekdefinitie) en een send task om een message terug te sturen naar de processen van alle in de tabel geselecteerde dossiers.
Stap 1: apart bulk dossiertype opzetten
Maak binnen je applicatie een apart dossiertype aan (bijvoorbeeld “bulkGoedkeuren”).
Open de dossierinstellingen van dit dossiertype.
Schakel over op de JSON-editor weergave.
Zorg ervoor dat je instellingen er als volgt uitzien. Onder de instelling
“processesOnStartup”verwijs je naar een procesdefinitie die we in stap 2 zullen uitwerken.
{
"name": "bulkGoedkeuren",
"label": "Bulk goedkeuren",
"processesOnStartup": [
"uitbetalingGoedkeurenBulk"
],
"canBeDeactivatedWhenReady": true
}
Dit zorgt voor de creatie van een nieuw (bulk)dossier op het ogenblik dat de backoffice medewerker de bulkactie opstart. Dit dossier heeft als enige doel het ondersteunen van de flow uitgetekend in stap 1. Van zodra de flow uitgevoerd is, verliest dit dossier echter zijn nut of betekenis. Vandaar de instelling “canBeDeactivatedWhenReady” : true die ervoor zorgt dat het dossier na afloop onmiddellijk en automatisch verwijderd wordt en aldus uit het backoffice dossieroverzicht verdwijnt.
Stap 2: nieuwe bulkworkflow in je dossiertype (hoofdproces)
Open nu het dossiertype waarin je hoofdproces gedefinieerd zit. Maak hier een nieuwe workflow aan met de key die je in stap 1 onder processesOnStartup opgegeven hebt (bijvoorbeeld “uitbetalingGoedkeurenBulk”). Hierin neem je twee taken op: een bevestigingstaak ('Selecteer dossiers') en een parallelle send task ('Verstuur message'). Uitleg en verdere detailconfiguratie volgt in stap 4.
Stap 3: nieuwe zoekdefinitie in je dossiertype (hoofdproces)
Om straks in stap 4 de selectietaak binnen de bevestigingstaak ‘Selecteer dossiers' correct te kunnen configureren, moet je eerst een zoekdefinitie definiëren. Dit bepaalt de weergave en het gedrag van de selectielijst voor de backofficemedewerker die de bulkactie uitvoert. In ons voorbeeld houden we het vrij simpel waarbij we enkel de minimaal verplichte eigenschappen invullen.
“label“: naam van de zoekdefinitie.“key”: unieke key of referentie van de zoekdefinitie.“datasourceType”: bron van de data (“es/dossiers”verwijst naar de ‘dossiers’-endpoint van de elasticSearch API).“columnDefinitions”: definieer de verschillende kolommen voor de tabel.“views”: definieer de verschillende views voor de tabel.
Meer info over zoekdefinities. Bekijk ook de pagina’s rond syntax en voorbeelden.
{
"label": "zoekDefinitie1",
"key": "zoekDefinitie1",
"datasourceType": "es/dossiers",
"columnDefinitions": [
{
"heading": "naam",
"key": "naam",
"type": "search/text",
"field": "document.testFormulier6.naam"
},
{
"heading": "voornaam",
"key": "voornaam",
"type": "search/text",
"field": "document.testFormulier6.voornaam"
}
],
"views": [
{
"name": "Default view",
"searchTerm": "",
"columns": [
"dossier.label",
"dossier.type",
"voornaam",
"naam"
],
"filters": [],
"sort": {
"criterion": "dossier.label"
}
}
]
}
Stap 4: configureer workflow
Nu configureren we verder de flow die we opgezet hebben onder stap 2.
Bevestigingstaak ‘Selecteer dossiers’
De eerste taak laat een backoffice gebruiker toe om uit een lijst de dossiers te selecteren waarvoor hij of zij de gerelateerde taak (zoals goedkeuring verlenen) wil uitvoeren.
Configureer volgende zaken onder het tabblad Basis in de element eigenschappen:
Element template:
bevestiging(dit is een specifiek type gebruikerstaak)Rollen:
‘beheerder’(of de rol die je voorzien hebt voor gebruikers die de bulkactie moeten uitvoeren; let op dat de gedefinieerde rol overeenstemt met de rol gedefinieerd bij de bulktaak in het hoofdproces, zie Stap 2: configureer bulktaak)
Maak een task listener aan onder tabblad Geavanceerd > Listeners en configureer deze als volgt:
Event type:
complete(dit zorgt ervoor dat de expressie uitgevoerd wordt bij afronding van de taak)Listener type:
expressionExpression:
${task.setVariable('selectedDossiers',task.getVariable('currentSelection'))}(zorgt ervoor dat de door de gebruiker geselecteerde dossiers,‘currentSelection’, worden opgeslagen in een lijst binnen de procesvariabele‘selectedDossiers’)
Voeg een input parameter toe onder het tabblad Geavanceerd > Input/Output en configureer als volgt:
Name:
selectType:
string or expressionValue:
zoekDefinitie1(key van de zoekdefinitie opgezet onder stap 3)
Dit zorgt ervoor dat de bevestigingstaak gevisualiseerd wordt als een selectietaak waarbij de selectielijst (tabel) bepaald wordt door de geconfigureerde zoekdefinitie (zie stap 3).
Send task ‘Verstuur message'
Deze send task stuurt een message uit naar elk geselecteerd dossier.
Configureer deze send task met marker sequential multi instance als volgt onder het tabblad Geavanceerd > General.
Implementation: expression
Expression:
${execution.getProcessEngineServices().getRuntimeService().createMessageCorrelation("stopTaakDoorBulk").processInstanceVariableEquals("dossierId", selectedDossier).correlateWithResult()}Collection: selectedDossiers
Element variable: selectedDossier
De message die uitgestuurd wordt, heeft de key “stopTaakDoorBulk” en wordt uitgestuurd naar elk dossier (selectedDossier) binnen de collectie (selectedDossiers).
Het stukje expressie .processInstanceVariableEquals("dossierId", selectedDossier).correlateWithResult() zorgt ervoor dat de message uitgestuurd wordt naar het juiste proces (variabele in selectedDossier moet matchen met eigenschap dossierId in het doelproces). Zie ook bulktaak integreren in hoofdproces (stap 1: configureer start events workflow).
Stap 5: koppelen met workflow hoofdproces
We hebben nu een message die uitgestuurd wordt naar elk van de geselecteerde dossiers. De key van deze message is stopTaakDoorBulk. Het komt er nu op aan om deze message te gebruiken om de gewenste bevestigingstaak in het hoofdproces af te ronden. Zie daarvoor de pagina Bulktaak integreren in hoofdproces.
