Transacties bij het vastleggen
Transacties
Bij het verwerken van commando’s kan het gewenst zijn dat het vastleggen van (één of meerdere) sets claims in samenhang gebeurt. Daarmee wordt bedoeld dat als er halverwege het verwerken van een commando iets misgaat, dat dan alle claims die tot dan toe vastgelegd zijn worden teruggedraaid.
Het bepalen welke claims onderdeel zijn van een transactie is domein-gerelateerd. Dit kan zich beperken tot het vastleggen van alle claims m.b.t. één object tot alle claims die als gevolg van een commando worden vastgelegd.
Dit is in de Atomic Claim Engine gerealiseerd door een transactie-mechanisme in te bouwen. Daarmee kan aangegeven worden welke claims binnen een specifieke transactie zijn vastgelegd. Deze claims zijn ook alleen zichtbaar in een query als het de transactie-identificatie wordt opgegeven bij het uitvoeren van de query.
Er kan expliciet een transactie gestart worden, waar bij een transactieid wordt toegekend aan de transactie. Vervolgens maken alle claims die vastgelegd worden met dat transactieid onderdeel uit van de transactie.
Als de verwerking succesvol heeft plaatsgeveonden kan middels een commit de transactie afgerond worden. Als er ergens iets misgaat kan middels een rollback alles wat binnen de transactie is vastgelegd teruggedraaid worden.
In de casussen is dit transactie-mechanisme verwerkt op diverse niveau’s. Bij het commando “registreer_partijen” is ervoor gekozen om het vastleggen van één partij als transactie te zien. Als de verwerking van het commando dus stukloopt op de derde partij, dan zijn de eerste twee partijen wel gepersisteerd.
Bij het commando “draag_belang_over” zijn zowel het beeindigen van het bestaande belang als het registreren van het nieuwe belang onderdeel van dezelfde transactie.