GIS-architectuur, the next level

GIS-architectuur, the next level

Door Jordey Wijnbergen, software-architect Het ConsultancyHuis

Met één muisklik een compleet bodemverslag op je bureau hebben liggen. Met de juiste GIS-applicatie kan het. Klein probleem: die applicatie bestond tot voor kort niet. Liander besloot er zelf eentje te ontwikkelen, samen met Het ConsultancyHuis.

Liander krijgt wekelijks negenhonderd graafaanvragen van aannemers voor de aanleg van kabels. Conform de wet moet aan elke graafactiviteit een bodemonderzoek vooraf gaan naar de mogelijke aanwezigheid van verontreiniging. Bij Liander zat tot afgelopen jaar een hele batterij mensen klaar om deze onderzoeken – handmatig – uit te voeren. Ze richtte er zes jaar geleden als eerste nutspartij in Nederland zelfs een speciale afdeling voor op: Bodemdesk.

Verzamelen, interpreteren, presenteren
In 2017 startte Liander in samenwerking met Het ConsultancyHuis met de automatisering van de Bodemdesk. Eerste resultaat: de applicatie BodemVeiligheidsKlasseKaart (BVKK). Deze verzamelt en interpreteert álle facetten van de bodemgesteldheid op een bepaald tracé. Dat doet ze volledig automatisch. Aannemers ontvangen de resultaten van het onderzoek snel in een mooie pdf in hun mailbox.

Bodemgegevens
De compleetheid van de honderden rapportages per week en de snelheid waarmee ze worden samengesteld, verraden een slim informatiemodel. Via preprocessing-modules worden gegevens uit talrijke informatiebronnen verwerkt tot één bodemveiligheids-klassificatiekaart. Deze data vormen de basis waarop analysis kunnen worden uitgevoerd voor het opgegeven graaftracé met een minimale hoeveelheid administratieve gegevens. De informatiebronnen kunnen onder meer bestaan uit verslagen van de aanwezigheid van antropogene bodemlagen, om calamiteiten die zich op dat tracé hebben voorgedaan en om resultaten uit eerder uitgevoerde bodemonderzoeken. Verder genereert de applicatie informatie uit bijvoorbeeld BAG-viewer van het Kadaster, het Algemeen Hoogtebestand en tal van ruimtelijke plannen en provinciale/lokale geoservices. Deze informatie wordt vooraf verwerkt tot een model, waarop snel analyses kunnen worden uitgevoerd.

Handig ‘verpakt’ in een url
Een REST API ontsluit al deze gegevens. De REST API is niets anders dan een http-url voor het ontvangen en verzenden van data. REST API is laagdrempelig, snel en onafhankelijk van de technieken waarmee applicaties worden gemaakt. Als het http-protocol maar wordt ondersteund. Op dit moment gebruiken de ESRI WebApp Builder-widgets de REST API voor de HTML5/javascript-gebruikers-app. Dit zou evengoed een andere technologie kunnen zijn, bijvoorbeeld een iPhone-app of een Java-applicatie.

Eén vaste component, veel losse ‘events’
De Command and Query Responsibility Segregation (CQRS)-architectuur – een ‘next level’ architectuur – achter de applicatie kenmerkt zich door flexibiliteit. Grote kracht: taken (commands) zijn gescheiden van de presentatie-data (queries). Dit verlaagt de complexiteit van deze sterk procesgedreven applicatie. Voor de commands is er één centrale module die fungeert als ‘Berichtenservice’. Alle modules die taken uitvoeren, staan los van elkaar. De commands sturen ze aan. Is er een taak klaar, dan wordt dit als ‘event’ kenbaar gemaakt aan de applicatie via de ‘Berichtenservice’.

De taakuitvoerende module (saga) is verantwoordelijk voor het proces. Deze reageert op de events en weet welke volgende taak uitgevoerd moet worden. Groot voordeel daarvan: de stappen in het proces zijn niet aan elkaar vast geprogrammeerd. De status van het proces is dan ook niet afhankelijk van een interne variabele die alles bijhoudt, maar van het laatst ontvangen event.

Eenvoudige integratie
Dankzij events kan het systemen eenvoudig integreren met andere systemen. Wanneer een extern systeem klaar is met zijn werk, geeft het een seintje aan de applicatie via een REST API-request. Zodra via de ‘Berichtenservice’ het bijbehorende event is verzonden, pakt de sagamodule het proces automatisch op.

Onafhankelijkheid troef
Bijkomend voordeel van een event-gebaseerd systeem: er zijn nauwelijks if-statements. Als iemand de logica van een functie verandert (waardoor de uitkomst verandert), zijn de gevolgen alleen merkbaar in de bewuste module. De rest blijft gewoon doen wat ze moet doen. Ze reageren immers op een event. Voorbeeld: er wordt een analyse uitgevoerd op een graaftracé. Welke processtap na de analyse volgt, hangt af van de uitkomst. Is de grond schoon, dan verzendt de module een ‘Schoon Event’. Is de grond vervuild, dan volgt er een ‘Niet Schoon Event’. Dit gebeurt allemaal via de ‘Berichtenservice’. In beide gevallen zullen andere ‘Event Handlers’ reageren in de sagamodule en in beide gevallen worden andere vervolgcommands (processtappen) uitgevoerd. De logica van de sagamodule is dus niet afhankelijk van een true of false-uitkomst (boolean) van een functie in de analysemodule. We zien nu bij Liander dat het resulteert in een nagenoeg storingsvrij proces.

Agent houdt randsystemen in het oog
Om te voorkomen dat externe systemen de snelheid of accuratesse uit het proces haalt, bevat de applicatie ook een monitorfunctie. Deze ‘agent’ meldt het direct aan een medewerker als bijvoorbeeld de database of het content management-systeem een storing heeft. De monitorfunctie test elke twee minuten wat de status van de randsystemen is. Zo blijft het proces ‘lopen’ en worden verstoringen in de kiem gesmoord. Wanneer een systeem niet in staat is om zelf een terugmelding te geven aan Bodemdesk neemt de agent deze rol over. Voorbeeld: één van de externe systemen is verantwoordelijk voor het aanmaken van het verslag in het content management-systeem, inclusief kaart met graaftracé. Is het verslag aangemaakt, dan stuurt de agent een event via de ‘Berichtenservice’ om het proces verder te voltooien. Constateert de agent dat het rapport na een bepaalde tijd niet is aangemaakt terwijl dat wel zou moeten? Dan meldt hij dat automatisch aan medewerkers van Bodemdesk.

Na ruim zes maanden van ontwikkelen en bouwen maakt Liander nu ruim een jaar gebruik van de gloednieuwe GIS-applicatie. Het systeem verwerkt vrijwel storingsloos de talrijke graafaanvragen. In de (nabije) toekomst zal de toepassing verder worden verfijnd en uitgebreid.

Meer weten? Neem contact op met Jordey Wijnbergen, email: jordey.wijnbergen@hetconsultancyhuis.nl, telefoon: +31 6 21 30 67 83.

Jordey Wijnbergen van Het ConsultancyHuis was als lead developer verantwoordelijk voor de architectuur tijdens de softwareontwikkeling van de Bodemdesk-applicatie van Liander. Tijdens de GIS-conferentie 2018 van ESRI lichtten hij en Keje Schaakxs (Bodemdesk Liander) de oplossing samen toe.