We beschrijven saga’s in ieder geval vanuit het perspectief van technische data-integriteit. In een CRUD-API waar verplichte relaties voorkomen kunnen situaties ontstaan waardoor één gewenste functionele transacties in twee technische transacties moet worden uitgevoerd. Dat betekent dat na de eerste technische transactie er een inconsistentie ontstaat die door de tweede transactie opgeheven wordt. In de saga wordt beschreven wat de gevolgen zijn als de tweede transactie niet slaagt en welke actie er moet worden ondernomen om de eerste transactie ongedaan te maken.
Deze saga-beschrijvingen worden in de functie-beschrijvingen opgenomen waar dat van toepassing is. Een voorbeeld daarvan is te vinden in F7554 - Registreer partij
Saga’s die vanuit functioneel perspectief gewenst zijn worden (vooralsnog) niet beschreven. Reden daarvoor is dat deze Saga’s in feite tot handelingen moeten leiden die in een handelingen-API in één call (en dus transactie) moeten kunnen worden afgehandeld door de consumer).
Ook als er alleen sprake is van een CRUD-API zou je deze handelingen willen beschrijven en als dat gedaan wordt dan is het raadzaam om ook de daarbij behorende saga te beschrijven. Om deze wijze kan eenduidig aan de consumer-developer uitgelegd worden hoe de functionaliteit geïmplementeerd zou moeten worden.
In de functie F2173 - Registreer klantcontact zou bijvoorbeeld de volgende passage opgenomen kunnen worden:
Indien het aanmaken van een
informatieobject
niet lukt, wordt deze opgeslagen als onderdeel van de bijlage. Op een later moment wordt alsnog geprobeerd het bijbehorende informatieobject aan te maken en wordt de identificatie hiervan geregistreerd in de bijlage.
Dit is feitelijk de uitwerking van een mogelijke saga om transactie issues te voorkomen.
Redenen om dit wel op te nemen:
Redenen om dit niet op te nemen:
In het laatste voorbeeld werk je feitelijk om de concrete beschrijving heen.