Initiële registratie van partijen

Casusbeschrijving

In deze casus wordt een aantal personen geregistreerd als partij.

Om deze casus uit te voeren wordt de test vul_partijen uitgevoerd met “make vul_partijen”. (Zie de toelichting hoe deze moet worden uitgevoerd).

Nadat de command voor het vullen van partijen is uitgevoerd zijn alle claims en annotaties voor deze partijen geregistreerd.

De claimtype expressies zijn te vinden in de beschrijvingen van Objecttype Partij en Objecttype PartijIdentificator

Transacties

Iedere partij en bijbehorende partij-identificatoren wordt in één transactie geregistreerd. Dat betekent dat per partij en bijbehorende partij-identificatoren alle bijbehorende claims en annotaties dezelfde waarde kennen voor het registratiemoment (registeredAt). Als er een error optreedt dan worden alle claims die in de lopende transactie zijn geregistreerd in een rollback weer verwijderd.

Notificatie

In deze casus komen wijzigingen tot stand op basis van een binnenkomend bericht. De veronderstelling is dat dit bericht binnen het domein is opgesteld en direct als commando verwerkt wordt. Een andere mogelijke inrichting is dat dit proces in gang gezet wordt door een bericht dat is opgesteld buiten het domein en als (informatierijke) notificatie ontvangen en verwerkt wordt.

Indien het een notificatie zou betreffen is in onderstaand overzicht te zien hoe een notificatie tot commando’s, effecten (verwerkingsstappen? , gevolgen?) en claims wordt verwerkt.

Notificatieverwerking

Van notificatiebericht naar commando

Van het binnenkomende notificatiebericht moet worden vastgesteld dat het een valide notificatiebericht zou kunnen zijn en geen onderdeel is van een DDOS-aanval of input bevat die onmogelijk verwerkbaar zou kunnen zijn.

Als het bericht ontvangen is vinden de volgende bewerkingstappen plaats.

Notificatieverwerker ontvangt notificatiebericht voert de volgende stappen uit:

Noot: De Notificatieverwerker is niet geïmplementeerd in het prototype. Het omzetten van XML naar Json is niet nieuw en er is voor gekozen om deze stap over te slaan. De werkende casus begint dus vanaf het commando.

Commando

    command_str = """
        {
            "command": {
                "commandId": "dea6cfc7-8c21-4ca3-9611-9e0fe46771f3",
                "commandType": "registreer_partijen"
            },
            "data": [
                {
                "partij": 
                    {
                        "geldigVanaf": "2024-11-29T11:05:00.000+00:00",
                        "partijId": "39d50c05-311d-45cc-a931-ed03c5ffae93",
                        "nummer": 440001,
                        "voornaamContactnaam": "Alfred Jodocus", 
                        "achternaamContactnaam": "Kwak",
                        "soortPartij": "Persoon", 
                        "partijIdentificator": [
                            {
                                "id": "003e953a-dfc4-411b-a94e-55a7739c67df",
                                "identificator": {
                                    "objectType": "Natuurljk persoon",
                                    "soortObjectId": "identificatie",
                                    "objectId": "456787655",
                                    "register": "Basisregistratie Kadaster"
                                }
                            },
                            {
                                "id": "ff460b2d-5089-46ab-8828-1420ab437b42",
                                "identificator": {
                                    "objectType": "Geregistreerd Persoon",
                                    "soortObjectId": "burgerservicenummer",
                                    "objectId": "000000038",
                                    "register": "Basisregistratie Kadaster"
                                }
                            }
                        ]
                    }
                },
                {
                "partij":
                  {
                    "geldigVanaf": "2024-09-29T11:05:00.000+00:00",
                    "partijId": "a56b1754-f6f5-4e0c-a820-a1c0abea42ec",
                    "nummer": 346564832,
                    "voornaamContactnaam": "Dagobert", 
                    "achternaamContactnaam": "Duck",
                    "soortPartij": "Persoon"
                  }
                },
                {
                "partij":
                  {
                    "geldigVanaf": "2024-04-29T11:05:00.000+00:00",
                    "partijId": "00e976f3-310e-455d-8d23-dd08774e2c15",
                    "nummer": 346564833,
                    "voornaamContactnaam": "Howard",
                    "voorvoegselsContactnaam": "the", 
                    "achternaamContactnaam": "Duck",
                    "soortPartij": "Persoon"
                  }
                },
                {
                "partij": 
                    {
                        "geldigVanaf": "2024-04-29T11:05:00.000+00:00",
                        "partijId": "4bec755e-d9de-43fd-8c6b-cca75fd1a41d",
                        "nummer": 346564817,
                        "achternaamContactnaam": "DisqgCotivao",
                        "voornaamContactnaam": "Joraraduy",
                        "voorlettersContactnaam": "J.",
                        "voorvoegselsContactnaam": "de",
                        "nummeraanduidingBezoekadres": "",
                        "adresregel1Bezoekadres": "Merellaan 14",
                        "adresregel2Bezoekadres": "3135KN Vlaardingen",
                        "indicatieGeheimhouding": "wel",
                        "soortPartij": "Persoon",
                        "partijIdentificator": [
                            {
                                "id": "84e0db97-6c4f-44d1-9373-635c8df40180",
                                "identificator": {
                                    "objectType": "Natuurljk persoon",
                                    "soortObjectId": "identificatie",
                                    "objectId": "9896266146",
                                    "register": "Basisregistratie Kadaster"
                                }
                            },
                            {
                                "id": "11f71197-b27c-4a7c-bf4a-7edaffb1e5b6",
                                "identificator": {
                                    "objectType": "Geregistreerd Persoon",
                                    "soortObjectId": "burgerservicenummer",
                                    "objectId": "000000012",
                                    "register": "Basisregistratie Kadaster"
                                }
                            }
                        ]
                    }
                },
                {
                "partij": 
                    {
                        "geldigVanaf": "2024-07-08T15:14:00.000+00:00",
                        "partijId": "de7511e3-e624-4639-a578-ddce9e2835ad",
                        "nummer": 167245414,
                        "achternaamContactnaam": "Cotineosuradi",
                        "voornaamContactnaam": "Jodoinfama",
                        "voorlettersContactnaam": "J.",
                        "voorvoegselsContactnaam": "de",
                        "nummeraanduidingBezoekadres": "0353200010075342",
                        "landBezoekadres": "Nederland",
                        "nummeraanduidingCorrespondentieadres": "",
                        "adresregel1Correspondentieadres": "Overtoom 1 GA",
                        "adresregel2Correspondentieadres": "3401BK IJsselstein",
                        "adresregel3Correspondentieadres": "Provincie Utrecht",
                        "landCorrespondentieadres": "Nederland",
                        "indicatieGeheimhouding": "wel",
                        "soortPartij": "Persoon",
                        "interneNotitie": "Blijkbaar woont deze persoon in een sporthal en onvangt zijn correspondentie via het adres van het gemeentehuis.",
                        "partijIdentificator": [
                            {
                                "id": "e8f7f9c2-75b9-41ff-a9f9-0d90d26bfe68",
                                "identificator": {
                                    "objectType": "Natuurljk persoon",
                                    "soortObjectId": "identificatie",
                                    "objectId": "9896266147",
                                    "register": "Basisregistratie Kadaster"
                                }
                            },
                            {
                                "id": "21f147a7-bf98-4822-91eb-37c2d0d88486",
                                "identificator": {
                                    "objectType": "Geregistreerd Persoon",
                                    "soortObjectId": "burgerservicenummer",
                                    "objectId": "000000013",
                                    "register": "Basisregistratie Kadaster"
                                }
                            }
                        ]
                    }
                }
            ]
        }
    """

