Das ConTract-Modell (Wächter & Reuter, Universität Stuttgart)

Ähnliche Dokumente
Inhalt: Workflows, Contracts, Kompensationsspähren, Strata, Meteor

Workflow-Management (1)

Inhalt: Workflows, Contracts,

Transaktionale Informationssysteme - 8. Transaktionale Workflow-Modelle

Transaktionale Informationssysteme - 8. Transaktionale Workflow-Modelle

Stratifizierte Transaktionen (4) ConTracts (1) lokale 2PC-Nachrichten. Vorteile stratifizierter Transaktionen

11.3 Transaktionen und LUWs in SAP R/3

11.3 Transaktionen und LUWs in SAP R/3

Transaktionale Informationssysteme - 8. Transaktionale Workflow-Modelle

Vorlesung "Systemsoftware II" Wintersemester 2002/03

Vorlesung "Verteilte Systeme" Wintersemester 2000/2001. Verteilte Systeme. 14. Transaktionen

Transaktionsverwaltung

Kapitel 2 Transaktionsverwaltung. Skript 2009 Matthias Schubert

Distributed Flat Transaction

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Atomare Commit-Protokolle. Grundlagen von Datenbanken - SS Prof. Dr. Stefan Böttcher Atomare Commit-Protokolle Folie 1

Eigenschaften von TAs: ACID-Prinzip

1. Einführung, Problemstellung und Überblick Rechnernetze

2. Architektur verteilter Datenbanksysteme

Transaktionsverwaltung

Einführung Verteilte DBS Schemaarchitektur Katalogverwaltung Namensverwaltung

Kapitel 3 Synchronisation

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen

Praktische SQL-Befehle 2

Kapitel 1 Grundlagen. Skript zur Vorlesung: Datenbanksysteme II Sommersemester Vorlesung: PD Dr. Peer Kröger

Datenbanksysteme. Transaktionen. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme 2009

Datenbank- Verwaltungssysteme

4. TA-Modelle für heterogene Systeme, Workflows und Web Entwurfsautonomie

Gruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS Transaktionen & ACID. Dr. Christian Senger Transaktionen & ACID 1

Die Anweisung create table

View. Arbeiten mit den Sichten:

Grundlagen von Datenbanken. Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking

Komponentenorientierte Software-Entwicklung. Seite 1 / 44

1 Referentielle Aktionen

Prozedurale Datenbank- Anwendungsprogrammierung

Query Result Caching. Optimierung des Datenbankzugriffs

Java Ablaufsteuerung (Beispiele)

Verteilte Systeme. Nebenläufigkeit. Prof. Dr. Oliver Haase

OPTIMISTIC & PESSIMISTIC LOCK Design Patterns PILLER NADIA SARBACH MATTHIAS

9. Transaktionsverwaltung 9.3. Fehlerbehandlung Seite 1

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Kapitel 2 Transaktionsverwaltung

7. Transaktionsverwaltung

Verteiltes Sperren Verteilte Recovery

6.3 Verteilte Transaktionen

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Johannes Carl Senior PreSales Consultant. Hürdenlauf Windows 10 meistern!

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

UML/OCL für die Integritätssicherung in Datenbankanwendungen

CORSO Space Based Computing mit Java

Verteilte Systeme. Verteilte Systeme. 7 Koordination SS 2017

Transaktionen: Wiederholung und Vertiefung

Java Anweisungen und Ablaufsteuerung

Javakurs für Anfänger

Übungen zur Vorlesung. Datenbanken I. WS 2002/2003 Blatt 4 MUSTERLÖSUNG

2 Programmieren in Java I noch ohne Nachbearbeitung

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.

BPEL und Transaktionen

Praktische SQL-Befehle

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

DB I S. 1 Referentielle Aktionen [10 P.] Gegeben sei folgende Datendefinition:

Transaktionen in Praxis. Dr. Karsten Tolle Vorl

An Overview of the Signal Clock Calculus

10. Übungsblatt. Für die Übung am Donnerstag, 15. Januar 2009, von 15:30 bis 17:00 Uhr in 13/222.

Zugriffskontrollmechanismen. Rechteverwaltung. und. Gonsu Veronique

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

Vorlesung Informatik II

6. Updates in SQL 6-1. Inhalt. 1. Update-Kommandos in SQL. 2. Transaktionen. 3. Gleichzeitige Zugriffe

