Modellering van gevolgen en projecties
Dit is een verdieping van de handreiking op het gebied van het gevolgenjournaal en projecties.
Een registratie heeft te maken met mutaties die doorgevoerd worden in de loop van de tijd (commando-afhandeling) en dient allerhande bevragingen te kunnen beantwoorden over het heden en verleden. Om dit te effectief te kunnen doen leggen we beweringen als gevolgen van de taakuitvoering binnen een registratie vast. Deze gevolgen dienen als de basis voor afhandeling van elk commando en elke projectie: event sourcing.
In elk van de gevolgen ligt een mutatie, een verandering vast, in de vorm van een bewering (persoon x is geboren; de waarde van woz object y is vastgesteld). Deze veranderingen muteren entiteiten zodat na de verwerking van elk event één of meerdere nieuwe projectie-elementen ontstaan van één of meerdere entiteiten.
De collectie van beweringen over alle entiteiten die het register kent kunnen getransponeerd worden naar een meer 'klassiek' relationeel model: Uit de beweringen valt af te leiden dat entiteiten een identiteit, attributen en relaties met andere entiteiten hebben. Dit model is wat flexibeler dan in traditionelere opzet: er kunnen in de gevolgen relatief eenvoudig nieuwe beweringen bij komen over nieuwe attributen en nieuwe entiteiten. Dit model hoeft ook niet daadwerkelijk in zijn geheel geïmplementeerd te worden. Het kan dienen als conceptueel relationeel model om de relaties tussen entiteiten goed te begrijpen.
Om commando's te kunnen valideren maken we gebruik van de opnametoestand. de opnametoestand is een subset van het conceptuele relationele model opgebouwd uit de (relevante) gevolgen.
Hetzelfde principe geldt voor het beantwoorden van vragen (bevraging-beantwoordingen). We laden in een projectie een subset van het conceptuele relationele model op basis van de relevante gevolgen om de bevraging te kunnen beantwoorden.
In tegenstelling tot de commando's, die op de laatste toestand werken, kunnen er bij projecties ook bevragingen gedaan worden over het verleden. Naargelang de behoefte van de bevraging is het mogelijk om per gevolg toestanden vast te leggen, zodat vragen over het verleden beantwoord kunnen worden. Aangezien de resultaten van bevragingen gebruikt worden door afnemers, is dit voor hen de bron van waarheid, (source of truth). Het is van belang er met zorg wordt opgegaan met deze bron van waarheid voor de afnemers. De ultieme bron van waarheid, de single source of truth, blijft echter de verzameling gevolgen, gebeurtenissen op basis van het conceptuele relationele model.