Titel | Transactiepatronen |
Status |
|
Versie | 1.0.0 |
Datum | 27 Mei 2024 |
Auteur | Architectenraad Edu-V |
Acties |
|
In het Afsprakenstelsel Edu-V worden afspraken gemaakt over de uitwisseling van gegevens tussen Leveranciers ten behoeve van digitale leer- en onderwijsmiddelen. Voor de praktijksituaties zijn de concrete gegevensuitwisselingen nader uitgewerkt. Om het Ecosysteem laagdrempelig te houden werken we in de architectuur met een beperkt aantal transactiepatronen voor machine-to-machine (M2M) gegevensuitwisseling.
Deze pagina bestaat uit de volgende inhoud:
Om het Ecosysteem laagdrempelig te houden werken we in de architectuur met een beperkt aantal patronen voor machine-to-machine (M2M) gegevensuitwisseling.
In een patroon worden afspraken gemaakt over:
Richting: eenzijdige of tweezijdige communicatie.
Initiatief: push vanuit de Verzender of pull vanuit de Afnemer.
Communicatie: synchroon of asynchroon versturen en ontvangen.
Verwerking: synchroon of asynchroon verwerken.
Binnen het de architectuur van Edukoppling voor M2M gegevensuitwisselingen binnen het onderwijs zijn diverse bedrijfstransactiepatronen* uitgewerkt:
Naam | Patroon | Toelichting | Uitwerking |
---|---|---|---|
Bevraging | Request-Response | Een bevraging is een vraag vanuit een Afnemer waar direct een antwoord op wordt verwacht vanuit de Bron. | Richting: Eenzijdig |
Melding-bevestiging | Melding-bevestiging | Bij de Melding-bevestiging verstuurt de Verzender een melding waar een Ontvanger vervolgens mee aan de slag gaat. | Richting: Eenzijdig |
Asynchrone uitwisseling | Melding-bevestiging Terugmelding-bevestiging | Een asynchrone uitwisseling is twee keer het patroon melding-bevestiging in verschillende richtingen. Eerst wordt een melding gestuurd en de ontvangst bevestigd. Op een later tijdstip, als de melding is verwerkt wordt een terugmelding gestuurd en wordt de ontvangst daarvan bevestigd. | Richting: Tweezijdig Melding Terugmelding |
Abonneren op wijzigingen middels notificaties → → → | Request-Response (abonneerservice) Melding-bevestiging (notificatieservice) Request-Response | Bij een abonnement op wijzigingen middels notificaties is het mogelijk om als ontvanger op de hoogte te worden gesteld bij een wijziging. | Richting: Tweezijdig Abonneerservice Notificatieservice Resource-service |
* Het bedrijfstransactiepatroon Polling is een anti-patroon en wordt afgeraden. Het bedrijfstransactiepatroon Grote berichten is niet van toepassing op het Edu-V afsprakenstelsel.
De transactiepatronen van Edukoppeling zijn gericht op een bilaterale uitwisseling van gegevens tussen twee Leveranciers. In een proces kan er ook sprake zijn van een opeenvolging van bilaterale gegevensuitwisselingen in een multilaterale setting. We onderkennen twee vormen van coördinatie:
Naam | Patroon | Toelichting |
---|---|---|
Notificeren van abonnees | Abonneren op wijzigingen middels notificaties | De Bron coördineert het versturen van notificaties naar alle geabonneerde Afnemers. De Bron verwacht geen terugmelding van de Afnemer. De Afnemer is verantwoordelijk voor het correct verwerken van de notificatie en het bijwerken van de gegevens. |
Georkestreerde uitwisseling | Meerdere opeenvolgende Asynchrone uitwisselingen | De Verzender coördineert meerdere opeenvolgende asynchrone uitwisselingen tussen meerdere Ontvangers. De Verzender verwacht wel een terugmelding van de Ontvanger. Op basis van deze terugmelding kan de Verzender een volgende asynchrone uitwisseling starten. Op deze manier kan een Verzender er zorg voor dragen dat alle betrokken Ontvangers in de multilaterale setting beschikken over dezelfde statusinformatie ten aanzien van het gegeven. |
De coördinatievorm Notificeren van abonneren is reeds beschreven in het transactiepatroon Abonneren op wijzigingen middels notificaties. De georkestreerde uitwisseling is een aanvulling op de transactiepatronen en als zodanig separaat uitgewerkt in het afwegingskader.
In een gegevensuitwisseling worden gegevens uitgewisseld van Leverancier A naar Leverancier B. Het is van belang om hierbij heldere definities te hanteren voor de transactierollen die de leverancier in de gegevensuitwisseling uitoefenen. De transactierollen zijn toegelicht in onderstaand overzicht:
Transactiepatroon | Transactierol | Omschrijving |
---|---|---|
Bevraging | Bron | De bron wordt bevraagd door een afnemer en verstrekt gegevens. |
Afnemer | De afnemer bevraagt een bron en ontvangt gegevens. | |
Abonneren op wijzigingen middels notificaties | Bron | De bron verstuurt een notificatie naar alle afnemers die geabonneerd zij op wijzigingen. De bron wordt vervolgens door een afnemer bevraagt en verstrekt de gewijzigde gegevens. |
Afnemer | De afnemer abonneert zich bij een bron op notificaties. De afnemer ontvangt een notificatie van de bron dat er gegevens gewijzigd zijn. De afnemer bevraagt de bron en ontvangt de gewijzigde gegevens. | |
Melding–bevestiging | Verzender | De verzender verstuurt gegevens naar een ontvanger. |
Ontvanger | De ontvanger ontvang gegevens van een verzender. | |
Asynchrone of Georkestreerde uitwisseling | Verzender | De verzender verstuurt gegeven naar een ontvanger en is zelf ontvanger van de terugmelding. |
Ontvanger | De ontvanger ontvangt gegevens van een verzender en is zelf verzender van de terugmelding. |
De keuze van een transactiepatroon is afhankelijk van het proces waarin de gegevensuitwisseling plaats vindt. Hierbij is het van belang om te kijken naar de karakteristieken die gelden voor en omtrent de gegevensuitwisseling in het proces:
Communicatie: betreft het een bilaterale of multilaterale setting.
Voorspelbaarheid: betreft het een al dan niet planbare gegevensuitwisseling die incidenteel of structureel plaatsvindt.
Complexiteit: vindt de gegevensuitwisseling in een eenvoudige of complexe setting plaats. Complexiteit kan verhoogd worden door behoefte aan persistentie, actualiteit, traceerbaarheid, volgordelijkheid, alternatieve paden en ongedaan maken (roll back)
Volume: leidt de gegevensuitwisseling tot een hoog volume en kan er sprake zijn van een piekbelasting
In aanvulling op deze karakteristieken van het proces, kent een transactiepatroon ook eigenschappen die impact hebben op:
Binding en afhankelijkheid: in hoeverre zijn systemen afhankelijk van elkaar en kunnen ze autonoom opereren.
Betrouwbaarheid: hoe zeker kunnen referentiecomponenten zijn dat de gegevens correct zijn ontvangen en verwerkt.
Schaalbaarheid en elasticiteit: in hoeverre zijn referentiecomponenten in staat om bevragingen, verzending, ontvangst en verwerking op of af te schalen.
Complexiteit: hoe complex is het voor leveranciers om het transactiepatroon te implementeren, onderhouden, door te ontwikkelen en te testen.
Voor ieder van de transactiepatronen is een afwegingskader ontwikkeld dat door de werkgroepen gebruikt kan worden om een keuze te maken.
In dit patroon vraagt een afnemer de actuele gegevens van een entiteit uit een gegevensbron op bij de bron. De aanvraag wordt synchroon door de bron verwerkt en in de response worden de opgevraagde gegevens aan de afnemer verstuurd. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Bilateraal 1-op-1 |
|
Voorspelbaarheid | Incidenteel |
|
Complexiteit | Laag |
|
Volume | Laag met in pieken hoog volume |
|
Het voordeel van dit patroon is de lage complexiteit en de hoge betrouwbaarheid. Het nadeel van dit patroon ligt hem in de hoge afhankelijkheid en de middel schaalbaarheid.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Hoog | Door synchrone verwerking is de koppeling en afhankelijkheid tussen bron en afnemer hoog. Indien bron niet online is dan kan de afnemer de gegevensuitwisseling niet voltooien. |
Betrouwbaarheid | Hoog | Door synchrone verwerking is de betrouwbaarheid van de gegevensuitwisseling hoog. Afnemer kan direct reageren op een foutmelding van de bron. |
Schaalbaarheid en elasticiteit | Middel | Performance is afhankelijk van de schaalbaarheid en elasticiteit van voornamelijk de bron. |
Complexiteit | Laag | De onderhoudbaarheid en doorontwikkeling is hoog omdat het een bilaterale uitwisseling tussen twee partijen betreft. De testbaarheid is hoog door synchrone verwerking. |
Dit patroon kan bijvoorbeeld toegepast worden in de volgende voorbeelden:
Zodra referentiecomponenten op elkaar zijn aangesloten vraagt de afnemer de initiële stand van gegevens op bij een bron. Hierna kan de afnemer ervoor kiezen om zich te abonneren op wijzigingen en notificaties te ontvangen of zelf periodiek de stand te actualiseren (zie volgende voorbeeld). |
De afnemer vraagt periodiek (bijvoorbeeld iedere nacht) aan de bron om alle wijzigingen op een stand toe te sturen. In de aanvraag specificeert de afnemer een mutatiedatum. De bron stuurt alle entiteiten toe die die gewijzigd zijn na deze mutatiedatum. |
Een Onderwijsorganisatie stapt over van de ene naar de andere applicatie. De gegevens worden eenmalig gemigreerd naar de nieuwe applicatie. In plaats van een export en import wordt gebruik gemaakt van dit patroon om de gegevens M2M bij te werken. |
Een afnemer vraagt de actuele gegevens van een enkele entiteit op. Een voorbeeldtoepassing is bijvoorbeeld het opvragen van gegevens ten behoeve van supportvragen of het opvragen van actuele licentiegegevens en leermiddelengebruik. |
In dit patroon stuurt een verzender een entiteit naar een ontvanger middels een melding. De ontvanger reageert met een bevestiging van ontvangst en verwerkt de inhoud asynchroon. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Bilateraal 1-op-1 |
|
Voorspelbaarheid | Structureel |
|
Complexiteit | Laag |
|
Volume | Laag met in pieken hoog volume |
|
Het voordeel van dit patroon is de hoge schaalbaarheid en elasticiteit en de lage binding tussen verzender en ontvanger en de lage complexiteit. Het nadeel van dit patroon ligt hem in de betrouwbaarheid.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Laag | Door asynchrone verwerking is de verzender minder afhankelijk van de ontvanger. Door asynchrone verwerking kan een ontvanger die offline was op een later moment de melding ophalen en alsnog verwerken. |
Betrouwbaarheid | Middel | Door asynchrone verwerking en niet versturen van bevestigingsbericht is verzender niet op de hoogte van correcte verwerking door ontvanger. |
Schaalbaarheid en elasticiteit | Hoog | Door asynchrone verwerking kunnen zowel verzender als ontvanger op eigen schaalgrootte opereren. Verzender kan ook meldingen parallel versturen. |
Complexiteit | Laag | De onderhoudbaarheid en doorontwikkeling is hoog omdat het een bilaterale uitwisseling tussen twee partijen betreft. De testbaarheid is middel door asynchrone verwerking. |
Dit patroon kan bijvoorbeeld toegepast worden in de volgende voorbeelden:
Een gebruiker wil in een overkoepelend dashboard leermiddelengebruik inzien. De verzender heeft verder geen belang bij verwerking van deze gegevens door de ontvanger (het overkoepelend dashboard). De verzender stuurt een melding naar de ontvanger en ontvanger reageert met een bevestiging van ontvangst. |
In dit patroon stuurt een verzender een entiteit naar een ontvanger middels een melding. De ontvanger reageert met een bevestiging van ontvangst en verwerkt de inhoud asynchroon. Vervolgens stuurt de ontvanger een terugmelding naar de verzender. De ontvanger reageert met een bevestiging van ontvangst. Verzender is in dit geval op de hoogte van de verwerking door ontvanger. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Bilateraal 1-op-1 |
|
Voorspelbaarheid | Structureel |
|
Complexiteit | Middel |
|
Volume | Laag met in pieken hoog volume |
|
Het voordeel van dit patroon is de hoge schaalbaarheid en elasticiteit en de lage binding tussen verzender en ontvanger. Het nadeel van dit patroon ligt hem in de betrouwbaarheid en complexiteit.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Laag | Door asynchrone verwerking is de verzender minder afhankelijk van de ontvanger. Door asynchrone verwerking kan een ontvanger die offline was op een later moment de melding ophalen en alsnog verwerken. |
Betrouwbaarheid | Middel | Door asynchrone verwerking en niet versturen van bevestigingsbericht is verzender niet op de hoogte van correcte verwerking door ontvanger. |
Schaalbaarheid en elasticiteit | Hoog | Door asynchrone verwerking kunnen zowel verzender als ontvanger op eigen schaalgrootte opereren. Verzender kan ook meldingen parallel versturen. |
Complexiteit | Middel | De onderhoudbaarheid en doorontwikkeling is hoog omdat het een bilaterale uitwisseling tussen twee partijen betreft. De implementatie is middel doordat verzender rekening moet houden met een terugmelding door ontvanger. De testbaarheid is middel door asynchrone verwerking. |
Dit patroon kan bijvoorbeeld toegepast worden in de volgende voorbeelden:
Bij het verlenen van toestemming op het uitwisselen van gegevens wordt er altijd bij de bron of verzender toestemming verleend. In het geval van het ontvangen van gegevens is het mogelijk dat de ontvangende referentiecomponent eerst bevestiging vraagt aan de applicatiebeheer. Zodra deze bevestiging is verleend wordt er een terugmelding gestuurd naar de verzendende referentiecomponent. Deze kan vervolgens starten met het verzenden van de gegevens. |
In dit patroon abonneert een afnemer zich bij een bron op een wijziging van entiteiten uit een gegevensbron. Een bron notificeert de afnemer bij een wijziging van de entiteit door het versturen van een melding. De afnemer reageert met een ontvangstbevestiging en kan vervolgens asynchroon de gewijzigde entiteiten opvragen. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Bilateraal 1-op-1 |
|
Voorspelbaarheid | Structureel |
|
Complexiteit | Middel |
|
Volume | Laag met in pieken hoog volume |
|
Het voordeel van dit patroon is de hoge schaalbaarheid en elasticiteit en de lage binding tussen referentiecomponenten. De nadelen van dit patroon liggen hem in de betrouwbaarheid en de complexiteit.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Laag | Door asynchrone verwerking is de bron minder afhankelijk van de afnemer. Door asynchrone verwerking kan een afnemer die offline was op een later moment de melding ophalen en alsnog verwerken. |
Betrouwbaarheid | Middel | Door synchrone aflevering en abonnementen kunnen wijzigingen effectief gedeeld worden met alle relevante afnemers. |
Schaalbaarheid en elasticiteit | Hoog | Door asynchrone verwerking kunnen zowel bron als afnemer op eigen schaalgrootte opereren. De bron kan ook meldingen parallel versturen. |
Complexiteit | Hoog | Het bijhouden van abonnees vraagt om logica bij de bron. Het correct verwerken van notificaties vraagt om logica bij de afnemer. De onderhoudbaarheid en doorontwikkeling is laag omdat er meerdere abonnees zijn die gebruik maken van een notificatiedienst. De testbaarheid is middel door asynchrone verwerking. |
Dit patroon kan bijvoorbeeld toegepast worden in de volgende scenario’s:
Een afnemer abonneert zich op wijzigingen over entiteiten in een bron. Hierdoor hoeft de afnemer niet meer periodiek de laatste stand op te vragen en wordt deze direct op de hoogte gebracht indien er een wijzigingen van een entiteit heeft plaatsgevonden. De referentiecomponent van afnemer kan hierdoor sneller de wijzigingen doorvoeren. Een voorbeeldtoepassing van dit patroon is het up-to-date houden van gegevens over Lesgroepen uit het administratiesysteem onderwijsdeelnemers of gegevens over leermiddelen uit de leermiddelencatalogus. |
In dit patroon orkestreert de Verzender meerdere asynchrone gegevensuitwisselingen in een kritieke volgorde om zo een transactie te voltooien. Dit patroon leent zich goed voor gegevensuitwisselingen met de volgende kenmerken:
Kenmerk | Invulling | Toelichting |
---|---|---|
Communicatie | Multilateraal 1-op-N |
|
Voorspelbaarheid | Structureel |
|
Complexiteit | Hoog |
|
Volume | Hoog met pieken |
|
Het voordeel van dit patroon is de hoge betrouwbaarheid, de hoge schaalbaarheid en elasticiteit, de lage binding tussen deelnemers. Het nadeel van dit patroon is de hoge complexiteit.
Afweging | Effect | Toelichting |
---|---|---|
Binding en afhankelijkheid | Laag | Door asynchrone verwerking is de verzender minder afhankelijk van de ontvanger. Door asynchrone verwerking en statusbeheer kan een ontvanger die offline was op een later moment de melding ophalen en alsnog verwerken. Door orkestratie en statusbeheer kunnen partijen toe- en uittreden. |
Betrouwbaarheid | Hoog | Door synchrone aflevering, orkestratie en bevestigingsberichten kan de consistentie bewaakt worden. De verzender kan indien nodig alternatieve paden initiëren en handelen op basis van foutcodes. |
Schaalbaarheid en elasticiteit | Hoog | Door asynchrone verwerking kunnen zowel verzender als ontvanger op eigen schaalgrootte opereren. Verzender kan ook meldingen parallel versturen en terugmeldingen parallel verwerken. |
Complexiteit | Hoog | Orkestratie en statusbeheer zijn complex. Door omvang van netwerk en volgordelijkheid is onderhoudbaarheid laag. Door veelvoud aan paden en functionele foutcodes is testbaarheid laag. Door asynchrone verwerking is testbaarheid ook laag. Door hoge complexiteit en lage testbaarheid is doorontwikkeling en wijzigingen complex. |
Dit patroon kan bijvoorbeeld toegepast worden in de volgende voorbeelden:
Bij het leveren van digitale leermiddelen zijn verschillende referentiecomponenten betrokken. De Aanspraakmanager zorgt voor het toekennen van de leermiddelen aan individuen. De referentiecomponent Licentieregistratie dient rekening te houden met in gebruik name. Het Leermiddelenportaal laat de toegangslink zien. Een Overkoepelend dashboard met leermiddelengebruik kan bijhouden of de leermiddelen in gebruik zijn genomen. Al deze referentiecomponenten vervullen een deelactiviteit in het proces en de volgordelijkheid is van belang. Ook zijn er alternatieve paden mogelijk (annulering en blokkering) waardoor een levering ongedaan gedaan moet worden. Indien de referentiecomponenten door verschillende leveranciers worden ingevuld dan vraagt dit om orkestratie van de asynchrone uitwisselingen. |
Deze uitwerking is gebaseerd op basis van de volgende stappen:
0.0.1: Documentstudie van Edukoppeling uitgevoerd.
0.0.2: Voorbereidende bijeenkomst voor de Architectenraad van RdB en KV.
0.0.3: Review door leden van de Architectenraad.
0.0.4: Verwerken wijzigingsvoorstellen leden van de Architectenraad.
0.0.5: Tijdens de werkconferentie van de Architectenraad Edu-V op 18 april zijn de patronen besproken. De transactiepatronen van Edukoppeling worden overgenomen aangevuld met een toelichting op coördinatie tussen Verzender en Ontvanger.
0.0.6: Er is onderscheid gemaakt in de transactierollen Bron, Afnemer, Verzender en Ontvanger. Deze definities zijn consistent doorgevoerd in het afwegingskader. Ook zijn de benamingen van de referentiecomponenten aangepast.
0.0.7: De pagina is besproken tijdens de bijeenkomst van de Architectenraad Edu-V en is gereed voor de ROSA-architectuurscan.
1.0.0: Het Architectuurkader Edu-V is vastgesteld als startpunt voor de implementatie. Tevens is instemming verleend op verdere doorontwikkeling van het Architectuurkader Edu-V op basis van de Architectuurprincipes. Dit akkoord is verleend op het Bestuurlijk Overleg van 27 mei 2024.
Deze uitwerking is gebaseerd op basis van de volgende stappen:
0.0.1: Documentstudie van Edukoppeling uitgevoerd.
0.0.2: Voorbereidende bijeenkomst voor de Architectenraad van RdB en KV.
0.0.3: Review door leden van de Architectenraad.
0.0.4: Verwerken wijzigingsvoorstellen leden van de Architectenraad.
0.0.5: Tijdens de werkconferentie van de Architectenraad Edu-V op 18 april zijn de patronen besproken. De transactiepatronen van Edukoppeling worden overgenomen aangevuld met een toelichting op coördinatie tussen Verzender en Ontvanger.
0.0.6: Er is onderscheid gemaakt in de transactierollen Bron, Afnemer, Verzender en Ontvanger. Deze definities zijn consistent doorgevoerd in het afwegingskader. Ook zijn de benamingen van de referentiecomponenten aangepast.
0.0.7: De pagina is besproken tijdens de bijeenkomst van de Architectenraad Edu-V en is gereed voor de ROSA-architectuurscan.
1.0.0: Het Architectuurkader Edu-V is vastgesteld als startpunt voor de implementatie. Tevens is instemming verleend op verdere doorontwikkeling van het Architectuurkader Edu-V op basis van de Architectuurprincipes. Dit akkoord is verleend op het Bestuurlijk Overleg van 27 mei 2024.