Weitere Workflow-relevante Transaktionsmodelle

Mail Integration Solution White Paper

Was ist ein Problem? Ein Problem im Sinne der Programmierung ist durch Computer lösbar. Programmieren Entwurf/ Implementierung

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Isolationsstufen für Transaktionen. Dr. Karsten Tolle

VOM PROBLEM ZUM PROGRAMM

OLTP von der Echtzeitdatenerfassung bis zur Auswertung. TecWare Gesellschaft für Softwareentwicklung mbh

fbi h_da Datenbanken Kapitel 7: Transaktionsmanagement Schestag Datenbanken (Cnam) Kapitel 7-1

KÖNIGSBERGER BRÜCKENPROBLEM

Transaktionen. Concurrency Management in MS SQL Server

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. Java Transaction Processing Teil 1

Transaktionsmanagement - Einführung. Prof. Dr. T. Kudraß 1

Parallele Programmiermodelle

P.A. Bernstein, V. Hadzilacos, N. Goodman

Verteilte Betriebssysteme

Verteilte Systeme. Replikation & Konsistenz I. Prof. Dr. Oliver Haase

CADSTAR MRP-Link. MRP-Link ist erstellt von:

Masterkurs Verteilte betriebliche Informationssysteme

Aufbau Datenbanksysteme

Mächtigkeit von 2PL. Geben Sie einen Schedule S an, der. konfliktserialisierbar, jedoch nicht bei Anwendung von 2PL entstehbar. ist.

Seminarvortrag. Transaktionen in WebServices. Service-orientierte Architektur (SOA) Vortragender: Tobias Ramin

Transkript:

Das ConTract-Modell (Wächter & Reuter, Universität Stuttgart) Zielsetzung Programmier- und Fehlermodell Ausführung und Architektur Zusammenfassung (C) Prof. E. Rahm, R. Müller

ConTract: Zielsetzung Bereitstellung eines Ausführungsmodells für die zuverlässige Abwicklung langlebiger und verteilter Workflows Forward Recovery eines Prozesses ( Phönix aus der Asche ) Logisches Rollback durch Prozeß-Kompensation (falls Prozeß nicht fortsetzbar) Flexible Sperrverfahren (durch Isolationsprädikate) Prozeß-Migration (bei Rechnerausfall) (C) Prof. E. Rahm, R. Müller

Das ConTract-Programmiermodell Ein ConTract ( = Workflow/Prozeß) ist die konsistente und fehlertolerante Ausführung einer Anzahl von Aktionen (Steps), die in einer separat spezifizierten Kontrollflußbeschreibung (Script) sequentiell oder parallel miteinander verknüpft sind S 8 cancel reservation T 2 failure S 6 S 7 Begin of ConTract failure End of ConTract T 1 S 1 S 3 S 4 S 5 S 9 travel data input check flight schedules flight reservation hotel reservtion car rental print documents (C) Prof. E. Rahm, R. Müller

Definition eines ConTracts: Step-Definition STEP Flight_Reservation DESCRIPTION: Reserve n seats of a flight and pay for them... IN airline: STRING; flight_no: STRING; date: DATE; seats: INTEGER; ticket_price: DOLLAR; OUT status: INTEGER; flight_reservation () { car* flight_no; long date; int seats; : EXEC SQL UPDATE Reservations SET seats_taken = seats_taken + :seats WHERE flight = :flight_no AND date = :date... END SQL : } (C) Prof. E. Rahm, R. Müller

Definition eines ConTracts: Kontrollflußkonstrukte Sequenz bzw. Block BEGIN <block> END <block>: Sequenz von Programmschritten oder anderen Kontrollflußanweisungen Fork und join paralleler Abschnitte PARBEGIN <block> PAREND Verzweigung IF <condition> <block> [ELSE <block>] ENDIF CASE <contextelement> <contextelement> : <block> [...[<contextelement> : <block>]] ENDCASE Parallele Schleife PARFEACH (<contextelement> : <type> IN <set>) <block> ENDPARFEACH Schleife WHILE <condition> <block> ENDWHILE F (<value-1> TO <value-2>) <block> ENDF Ablaufsteuerung SUSPEND [<duration> UNTIL <event>] STOP MIGRATE TO <node-id> (C) Prof. E. Rahm, R. Müller

