UTM-Services bearbeiten Aufträge transaktionsorientiert, d.h. ein UTM-Service besteht aus einer oder mehreren Transaktionen. Kommuniziert ein UTM-Service mit einer anderen Anwendung über OSI TP, kann festgelegt werden, ob die Verarbeitung in der fernen Anwendung mit in die Transaktion eingeschlossen werden soll oder ob sie unabhängig davon erfolgen soll. Im ersten Fall spricht man von einer verteilten Transaktion, im zweiten Fall von unabhängigen Transaktionen. Über das LU6.1-Protokoll wird immer mit verteilten Transaktionen gearbeitet.
Verteilte Transaktionen
Bei der Server-Server-Kommunikation sind an der Bearbeitung eines Auftrags mehrere lokale Transaktionen in verschiedenen Anwendungen beteiligt. Falls mit globaler (=anwendungsübergreifender) Transaktionssicherung gearbeitet wird, garantiert openUTM, dass sich die Daten auch Anwendungs-übergreifend zu jeder Zeit in einem konsistenten Zustand befinden. Hierzu synchronisiert openUTM das Ende dieser Transaktionen: In allen beteiligten Anwendungen werden bei erfolgreichem Abschluss die Sicherungspunkte gleichzeitig gesetzt. Im Fehlerfall sorgt openUTM dafür, dass alle beteiligten Transaktionen zurückgesetzt werden. Die synchronisierten Transaktionen bilden also eine Einheit, die auch als „verteilte Transaktion“ bezeichnet wird. Für diese Synchronisation verwendet openUTM das Two-Phase-Commit-Verfahren: Ist die Bearbeitung einer lokalen Transaktion abgeschlossen, so wird diese Transaktion zunächst in den Zustand „Prepare-to-Commit“ versetzt. Erst wenn alle beteiligten Transaktionen diesen Zustand erreicht haben, wird das globale Transaktionsende (Commit) gesetzt. Ein Beispiel hierfür finden Sie im Abschnitt „Beispiel: Anwendungs-übergreifender Dialog mit verteilter Transaktion“.
Asynchron-Aufträge (MQ-Aufträge) werden bei Server-Server-Kommunikation mit globaler Transaktionssicherung genau einmal übertragen. Das bedeutet, dass auch bei Netzstörungen oder Abbruch einer Anwendung der Asynchron-Auftrag weder verloren geht noch die Nachricht verdoppelt wird.
Globale Transaktionssicherung ist immer dann notwendig, wenn hohe Anforderungen an die Datenkonsistenz und Datensicherheit gestellt werden.
Unabhängige Transaktionen
Im Gegensatz zur verteilten Transaktion setzt bei der Zusammenarbeit zweier unabhängiger Transaktionen jede Anwendung ihre lokale Transaktion selbstständig vor oder zurück. Dies kann, z.B. bei Fehlern in der Kommunikation, zu inkonsistenten Datenbeständen in den verschiedenen Anwendungen führen. Bei dieser Form der Kommunikation ist auch nicht gewährleistet, dass Asynchron-Aufträge genau einmal übertragen werden.
Diese Form der Zusammenarbeit von Anwendungen ist z.B. dann sinnvoll, wenn bei der Bearbeitung eines Auftrags nur die Datenbestände einer Anwendung verändert werden, wie dies z.B. der Fall ist, wenn die andere Anwendung eine reine Retrieval-Anwendung ist. Die Kommunikation wird dabei effizienter abgewickelt, da die Transaktionen in den beteiligten Anwendungen nicht synchronisiert werden müssen.