Chelsea’s kerstdiner als workflow: dit jaar niet met de handen in het haar! – Part 2

Een van de nieuwe features die Mendix heeft uitgebracht met de komst van Mendix 9 is workflow management. Deze functionaliteit geeft nieuwe mogelijkheden voor het eenvoudig modelleren alle vormen van processen waarbij er een serie van acties wordt uitgevoerd. Voorbeelden hiervan zijn accorderingsprocessen, of andere processen waarbij er beslissingsmomenten liggen bij verschillende actoren. Hiermee zagen we bij onze klanten mogelijkheid voor procesoptimalisering ten opzichte van de huidige implementatie waarbij we gebruik maakten van microflows.

In het vorige artikel beschreven we al de toepassing van Mendix workflow op het organiseren van een kerstdiner. Toen lag de focus op wat de toepassing van Mendix Workflow is, zonder in te gaan op het technische aspect. In dit artikel leggen we in detail uit hoe het gebruik van een workflow werkt in Mendix Studio Pro. We beschrijven de stappen die je moet nemen in Mendix om een workflow te kunnen bouwen, geven tips die kunnen helpen bij het zelf opzetten van een workflow en illusteren dit aan de hand van screenshots. We gaan hierbij dieper in op het voorbeeld van het kerstdiner van Chelsea dat we eerder beschreven.

Stap 1 – Voorbereiding

Als het aankomt op workflows, is de eerste stap het beschrijven en uittekenen van het gewenste proces. Een geschikte methode om hiermee aan de slag te gaan is het maken van een swim lane. Hierdoor wordt het in één oogopslag zichtbaar welke actoren bij het proces betrokken zijn en wie op welk moment een beslissing moet nemen. Deze procesplaat kan gebruikt worden als input voor de workflow.

Stap 2 – Bepalen van gebruikersrollen

Zodra het proces is uitgetekend, worden de te gebruiken modulerollen zichtbaar. Iedere swim lane staat gelijk aan een aparte rol binnen de applicatie. Zorg ervoor dat in het model al deze gebruikersrollen zijn aangemaakt, zodat iedere gebruiker alleen de pagina’s en processen te zien krijgt die hij of zij moet uitvoeren. In ons voorbeeld van het kerstdiner zou gedacht kunnen worden aan de gebruikersrollen ‘gast’ en ‘host’.

Stap 3 – Toevoegen van workflow aan het model

Nadat de gebruikersrollen zijn bepaald en aangemaakt, is het tijd om de workflow toe te voegen aan het Mendix model. Dit kan worden bereikt door met de rechtermuisknop op de module te klikken en “Add workflow” te selecteren. Vervolgens verschijnt er een workflow en moet dit worden gekoppeld aan een workflow entiteit.

Stap 4 – Opzetten domeinmodel

1. Workflow entiteit

Een workflow entiteit kan worden toegevoegd in het domeinmodel als specialisatie van Sytem.Workflow. Deze entiteit kan een algemene benaming krijgen zoals ‘MyFirstModule.Workflow’. Per workflow zal er een aparte workflow entiteit moeten worden aangemaakt. Vervolgens kan de entiteit gekoppeld worden in de workflow door op de rechtermuisknop te klikken en “select workflow instance” te selecteren.
Vergeet niet om de entity access van deze entiteit zo in te stellen dat alle deelnemers aan je workflow de gegevens hiervan kunnen raadplegen.

2. Business context entiteit

Naast een generieke workflow entiteit, is er ook een entiteit nodig voor de business context. In het beschreven voorbeeld zou de businesscontext entiteit ‘MyFirstModule.Kerstdiner’ kunnen zijn. De workflow zelf omschrijft de status van het werkproces en verschilt daarin van de business context entiteit, waarbij de laatstgenoemde de informatie bevat die het proces volgt. Een voorbeeld van business context informatie is hierin bijvoorbeeld de daadwerkelijke dieetwensen van de gasten, waarbij de workflow zelf vaststelt of de dieetwensen zijn ingediend.

3. User task entiteiten

De laatste type entiteit die nodig is voor een workflow is de user task entiteit. Net als de vorige entiteiten worden ook deze als een specialisatie van de entiteit system.Usertask opgezet. Het is verplicht om per taak die door een gebruiker moet worden uitgevoerd één user task entiteit te maken. Vanaf Mendix 9.7 wordt dit automatisch voor je gedaan. Enkele entiteiten die we uit het kerstdiner voorbeeld kunnen afleiden zijn: ‘uitnodigingen versturen’, ‘boodschappen doen’, etc.

Stap 5 – Pagina’s aanmaken

De volgende stap die genomen moet worden is het maken van pagina’s. Voor iedere ‘user task’ kan er een aparte pagina worden aangemaakt. Deze pagina heeft als pagina parameter ‘myfirstmodule.Kerstdiner’ en toont vervolgens de informatie die betrekking heeft op de stap. Bijvoorbeeld bij de stap uitnodigingen versturen wil je de gastenlijst zien en de beschikbare data. Bij de stap boodschappen wil je alle ingrediënten van het gekozen gerecht plus de dieetwensen van de gasten zien.

Door gebruik te maken van een ‘Page Template’ in Mendix kun je zorgen voor een consistente weergave gedurende het proces. Mendix heeft in de WorkflowCommons-module twee voorbeelden van page templates voor het weergeven een entiteit met workflowinformatie.

Stap 6 – Workflow task toewijzen aan gebruikersrol

Iedere stap in de workflow wordt uitgevoerd door een bepaalde gebruikersgroep. De eerste stap hiervoor is het toewijzen van een gebruikersrol aan de taak. Er kan bijvoorbeeld gebruikt worden gemaakt van een microflow. In deze microflow kan door middel van een retrieve uit de database de juiste gebruikersrol worden opgehaald en worden meegegeven aan de instellingen in de workflow task. In het kerstdiner voorbeeld zou de systeemrol “Host” worden opgehaald uit de database, om toe te wijzen aan de workflow stap “Versturen uitnodigingen”.

Vergeet hierbij niet om de UserTask entiteit te voorzien van de juiste entity access.

Stap 7 – Selecteren entiteit voor genereren pagina’s

In het tabje “Data” onder het instellingenscherm van de Workflow task kan vervolgens de entiteit worden toegewezen die wordt gebruikt bij het genereren van de bijbehorende workflow pagina. De te selecteren entiteit is een van de “UserTask” entiteiten die zijn aangemaakt in stap 4.

Stap 8 – Genereren pagina’s

Voor iedere stap in de workflow dient een aparte pagina te worden gegenereerd. Pagina’s kunnen niet hergebruikt worden in meerdere workflow stappen. Onder het tabje “Display information” kan de aangemaakte pagina worden gekoppeld aan de task.

Stap 9 – Inrichten van de pagina

Bij het inrichten van de pagina kunnen er knoppen gemaakt worden om de keuzemogelijkheden binnen de task te activeren. In het kerstdiner voorbeeld zouden op de pagina “Reageren op uitnodiging” die is toegewezen aan de userrole “Gast” twee knoppen zichtbaar zijn;

  1. Ja ik ben erbij. Welke de uitkomst “Accepteren” zal activeren
  2. Helaas, ik kan er niet bij zijn. Welke de uitkomst “Afwijzen” zal activeren.

De stappen die hierboven beschreven staan zouden moeten helpen bij het opzetten van een eerste workflow. Bij het schrijven van deze blog is uitgegaan van de workflow functionaliteiten die er zijn in Mendix 9.7.0. Echter heeft Mendix aangegeven dat er tot 9.10.0 nog wijzigingen kunnen plaatsvinden in hoe de workflow is opgezet.