Kontrollfluß -Beispiel CONTRACT Business_Trip_Reservations CONTEXT-DECLARATION cost_limit; ticket_price:dollar; from, to:city; date:date_type; ok: boolean; : CONTROL-FLOW-SCRIPT S1: Travel_Data_input (in_context: ; out_context: date, from, to, seats, cost_limit); PARFEACH( airline: EXECSQL select airline from... ENDSQL ) S2: Check_Flight_Schedule(in_context: airline, date, from, to, seats; out_context: flight_no, ticket_price ); ENDPARFEACH S3: Flight_Reservation(in_context: airline, flight_no, date, seats,..); S4: Hotel_Reservation( in_context: Cathedral Hill Hotel ; out_context: ok, hotel_reservation ); IF ( ok[s4] ) THEN S5: Car_Rental(... Avis... ); ELSE BEGIN S6: Hotel_Reservation(... Holiday Inn... ); IF ( ok[s6] ) THEN S7: Car_Rental(... Hertz... ); ELSE S8: Cancel_Flight_Reservation_&_Try_Another_One(.. ); ENDIF END ENDIF S9: Print_Documents(... ); END_CONTROL-FLOW-SCRIPT (C) Prof. E. Rahm, R. Müller 134

ConTract: Fehlermodell Step ist (u.u. verteilte) ACID-Transaktion (Default) Mehrere Steps können zu ACID-Einheit zusammengefaßt werden Anwendungsspezifische Reaktionen auf Fehlersituationen Wiederholung eines Steps (z.b. bei Synchronisationskonflikten) Ausführung eines alternativen Steps Ein ConTract ist i. allg. keine ACID-Transaktion Aufgabe der Atomarität ConTract wird bei System-Fehler eingefroren und später fortgeführt Forward Recovery Logisches Rollback eines ConTracts durch Kompensations-Steps (nur explizit durch Administrator oder Benutzer) Keine strikte Isolation, sondern anwendungsspezifische Isolationsprädikate (C) Prof. E. Rahm, R. Müller

ConTract: Transaktionsstrukturen (1) ACID-Einheiten und Abhängigkeiten TRANSACTIONS T1 ( S4, S5 ) T2 ( S6, S7 ) DEPENDENCY( T2 abort[1] begin T2 ) // first abort of T2 DEPENDENCY( T2 abort[2] begin S8 ) // second abort of T2... END_TRANSACTIONS S 8 cancel reservation T 2 failure S 6 S 7 Begin of ConTract failure End of ConTract T 1 S 1 S 3 S 4 S 5 S 9 travel data input check flight schedules flight reservation hotel reservtion car rental print documents Weitere Notationsmöglichkeiten bzgl. Abhängigkeiten (a = abort, b = begin, c = commit) T b b T 1... a b T k a a T /* k alternatives for T */ T i c c T T a1 [ ] b T...T an [ ] b T rescue /* retry T n times */ (C) Prof. E. Rahm, R. Müller

ConTract: Transaktionsstrukturen (2) Kompensationen Start nur explizit durch Administrator oder Benutzer (z.b. bei endgültigem Scheitern eines Con- Tracts) COMPENSATIONS C1: Do_Nothing_Step(); C2: Do_Nothing_Step(); C3: Cancel_Flight_Reservation(... ); C4: Cancel_Hotel_Reservation(... ); C5: Cancel_Car_Reservation(... ); C6: Cancel_Hotel-Reservation(... ); C7: Cancel_Car_Reservation(... ); C8: Do_Nothing-Step(); C9: Invalidate_Tickets(... ); END_COMPENSATIONS S 8 cancel reservation T 2 failure S 6 S 7 Begin of ConTract failure End of ConTract T 1 S 1 S 3 S 4 S 5 S 9 travel data input check flight schedules flight reservation hotel reservtion car rental print documents (C) Prof. E. Rahm, R. Müller 137

Bei Systemfehlern Einfrieren des Workflows Fortführung nach Fehlerbehebung Kontext-Verwaltung ConTract: Forward Recovery Buchführung über jeweiligen lokalen Verarbeitungszustand eines ConTracts Kontextinhalte - Benutzereingaben, Bildschirmausgaben - Identifikatoren der globalen Objekte (z.b. in DB) - Eingabe- und Ausgabe-Variablen von Steps Problematik? Notwendige Voraussetzung auch für Migration Bei Forward Recovery Auslesen des ConTract-Zustands zum Fehler-Zeitpunkt und Wiederaufnahme Merke: Transaktionsfehler werden auf Step-Ebene (ACID-Transaktion) behandelt (C) Prof. E. Rahm, R. Müller 138

