Ga naar hoofdinhoud

Gevolg-archetypen

Het gevolgenjournaal is een volledige en onveranderlijke vastlegging van alle gevolgen die binnen een register werden geproduceerd, in de volgorde waarin die gevolgen ontstonden. In een eerder hoofdstuk is te lezen dat gevolgen over aggregates gaan. Om goed te kunnen beschrijven wat er gebeurt met een aggregate, herkennen we een aantal verschillende gevolg-archetypen.

Elk gevolg legt een verandering vast die zich heeft voorgedaan op een bepaald tijdstip. Typisch zijn gevolgen opvolgend: ze beschrijven een nieuwe opvolgende mutatie. In een betrouwbaar register herkennen we echter ook mutaties die gelden met terugwerkende kracht: correctie, onttrekking en nietigverklaring. De erkenning van deze mutatievormen geeft ons een aantal gevolg-archetypen: het type mutatie dat een gevolg doorvoert.

Gevolgen op de geldigheidstijdlijn

De meeste gevolgen bevinden zich op de tijdlijn van één of meer aggregates. Ze hebben typisch een gebeurd-op-tijdstip — het tijdstip waarop de verandering in de 'echte wereld' ingegaan is — en beïnvloeden de state van het aggregate vanaf dat moment. Dit reguliere archetype is op te splitsen in twee varianten:

Het begingevolg — markeert het ontstaan van een aggregate. Voorbeelden zijn het ontstaan van een WOZ-object bij nieuwbouw of de registratie van een geboorte in de BRP.

Het opvolgend gevolg — volgt na elk eerder gevolg (een begingevolg of een ander opvolgend gevolg). Denk aan een overdracht van eigendom, een naamswijziging, of een verhuizing. Het gevolg bouwt chronologisch voort op wat er eerder vastgelegd is.

Ingrijpen op de tijdlijn

Naast reguliere gevolgen die zich op de tijdlijn van een aggregate bevinden, hebben we 'metagevolgen' die uitspraken doen over de gevolgentijdlijn met terugwerkende kracht: Op een bepaald moment in de tijd wordt vastgesteld dat een eerdere registratie niet klopte, en hersteld moet worden.

Correctie

Wanneer een eerdere registratie in het register onjuist is gebleken dient dit gecorrigeerd te worden. Een correctie is geen reguliere mutatie, het is een mutatie met terugwerkende kracht. Een correctie combineert twee mutaties in één atomaire handeling:

  1. Onttrekking van de oorspronkelijke (verkeerde) gevolgen
  2. Toevoeging van ontbrekende en/of verbeterde gevolgen.

Het correctiegevolg is een gevolg zoals elke andere, en wordt toegevoegd aan het append only gevolgenjournaal. Het doel van een correctie is het mogelijk te maken de gevolgen op de geldigheidstijdlijn te reconstrueren zoals deze hadden moeten zijn. : De lijst van gevolgen op de geldigheidstijdlijn exclusief de onttrokken gevolgen en inclusief de ontbrekende gevolgen.

Nietigverklaring

Wanneer een eerdere registratie ongeldig is gebleken dient dit nietig verklaard te worden. Deze mutatie lijkt veel op correcties, zowel conceptueel as qua implementatie, maar verschilt subtiel. Correctie dienen uitgevoerd te worden in het geval het register feitelijk afwijkt: foutieve gegevens dienen gecorrigeerd te worden.

Bij een nietigverklaring is dit minder eenduidig: typisch een entiteit buiten het register (zoals een rechter) verklaart een bepaald gegeven in de echte wereld nietig. Een huwelijk dat echt gesloten is wordt ongedaan gemaakt; een besluit over de WOZ waarde wordt ongeldig verklaard.

Bij correcties waren de foutieve gegevens nooit geldig, terwijl bij een nietigverklaring de betreffende gegevens tot de nietigverklaring wel geldig waren (maar daarna met terugwerkende kracht niet meer). Foutieve informatie wil je niet als zijnde correct ontsluiten; bij een nietigverklaring is dit minder eenduidig. Behandel je nietigverklaring als een correctie en 'wis' je de tijdlijn? Of ga je met terugwerkende kracht de nietigverklaring communiceren?

Implementatie

In de voorbeelden hebben we deze archetypen geïmplementeerd als interfaces die gebruikt kunnen/moeten worden in de concrete implementaties.