“Er is een fout opgetreden, neem contact op met uw systeembeheerder.”
Als een gebruiker deze standaard Mendix foutmelding ziet, is onze ervaring dat de melding genegeerd wordt, of dat er contact opgenomen wordt dat er iets mis was. De gebruiker heeft alleen geen idee meer wanneer precies of waarom. Helpen wordt lastig.
Om de feedback die het systeem aan de gebruiker geeft te verbeteren en een meer informatieve logging voor de ontwikkelaar te realiseren, gebruiken we een vast pattern voor elke actie vanaf een pagina. Dat ziet er als volgt uit: Het begint met een action nanoflow om alle klantacties af te handelen. Denk aan het openen van een nieuwe pagina, een object verversen of de gebruiker een bericht tonen. Vervolgens roepen we een action microflow aan die de logische subflow uitvoert en het resultaat daarvan afhandelt inclusief foutafhandeling en logging. Het resultaat wordt geretourneerd in een specifieke FlowResult entiteit aan de nanoflow (zie afbeelding 1).
Afbeelding 1
Het pattern ziet er per stap als volgt uit:
Action nanoflow aanroepen vanaf een pagina
De action nanoflow wordt aangeroepen vanaf een pagina en krijgt de prefix “Nanoflow Action Call” (NAC). Als er validatie van velden nodig is, dan roept deze nanoflow eerst een microflow aan voor de validatie. We gebruiken hiervoor een microflow, zodat we de validatie kunnen unit testen. Als je niet met unit tests werkt, dan volstaat een sub-nanoflow uiteraard ook. Een validatie flow geeft een resultaat terug waardoor je weet of je de vervolgactie kunt uitvoeren of niet.
Action microflow aanroepen vanaf nanoflow
De action microflow (met de prefix ACT) krijgt dezelfde rechten als de action nanoflow. Deze microflow maakt een FlowResult object aan en roept de sub microflow aan met de logica erin (zie afbeelding 2). Op deze sub microflow wordt de foutafhandeling afgevangen, zodat we bij fouten een logging kunnen maken en het FlowResult op niet succesvol kunnen zetten. Ook de foutmelding wordt in het FlowResult gezet. Afhankelijk van het resultaat kun je dan in de microflow zelf of in de action nanoflow de gewenste vervolgactie uitvoeren.
Sub microflow vanaf action microflow
De sub microflow handelt alle logica af. Objecten worden hier gewijzigd, aangemaakt en verwijderd, berekeningen uitgevoerd, etc. Als er een onverwachte situatie optreed, dan zorgen we zelf voor een raise van een exceptie. Het is namelijk niet het gewenste en verwachte gedrag van de logica en dus een execptie. Op deze manier kan de action microflow opvangen wat er fout is gegaan en de juiste afhandeling (inclusief logging) uitvoeren.
Afbeelding 2
Aandachtspunten bij het pattern
Contact