Forward Recovery: Kontext-Verwaltung Kein Kontext-Update, sondern Speicherung der gesamten ConTract-Chronologie Stabile Speicherung der Kontexte in transaktionsgeschützter SQL-Datenbank Fehlertolerante Übermittlung der Kontextvariablen über stabile Warteschlangen Beispiel für Kontext-Datenbank Con- Tract ld Erzeuger-Step Kontext-Variable Zeitstempel Name Version Parfor-Index (Id des Parallelpfades) Name Typ Version Wert Uhrzeit Datum 4711 S1 1 0 start string 1 Bonn 17:15... 4711 S1 1 0 ziel string 1 Rom 17:15... : : : : : : : : : : 4711 S2 1 0 flugnummer string 1 LH560 17:20... S2 1 1 flugnummer string 1 BA7788 16:00 : : : : : : : : : : (C) Prof. E. Rahm, R. Müller 139

Stabile Warteschlangen Kopplung von Nachrichtenübermittlung an DBS Nachrichten werden persistent in DBS gehalten Zugriffe auf Nachrichten unter Transaktionsschutz Damit Status und Chronologie der Nachrichtenübermittlung zwischen Komponenten (z.b. Workflow-Engine und Anwendungen) rekonstruierbar und fehlertolerant Transaktion T1 Transaktion T2 A write.. Warteschlange read B DB (C) Prof. E. Rahm, R. Müller 140

ConTract: Synchronisation mit Isolationsprädikaten Strikte Isolation bei langlebigen Prozessen zu restriktiv Beobachtung: Von einem Workflow benutzte Objekte müssen keineswegs gegen ALLE Arten von Änderungen (durch parallele Workflows) geschützt werden Lösungsvorschlag für ConTracts: Isolationsprädikate Deklarative Spezifikation zulässiger Änderungsoperationen Andere ConTracts dürfen Datenobjekte i.a. nur unter Nicht-Verletzung aktuell gültiger Prädikate ändern Prädikat-Typen für Steps Eingangsprädikate P IE bestimmen was Step tun darf Ausgangs-Prädikate P IA werden von Step dynamisch generiert und dienen Steps anderer Workflows als Eingangs-Prädikate (C) Prof. E. Rahm, R. Müller 141

Isolationsprädikate: Beispiel Reisebuchung für Geschäftskunden S1 überprüft, ob Abt.-Budget >= Reisekostenlimit Falls ja, wird Ausgangs-Isolationsprädikat P IA = (budget >= limit) generiert und als Eingangsprädikat alle weiteren Steps bekannt gemacht Steps anderer ConTracts dürfen Wert von budget nur unter Nicht-Verletzung dieses Prädikats ändern (also Limit nicht unterschreiten) Begin of ConTract S 1 travel data input check flight schedules flight reservation T 2 T 1 S 8 S 6 S 3 S 4 S 5 S 9 hotel reservtion cancel reservation failure failure S 7 car rental End of ConTract print documents (C) Prof. E. Rahm, R. Müller 142

Isolationsprädikate: Abstufungen Locking Objekte des Prädikats werden exklusiv gesperrt Für konkurrierende Anwendungen nur lesende Zugriffe erlaubt entspricht klassischem Locking in DBMS Mandatory (häufigster Modus) Nur Prädikat-konforme Operationen erlaubt Check/Revalidate Alle Zugriffe weiterhin erlaubt Prädikat wird erst bei neuem Zugriff des ConTracts auf Objekt überprüft Sehr optimistische Strategie Gefahr von Inkonsistenzen Konfliktbehandlung erforderlich (C) Prof. E. Rahm, R. Müller