Verwerking

Het commando wordt aangeboden aan het systeem en de eerste stap in de verwerking is het vastleggen van de inhoud van het commando en de registratietijd en, waar mogelijk de context van het commando.

Vervolgens wordt het commando door de commandoverwerker “registreer_partijen” verwerkt tot effecten (gevolgen). In dit geval onstaan er 5 effecten om partijen te registreren en 6 effecten om partijidentificatoren te registreren. De effecten worden na ontstaan zelf geregistreerd en vervolgens worden de effecten verwerkt door de effectverwerkers “registreer_partij” en “registreer_partijidentificator” . Bij deze verwerking worden de claims en annotaties vastgelegd in de Atomic Claim Engine (ACE).

Nadat de command voor het vullen van partijen is uitgevoerd zijn alle claims en annotaties voor de partijen en partijidentificatoren geregistreerd.

Voor het verwerken van dit commando tot effecten is de domeinkeuze gemaakt om voor iedere partij én voor iedere partij-identificator een effect (gevolg ? verwerkingsstap?) aan te maken. De overweging daarbij is dat een partij-identificator ook later (op basis van een ander commando) kan worden vastgelegd bij een partij.

Het is verdedigbaar als er voor zou worden gekozen om de registratie van een Partij met bijbehorende Partij-identificatoren als één effect (gevolg?) te onderkennen.

Lineage

De lineage geeft de context weer tussen command, gevolgen en claims per objecttype. Om de lineage te kunnen weergeven is iedere claim (ook annotaties) voorzien van een context-annotatie die verwijst naar het commando of het gevolg dat geleid heeft tot het vastleggen van deze claim. De context wordt in dit overzicht gerepresenteerd door de lijnen tussen de blokjes. Alle individuele context_annotaties van een gegroepeerd object zijn dus geconsolideerd in 1 verbindings-lijn.

De lineage wordt aangemaakt door na het verwerken van het command tweemaal de call_lineage-module aan te roepen. Deze aanroep is verwerkt in “vul_partijen”. Dit resulteert in de volgende twee weergaven van de lineage:

Lineage-roles

In deze weergave worden alleen de claimroles met hun waarden getoond. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )

Lineage-claims

In deze weergave worden de volledige claim-expressies getoond. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )

Objectweergave

Het laatste inzicht dat geboden wordt naar aanleiding van deze casus is een weergave waarbij de claims zijn gegroepeerd op object-niveau content_claims. Daarbij worden ook alle annotaties die zijn geregistreerd getoond. Ook voor deze weergave geldt dat het image ter illustratie is en dat via de link een weergave op mermaid.live getoond kan worden waarbij ingezoomd kan worden. Deze weergave wordt gegenereerd door de content_claims-module aan te roepen. Deze aanroep is verwerkt in “vul_partijen”.

Objectweergave van partij-objecten

Onderstaand zijn de claims die n.a.v. de casus vul_partijen zijn vastgelegd gegroepeerd weergegeven. Tevens is er een relatie weergegeven tussen het partij-object en de daarbijbehorende partijidentificator-objecten. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )