Ga naar hoofdinhoud

WOZ Axon Kotlin

Deze beproeving laat zien hoe de principes uit de handreiking Uit betrouwbare bron zich vertalen naar werkende software. Het systeem realiseert een capabel WOZ-register op basis van event sourcing, CQRS en domain-driven design. De technologiekeuzes zijn concreet: Kotlin, Axon Framework 5, Spring Boot en Postgres. Het systeem is volledig werkend en lokaal te draaien.

Aanpak

De technologiekeuzes zijn bewust gemaakt en gedocumenteerd in ADRs - zie ADR-directory op GitLab. Kotlin biedt expressieve typen en uitstekende ondersteuning voor domeinmodellen. Axon Framework 5 biedt native ondersteuning voor event sourcing en CQRS, inclusief het concept van de Dynamic Consistency Boundary — een directe vertaling van het idee dat consistentiegrenzen expliciet moeten zijn, niet impliciet verborgen in databasetransacties.

Het domein is opgedeeld in bounded contexten: WOZ Objectbeheer, Waardebepaling, Heffing OZB en Beschikking & aanslag. Elke bounded context heeft zijn eigen taal en zijn eigen model. De communicatie tussen bounded contexten verloopt via expliciete grenzen.

De meest in het oog springende contextovergang is die tussen de externe bronnen BRK en BAG enerzijds en WOZ Objectbeheer anderzijds. Die bronnen spreken hun eigen taal — de BRK heeft tenaamstellingen, het WOZ-domein heeft belangen. De contextovergang maakt die vertaling expliciet en belegt de verantwoordelijkheid op één plek in de code.

Uitgewerkte voorbeelden

Vanuit deze beproeving zijn diverse uitgewerkte casussen afgeleid, te vinden onder Casus WOZ. Die casussen lopen van objectregistratie tot formele beschikking en zijn bedoeld om de concepten uit de handreiking concreet te maken — niet als abstracte schema's, maar als leesbare stappen door het domein.

Bij de casussen hoort een interactieve ProjectieViewer die laat zien hoe gevolgen (events) leiden tot projecties: je ziet live welke toestand het register heeft na elke stap. De data die gebruikt wordt in deze voorbeelden en zichtbaar wordt gemaakt in de ProjectieViewer, zijn het resultaat van werkende voorbeelden in deze beproeving. Deze tests zijn te vinden in de test-directory op GitLab.

Broncode

De broncode is beschikbaar op GitLab. Het systeem is lokaal te draaien via Docker Compose en Gradle.