Isolationsprädikate: Notierung SYNCHRONIZATION_INVARIANTS_&_CONFLICT_RESOLUTIONS S1: EXIT_INVARIANT( budget >= cost_limit ), POLICY: mandatory; S3: ENTRY_INVARIANT( cost_limit > ticket_price ); // Ticket darf Limit nicht erreichen CONFLICT_RESOLUTION: S8: Cancel_Reservation(..);// andernfalls Abbruch der Reservierung //... budget wird von S3 um ticket_price herabgesetzt... EXIT_INVARIANT(budget > cost_limit - ticket_price ); // ticket_price vom limit abziehen POLICY:mandatory; S4, S6: ENTRY_INVARIANT(hotel_price < budget ), CONFLICT_RESOLUTION: S10: Call_Manager_to_Increase_Budget (..); S5, S7: ENTRY_INVARIANT( car_price < budget ), CONFLICT_RESOLUTION: S10: S 8 cancel reservation Call_Manager_to_Increase_Budget (..); : T 2 failure S 6 S 7 Begin of ConTract failure End of ConTract T 1 S 1 S 3 S 4 S 5 S 9 travel data input check flight schedules flight reservation hotel reservtion car rental print documents (C) Prof. E. Rahm, R. Müller 144

Isolationsprädikate: Umsetzung in Trigger Übersetzung eines Prädikats P IE /P IA in DB-Trigger Rollback des Steps bei Verletzung des Prädikats Trigger zur Realisierung des Prädikats abteilung.budget >= limit CREATE check_isolation_condition_on_budget RULE AFTER UPDATE (budget) OF abteilung WHERE abteilung.name = ABC /* Wert der Variablen :abtname*/ AND abteilung.budget < 4 000 /* Wert der Variablen :limit */ /* jeweils am Ende von S1. */ EXECUTE PROCEDURE reject_operation (C) Prof. E. Rahm, R. Müller 145

Isolationsprädikate: Konfliktsituationen Reaktionsmöglichkeit Konflikt Im Skript vordefinierte Konfliktbehandlung aktiv. Warten - mit Vormerkung - mit Zeitlimit - mit Suspendierung des ConTract P IE -Auswertung nicht möglich, da Objekt(e) gesperrt Isolationsbedingungen P IE bzw. P IA nicht erfüllt + + Abbruch und/oder Wiederholung des Step + + Abbruch des ConTract (Kompensation) - o Manueller Eingriff des Systemverwalters - o Änderung der beteiligten Objekte bzw. Prädikate + + o o + o o o Legende: + = gut geeignet; o = bedingt geeignet; - = nicht sinnvoll (C) Prof. E. Rahm, R. Müller 146

Konfliktbehandlung bei Check/ Revalidate-Modus Alle Zugriffe weiterhin erlaubt; Prädikat wird erst bei neuem Zugriff des ConTracts auf Objekt überprüft S l Step-Ausführung: read/update(a) Zugriffe von anderen Steps und von externen Programmen auf a erlaubt DB-Zugriff Isolationsprädikat p(a) etablieren Wert von a p(a) POLICY: check/ revalidate DB-Zugriff Isolationsprädikat p(a) auswerten verletzt erfüllt S k Step-Ausführung: read/update(a) nein ja Externer Eingriff erforderlich Wiederholungslimit überschritten? Konfliktbehandlung durchführen z. B. Warten Objektwert ändern, alternative Operation, p(a) abschwächen (C) Prof. E. Rahm, R. Müller 147

ConTract: Architektur und Ausführungsmodell Distributed Computing Environment (DCE) als Middleware X/Open DTP für Realisierung verteilter ACID-Transaktionen (2PC-Protokoll) Erweiterung der X/Open DTP Architektur durch zusätzliche Schicht (ConTract- Verwaltungsschicht) zwischen Anwendungen, Ressourcen-Managern (RM) und Transaktions-Manager (TM) Apricots: Prototypische Implementierung an Universität Stuttgart (C) Prof. E. Rahm, R. Müller

ConTract: Komponenten und Einbettung in DTP-Modell Anwendung... ConTract - Verwaltung Anwendung - Kontrollflußabwicklung - Step-Ausführung - Kontextverwaltung - Transaktionsübergreifende Synchronisation - Recovery Skript (TM) (RM) Globale Transaktionsverwaltung Objektverwalter Basisdienste: Globales Protokoll Betriebsmittelverwaltung, Prozeßüberwachung TP-Monitor-Funktionen Basiskommunikation (C) Prof. E. Rahm, R. Müller

