Voorbeelden
Deze sectie bevat concrete, uitgewerkte code-casussen bij de handreiking betrouwbare registers. Geen abstracte architectuurschema's, maar werkende implementaties die je kunt lezen, draaien en aanpassen. De handreiking voorziet in de conceptuele uitleg; deze voorbeelden helpen om die beter te ervaren, te begrijpen en dieper inzicht te verkrijgen.
Alle voorbeelden in dit project zijn scenario's die gebouwd zijn in een echte applicatie. Voor elk voorbeeld geldt dat we functionaliteit gebouwd hebben in een JVM-gebaseerde backend en met behulp van een end-to-end test de data (commando's, gevolgen, projecties, et cetera) van dat scenario verzameld hebben. In deze frontend hebben we visualisaties gemaakt om de internals van het gebouwde systeem te presenteren. De technische keuzes en de broncode staan beschreven bij Implementatie.
Voor wie zijn deze voorbeelden?
Deze voorbeelden zijn bedoeld voor ontwikkelaars, architecten en analisten die werken aan capabele registers bij de overheid. We gaan in principe uit van bekendheid met de handreiking, al zijn de voorbeelden ook juist bedoeld om de handreiking (verder) uit te leggen. Daarnaast verwijzen we waar nodig door naar de verdieping binnen deze sectie, of naar de conceptuele achtergrond in Achtergronden: Inspiratie.
Hoe zijn de voorbeelden georganiseerd?
Deze sectie bestaat uit vier onderdelen: twee casussen, plus de technische en conceptuele verdieping die je nodig hebt om ze goed te kunnen lezen.
De casussen zelf zijn uitgewerkt per domein. Hoe ver elk domein is uitgewerkt, is afhankelijk van welke voorbeelden we hebben willen uitwerken en willen laten zien. Elk voorbeeld heeft tags voor de verschillende aspecten uit de handreiking of met verschillende niveaus van complexiteit: basic, advanced, complex. De meer eenvoudige voorbeelden dienen als uitleg van de concepten uit de handreiking, terwijl de meer geavanceerde of complexe voorbeelden dienen als bewijs (en inspiratie voor implementatie) dat de concepten uit de handreiking ook werken bij hele complexe gevallen.
Een uitgebreide casus is de casus WOZ, de Wet waardering onroerende zaken. Deze casus is uitgewerkt van het domein naar bounded contexten en van notificaties en contextovergangen naar commando's naar gevolgen en projecties.
Een ander complex domein is de casus BRP, de Basisregistratie Personen. Deze casus is vooral dankbaar om complexiteit rondom mensen en hun levensgebeurtenissen te laten zien. Heel herkenbaar en 'voelbaar' als domein. Deze casus is vooral gebruikt om naast de casus WOZ extra, bijzonder complexe situaties te laten zien waarvoor zelfs de WOZ 'te eenvoudig' is.
Implementatie beschrijft de technische keuzes achter de referentie-implementatie: de gekozen technologiestack, de indeling in bounded contexten en hoe de casussen daadwerkelijk zijn gebouwd.
Verdieping werkt onderwerpen uit die in de casussen worden aangeraakt maar meer toelichting verdienen, zoals tijdstippen en geldigheid, bitemporaliteit, correctie van gevolgen en de bitemporele payloadstore.
Hoe gebruik je de voorbeelden?
Niet als blauwdruk om blind te kopiëren. Elk register is anders; jouw domein heeft andere grenzen, andere taal, andere regels dan WOZ.
Gebruik de voorbeelden als vertrekpunt en referentie:
- Ze laten zien hoe je een bounded context afbakent en die keuze vastlegt.
- Ze laten zien hoe commando's en gevolgen eruitzien in werkende code.
- Ze laten zien hoe de scheiding tussen bijhouding en verstrekking (CQRS) in de praktijk werkt.
- Ze laten zien waar een contextovergang plaatsvindt en hoe je die expliciet maakt.
Lees de handreiking en de voorbeelden naast elkaar. De handreiking legt uit waarom; de voorbeelden laten zien hoe.