ConTract-Verwaltung: Komponenten ConTract-Manager (Skript-Laufzeitsystem) Kontrollflußabwicklung eines ConTracts Aktivierung und Überwachung der Steps Kommunikation mit TM für Step-übergreifende Transaktionen Kontext-Verwaltung Forward Recovery eines ConTracts Step-Server Ausführung der Steps Auswertung der Isolationsprädikate Kommunikation mit TM für transaktionsgeschützte Step-Ausführung ConTract-Processing Monitor (pro Knoten) Ablaufübergreifende Dienste (Lastbalancierung innerhalb der Step-Server-Klassen) Stabile Warteschlangen für Aufträge und Ergebnisse bei Kommunikation ConTract-Managern und Step-Servern (C) Prof. E. Rahm, R. Müller

ConTract-Verwaltung: Schichtenarchitektur Benutzer Programm Benutzer Bedienoberfläche / Programmschnittstelle ConTract-Verwaltung, Ablaufsteuerung Vorgangsebene ConTract-Manager Kontrollflußabwicklung ConTract-Processing- Monitor Step-/Transaktions- Programme Gemeinsame Ressourcen Step-/Anwendungs- Server Step-Ausführung Objektverwalter Ressourcenzugriffe - Programmierwerkzeuge - Systemkonfiguration u. -administation - Betriebsmittelverwaltung - Lastbalancirung - Transaktionsverwaltung - Stabile Warteschlangen Basisdienste für verteiltes Rechnen (DCE) DCE: Threads RPC Namensverwaltung Katalog globale Zeit Autorisierung, Zugriffsschutz Basiskommunikation u. a. Dienste des lokalen Betriebssystems (C) Prof. E. Rahm, R. Müller 151

Skript-Abarbeitung durch ConTract-Manager Start Bestimme die als nächstes auszuführenden Schritte S i, S j,... Stelle die benötigten Ressourcen bereit (xid u. a. Kontrollblöcke) Schicke die Steps zur asynchronen Bearbeitung an die ausgewählten Step-Server (Während der asynchronen Step-Bearbeitung kann der ConTract-Manager andere Aufträge ausführen.) Step-Ausführung in einem Step-Server Empfange das Ergebnis von S i und setze die Verarbeitung gemäß dem Rückgabestatus und dem aktuellen ConTract- Zustand fort: - Step-Transaktion beenden bzw. Transaktionskontrollbereich fortschreiben - evtl. Fehler behandeln - evtl. Suspendierung / Migration durchführen - Kontrollflußereignisse auslösen nein ConTract beendet? ja Stop (C) Prof. E. Rahm, R. Müller

ConTract: Globale Ereignisse suspend (cid) Anhalten des ConTracts für unbestimmte Zeit Migrate! System wartet vor Suspendierung Ende aller momentan aktiven Steps ab Bis dahin eingetretene Aktivierungsereignisse für nachfolgende Steps erst nach Wiederaufnahme wirksam Activate! Migrate! Cancel! compensating stop (cid) Sofortiger Stop des ConTracts durch radikalen Abbruch aller offenen Steps running Stop! Resume! Cancel! terminated resume (cid) Setzt angehaltene Ausführung fort Suspend! suspended Migrate! migrate (cid to-host) Verlagert Ablaufkontrolle auf anderen Rechner im Netzwerk suspending Migrate! cancel (cid) Bricht ConTract ab und leitet Kompensation aller bisher durchgeführten Programmschritte ein (C) Prof. E. Rahm, R. Müller 153

Zusammenspiel Step-Server / ConTract-Manager Client: Server: Skript-Definition und Übersetzung Skript-Bibliothek... Prozeduraufrufe Step-Codierung Step-Bibliothek... Definition, Aktivierung und Verteilung der Step-/Anwendungs- Server im Netzwerk Skript-Ausführung TRPC Step-Ausführung ConTract-Manager Im Fehlerfall: Vorwärts-Recovery! ConTract xyz Fehler transaktionsgeschützte Dienstaufrufe... Prozesse Step-Server, Objektverwalter (C) Prof. E. Rahm, R. Müller 154

ConTract: Zusammenfassung System zur zuverlässigen Ausführung langlebiger und verteilter Workflows Forward Recovery von Workflows bei Systemfehlern Rollback mit Kompensation nur auf expliziten Benutzerwunsch Abschwächung der strikten Isolation durch Einführung von Isolationsprädikaten ConTract-Architektur auf der Basis von DCE und X/OPEN DTP Einschränkungen Kontext-Verwaltung abhängig von API zu Anwendungsprogrammen Keine Behandlung logischer Fehler (C) Prof. E. Rahm, R. Müller 155