-
Die
vorliegende Erfindung betrifft allgemein Verarbeitungsanwendungen
für Online-Transaktionen und
betrifft insbesondere die Verwaltung von Nicht-Transaktionsressourcen
oder nicht konformen Transaktionsressourcen in Transaktionsmanagementsystemen
für Verarbeitungsanwendungen
für Online-Transaktionen.
-
ALLGEMEINER STAND DER TECHNIK
UND KURZDARSTELLUNG DER ERFINDUNG
-
In
vielen Datenverarbeitungsanwendungen stellt eine Server-Anwendung,
welche auf einem Host- oder Server-Computer in einem verteilten
Netzwerk abläuft,
Verarbeitungsdienste oder Verfahren für Client-Anwendungen bereit,
welche auf Stations- oder Arbeitsplatzcomputern des Netzwerks ablaufen, die
von einer Vielzahl Benutzern bedient werden. Ein übliches
Beispiel für
solche Serveranwendungen ist die Software für die Verarbeitung von Einschreibungen
in Kurse an einer Universität,
von Reisereservierungen, von Geldtransfers und anderen Diensten
einer Bank und von Umsätzen
in einem Geschäft.
In diesen Beispielen unterhalten die Verarbeitungsdienste, welche
von der Server-Anwendung bereitgestellt werden, typischerweise stabile
Daten oder „Zustände" von Kursplänen, Hotelreservierungen,
Kontoständen,
Auftragseingängen,
Zahlungen oder Inventar für
Aktionen, welche von den einzelnen Benutzern an ihren entsprechenden
Stationen initiiert werden, z. B. in einer Datenbank oder einem
Datenspeicher eines anderen Betreiberformats.
-
Oft
machen Serveranwendungen das Koordinieren von Aktivitäten auf
mehreren Computer durch getrennte Prozesse auf einem Computer oder sogar
in einem einzelnen Prozess erforderlich. Zum Beispiel kann eine
Geldtransferoperation in einer Bankanwendung Aktualisierungen von
Kontodaten umfassen, welche in verschiedenen Datenbanken gespeichert
sind, die sich auf verschiedenen Computern befinden, welche geographisch
voneinander entfernt sein können.
Wünschenswerter
Weise werden Gruppen von Aktivitäten,
welche Teile einer Operation bilden, koordiniert, so daß sie als
einzelne unteilbare Arbeitseinheit wirken, welche gewöhnlich als eine
Transaktion bezeichnet wird. In vielen Anwendungen wird die Durchführung von
Gruppen von Aktivitäten
zu einer geschäftlichen
Notwendigkeit. Wenn in einer Geldtransferoperation zum Beispiel aufgrund
eines Systemfehlers nur ein Konto aktualisiert wird, erzeugt oder
vernichtet die Bank im Ergebnis Geld.
-
Eine
Transaktion ist eine Zusammenstellung von Aktionen, welche einer
Gruppe von Eigenschaften entsprechen, welche Atomarität, Konsistenz,
Isolation und Dauerhaftigkeit umfassen und als die „ACID"-Eigenschaften bezeichnet
werden. Atomarität
bedeutet, daß alle
Aktivitäten
in einer Transaktion entweder als eine Einheit zusammen wirken oder
alle fehlschlagen. Konsistenz bedeutet, daß nach der Ausführung einer
Transaktion das System in einem stabilen oder zulässigen Zustand
hinterlassen wird (d. h., wenn die Wirkung der Aktivitäten einer
Transaktion nicht zu einem zulässigen
stabilen Zustand führen
würde,
wird das System in seinen ursprünglichen
Zustand wie vor der Transaktion zurückgeführt). Isolation bedeutet, daß die Transaktion
nicht durch irgendwelche anderen gleichzeitig ausgeführten Transaktionen
beeinflusst wird (Zugriffe von Transaktionen auf gemeinsame Ressourcen
sind durchnummeriert, und Veränderungen
gemeinsamer Ressourcen sind außerhalb
der Transaktion nicht sichtbar, bis die Transaktion beendet ist).
Dauerhaftigkeit bedeutet, daß die
Wirkungen einer Transaktion beständig sind
und Systemfehler überstehen.
Für weitere
Hintergrundinformationen über
die Transaktionsverarbeitung wird u. a. auf Jim Gray und Andreas
Reuter, Transaction Processing Concepts and Techniques, Morgan Kaufmann,
1993, verwiesen.
-
Frühere Patentanmeldungen,
welche ebenso auf den Inhaber den vorliegenden Erfindung übertragen
sind (namentlich Helland u. a., „Automatic Transaction Processing
Of Component-Based
Server Applications",
US-Patentanmeldung 08/959,141, und Helland u. a., „Disabling
And Enabling Transaction Committal In Transaction Application Components", US-Patentanmeldung
08/959,142, beide eingereicht am 28. Oktober 1997, welche hiermit
durch Bezugnahme in die vorliegende Patentanmeldung einbezogen werden
und hierin im Folgenden zusammengenommen als die „einbezogenen
MTS-Patentanmeldungen" bezeichnet
werden), offenbaren eine Ausführungsumgebung
und Plattform für
verteilte Serveranwendungen, welche in dem Produkt Microsoft Transaction
Server (MTS), Version 1.0, enthalten ist. MTS stellt ein komponentenbasiertes
Gerüst
oder Objektmodell mit Systemdiensten bereit, um Transaktionen von
möglicherweise
verteilten Gruppen von Komponenten von Serveranwendungen unter der Steuerung
eines Transaktionsmanagers wie dem Microsoft Distributed Transaction
Coordinator (MS DTC) zu unterstützen.
-
Im
MTS verwenden Serveranwendungen Ressourcenmanager, um den dauerhaften
Zustand der Anwendung beizubehalten, z. B. des Verzeichnisses des
verfügbaren
Inventars, der zu bearbeitenden Aufträge und der Kontenforderungen.
Ressourcenmanager sind Systemdienste, welche dauerhafte Daten verwalten,
wie sie z. B. in Datenbanken, dauerhaften Meldungswarteschlangen,
Dateisystemen oder anderen Datenspeicherungsressourcen enthalten
sein können.
Ein Beispiel ist der Ressourcenmanager, welcher mit dem Microsoft
SQL Server, Version 6.5, bereitgestellt wird. Ressourcenmanager
arbeiten im Zusammenwirken mit dem Transaktionsmanager, um für die dauerhaften
Daten der verwalteten Ressource die ACID-Eigenschaften durchzusetzen.
-
Ressourcenmanager
sind für
eine spezielle Ressource (z. B. dauerhafte Datenspeicher) schwierig
zu entwickeln und zu realisieren. Dies liegt daran, daß ein Ressourcenmanager
mit einer Anzahl der komplexeren Probleme bei der Transaktionsverarbeitung
befasst ist. Insbesondere muß der
Ressourcenmanager richtig mit dem Transaktionsmanager verbunden
sein und garantieren, daß alle
Operationen, für
die angefordert wurde, daß sie
von Komponenten auf der verwalteten Ressource ausgeführt werden, den
ACID-Transaktionseigenschaften entsprechen. Der Ressourcenmanager
muß daher
sicherstellen, daß alle
Aktualisierungen der dauerhaften Daten durch Komponenten, die unter
einer speziellen Transaktion beendet werden, dauerhaft gemacht werden,
wenn die Transaktion abgeschlossen wird, oder umgekehrt werden,
wenn die Transaktion abgebrochen wird. Der Ressourcenmanager verwendet transaktionsbasierte
Synchronisierungsprotokolle, um nicht abgeschlossene Arbeitsvorgänge aktiver Transaktionen
zu isolieren. Der Ressourcenmanager muß auch die Sicherheit des Teilprozesses
gewährleisten,
was bedeutet, daß der
Ressourcenmanager von Anwendungskomponenten aus jedem Teilprozess
aufgerufen werden können
muß. Der
Ressourcenmanager muß ferner
für das
Logging und die Wiederherstellung sorgen, so daß Transaktionen, welche die
Ressource betreffen, über
Abstürze
und andere Fehler (Kommunikationsfehler, Verfahrensfehler und Speichermediumsfehler
ebenso wie Serversystemfehler) hinweg dauerhaft sind.
-
Ferner
muß ein
MTS Resource Manager (ein Ressourcenmanager, der dafür geschrieben
wurde, MTS zu unterstützen)
einigen zusätzlichen
Erfordernissen entsprechen. Insbesondere realisiert ein MTS Resource
Manager alle (oder eine wesentliche Untermenge der) „OLE-Transactions"-Schnittstellen, welche eine Integration
in MTS ermöglichen
und mit dem MS DTC verbinden. Außerdem muß ein MTS Resource Manager
einen Ressourcendispenser (einen Dienst, welcher für MTS-Server-Anwendungskomponenten
ein Pooling und eine automatische Transaktionsteilnahme bietet)
für seine
verwaltete Ressource bereitstellen. Wenn es keinen Ressourcendispenser
gibt, dann muß ein
alternativer Mechanismus für
die automatische Transaktionsteilnahme bereitgestellt werden.
-
Aufgrund
dieser Schwierigkeiten sind bislang noch wenige Ressourcenmanager
für MTS
erhältlich (ein
Beispiel ist der zuvor erwähnte
Microsoft SQL Server, Version 6.5). Es ist jedoch derzeit auf dem Markt
eine breite Vielfalt von Ressourcen ohne Transaktionsunterstützung erhältlich und
im Einsatz. Ferner gibt es eine Vielfalt von Ressourcenmanagern (hierin
als Alt-Ressourcenmanager
bezeichnet) für andere
Transaktionssysteme, welche nicht die erforderlichen Schnittstellen
(also die OLE-Transaktionsschnittstellen) bereitstellen, um in MTS
zu interoperieren, z. B. mit dem MS DTC zu verbinden. Zum Beispiel
weist eine Anzahl von Reservierungssystemen der Reisebranche Reservierungsdatenbanken
auf, welche unter dem IBM-CICS-Transaktionssystem verwaltet
werden. Es ist deswegen wünschenswert, solche
Nicht-Transaktionsressourcen und Alt-Ressourcenmanager einfacher
in MTS zu integrieren, als für
jede einen spezifischen MTS-Ressourcenmanager zu realisieren.
-
Die
US-Patentschrift 5,764,897 offenbart
ein Transaktionsmanagerprotokoll und -verfahren, welches von Interprozess-Kommunikationsaktivitäten der
Mikrokernels des Betriebssystems unabhängig ist. Der Transaktionsmanager
erzeugt Transaktionen, verfolgt alle Objektmanager, welche Teil
der Transaktion sind, und koordiniert die Transaktionsbeendigung
unter allen Objekten, welche in die Transaktion eingebunden sind.
Es können
Objekte mit der Transaktion verbunden werden, und dann werden Befehle
von dem Transaktionsmanager zu dem Objekt gesendet, eine Operation
durchzuführen
und diese Operation umzukehren, wenn die Transaktion abgebrochen
wird.
-
Die
vorliegende Erfindung stellt eine Form eines Ressourcenmanagement
bereit (hierin als „Kompensation" oder „kompensierendes
Ressourcenmanagement" bezeichnet),
welches ermöglicht,
daß dauerhafte
Ressourcen einfacher in ein Transaktionssystem und insbesondere
in eine komponentenbasierte Online-Transaktionsverarbeitungs-Anwendungsumgebung
wie MTS integriert werden. Beim kompensierenden Ressourcenmanagement
wird eine dauerhafte Ressource integriert, um an Transaktionen unter
dem Transaktionssystem teilzunehmen, indem für eine kompensierende Aktion
gesorgt wird, um jede normale Aktion umzukehren, welche als Teil
einer Transaktion an der Ressource durchgeführt wird. Die normale Aktion
wird an der Ressource zum Zeitpunkt der Anforderung persistent gemacht. In
dem Fall, daß die
Transaktion abgebrochen wird, wird die kompensierende Aktion außerhalb
der Transaktion aufgerufen, um die dauerhafte Ressource in ihren
Zustand vor der Transaktion zurückzubringen.
Für die
Dauerhaftigkeit werden Informationen, welche für jede normale Aktion, die
während
einer Transaktion durchgeführt
wird, die vorzunehmende kompensierende Aktion identifizieren, auf einer
Vorabeintragungs-Basis in ein Log geschrieben. Somit kann im Fall
eines Fehlers die Wiederherstellung gemäß dem Status der Transaktion
durchgeführt
werden.
-
In
einer komponentenbasierten Online-Transaktionsverarbeitungs-Anwendungsumgebung
wie MTS kann das kompensierende Ressourcenmanagement für eine spezielle
dauerhafte Ressource bereitgestellt werden, indem ein kompensierender
Ressourcenmanager (CRM) realisiert wird. In dem CRM realisiert ein
Entwickler eine kompensierende Aktion für jede normale Aktion, welche
der CRM an der dauerhaften Ressource unterstützt. Der Entwickler realisiert
auch, daß der
CRM in Verbindung mit jeder normalen Aktion ein Vorabeintragungs-Logging
durchführt,
um die kompensierende Aktion für
diese normale Aktion festzulegen.
-
Gemäß einer
Ausführungsform
der Erfindung, welche hierin dargestellt wird (die dargestellte Ausführungsform),
ist der CRM als Paar von Komponenten, CRM-Arbeitsprogramm und CRM-Kompensator entwickelt,
welche nur über
das Medium des Logs ihren Zustand (d. h. ihre Daten) teilen. Das CRM-Arbeitsprogramm
führt zum
Zeitpunkt der Anforderung durch eine Serveranwendung die normale Aktion
als Teil einer Transaktion für
die Serveranwendung durch. Diese Aktion und eine Schnittstelle, über welche
durch die Serveranwendung auf die Aktion zugegriffen werden kann,
sind für
den speziellen CRM spezifisch. Wenn die Serveranwendung die normale
Aktion über
die Schnittstelle aufruft, schreibt das CRM-Arbeitsprogramm auch
einen Log-Datensatz in ein von dem System bereitgestelltes Log,
welcher den CRM-Kompensator identifiziert.
-
Der
CRM-Kompensator realisiert die kompensierende Aktion, welche der
normalen Aktion des CRM-Arbeitsprogramms entspricht. Der CRM-Kompensator,
welcher durch das CRM-Arbeitsprogramm bestimmt
wurde, wird später
erzeugt, um an späteren Phasen
des Zweiphasen-Abschlussprotokolls
(z. B. Phase 1 und Phase 2) teilzunehmen, indem geeignete weitere
Aktionen in Bezug auf die normale Aktion vorgenommen werden, welche
von dem CRM-Arbeitsprogramm
geloggt wurden. Der CRM-Kompensator unterstützt eine systemdefinierte Schnittstelle, über welche
er Zweiphasen-Abschlussprotokoll-Notifikationen (z. B. Vorbereitungs-,
Abschluss- und Abbruchs-Notifikationen) vom Transaktionsmanager empfängt (in
der dargestellten Ausführungsform
mittels eines Log-Wiederherstellungsmanagers). Diese Notifikationen
ermöglichen
dem CRM-Kompensator, an diesen Phasen des Zweiphasen-Abschlussprotokolls
teilzunehmen.
-
Insbesondere
kann der CRM-Kompensator während
der Vorbereitungsphase gegen den Abschluss der Transaktion stimmen
und in Reaktion auf die Vorbereitungsnotifikation einen Abbruch
erzwingen (z. B., indem er in Reaktion auf die Vorbereitungsnotifikation
einen Wert zurücksendet,
um mit „Nein" zu stimmen). Die
Abschlussnotifikation eröffnet
dem CRM-Kompensator
eine Möglichkeit,
nach der normalen Aktion des CRM-Arbeitsprogramms eine Reinigungsverarbeitung
durchzuführen.
Bei dieser Reinigungsverarbeitung handelt es sich um die Entfernung
jedes Zustands (dauerhaft oder nicht dauerhaft), welcher zu Zwecken
der Kompensierung einer abgebrochenen Transaktion bewahrt wurde. Die
Abschlussnotifikation eröffnet
dem Kompensator auch die Möglichkeit,
jede Arbeitsvorgang durchzuführen,
welcher irreversibel ist. Zum Beispiel kann in einer Transaktion
an einem Geldausgabegerät
ein Konto belastet werden und Bargeld ausgegeben werden. Es ist
nicht wünschenswert,
Bargeld auszugeben, solange nicht garantiert ist, daß die Belastung vorgenommen
ist. Mit einem CRM, welcher das Geldausgabegerät verwaltet, würde ein
CRM-Kompensator in Reaktion auf eine Vorbereitungsnotifikation mit „Ja" stimmen, solange
in dem Geldausgabegerät
genug physisches Bargeld vorhanden ist. Dann veranlasst der CRM-Kompensator
in Reaktion auf eine Abschlussnotifikation, daß das Geldausgabegerät tatsächlich das
Bargeld ausgibt. In Reaktion auf die Abbruchsnotifikation führt der
CRM-Kompensator die kompensierende Aktion durch, um die normale
Aktion des CRM-Arbeitsprogramms umzukehren. Dementsprechend nimmt
der CRM-Kompensator
während
der normalen Verarbeitung einer Transaktion an der Transaktionsvorbereitungsphase
teil und wird über
den Ausgang der Transaktion unterrichtet. Der CRM-Kompensator kann
dann bei Abschluss reinigen oder bei Abbruch kompensieren. Andererseits wird
der CRM-Kompensator während
der Wiederherstellung erneut erzeugt und über den Ausgang der Transaktion
basierend auf dem Log informiert, was dem CRM-Kompensator ermöglicht,
die Transaktionsverarbeitung (wenn angebracht) betreffend die Ressource
zu beenden, als ob kein Fehler aufgetreten wäre. Wenn zum Beispiel vor einem
Systemabsturz die Phase 1 nicht beendet war, wird die Transaktion
abgebrochen, und dem CRM-Kompensator wird eine Abbruchsnotifikation übermittelt.
-
In
der hier dargestellten Ausführungsform muß jede von
dem CRM-Kompensator realisierte Aktion (definiert als die während einer
Transaktion verrichtete Arbeit oder als Gruppe von Log-Datensätzen), umfassend
insbesondere die kompensierende Aktion, idempotent sein. Dies bedeutet,
daß die
Aktion des CRM-Kompensators auf einen Abschluss oder einen Abbruch
der Transaktion beliebige Male versucht werden kann, und wenn die
Aktion einmal erfolgreich ist, erzielt die Aktion dasselbe Ergebnis, als
wenn die Aktion beim ersten Versuch erfolgreich gewesen wäre.
-
Weitere
Merkmale und Vorteile der Erfindung werden aus der folgenden detaillierten
Beschreibung einer dargestellten Ausführungsform ersichtlich, welche
sich unter Bezugnahme auf die begleitenden Zeichnungen anschließt.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm eines dezentralen Computersystems, welches verwendet
werden kann, um ein die Erfindung verkörperndes Verfahren und eine
die Erfindung verkörpernde
Vorrichtung für ein
kompensierendes Ressourcenmanagement in einem Online-Transaktionsverarbeitungssystem
zu realisieren.
-
2 ist
ein Blockdiagramm einer Serveranwendungs-Ausführungsumgebung mit Diensten
für die
Transaktionsverarbeitung mit kompensierendem Ressourcenmanagement
gemäß der dargestellten Ausführungsform
der Erfindung.
-
3 ist
ein Blockdiagramm einer komponentenbasierten Architektur eines kompensierenden Ressourcenmanagers
(CRM), welcher in der Serveranwendungs-Ausführungsumgebung zu betreiben ist,
um ein kompensierendes Ressourcenmanagement gemäß der dargestellten Ausführungsform
der Erfindung bereitzustellen.
-
4 ist
ein Ablaufdiagramm einer Ausführungsreihenfolge
innerhalb der CRM-Architektur der 3.
-
5 ist
ein Ablaufdiagramm eines Logging-Verfahrens, welches von einer CRM-Arbeiterkomponente
in der Architektur der 3 durchgeführt wird.
-
6 ist
eine Programmauflistung einer „ICrmLogControl"-Schnittstelle auf
einem CRM-Clerk
in der Architektur des kompensierenden Ressourcenmanagers der 3.
-
7 ist
eine Programmauflistung von Datenstrukturen für eine „ICrmCompensator"-Schnittstelle eines CRM-Kompensators
in der Architektur des kompensierenden Ressourcenmanagers der 3.
-
8 ist
eine Programmauflistung einer „ICrmCompensatorVariants"-Schnittstelle des CRM-Kompensators in der
Architektur des kompensierenden Ressourcenmanagers der 3.
-
9 ist
eine Programmauflistung einer „ICrmCompensator"-Schnittstelle des
CRM-Kompensators
in der Architektur des kompensierenden Ressourcenmanagers der 3.
-
10 ist
eine Programmauflistung einer „ILogRecover"-Schnittstelle einer
Wiederherstellungsmaschine in der Architektur des kompensierenden
Ressourcenmanagers der 3.
-
11 ist
eine Programmauflistung einer „ILogRecoverClerk"-Schnittstelle eines
CRM-Wiederherstellungs-Clerks
und des CRM-Clerks in der Architektur des kompensierenden Ressourcenmanagers
der 3.
-
12 ist
eine Programmauflistung einer „ILogRecoverClerkPhaseNotification"-Schnittstelle des
CRM-Wiederherstellungs-Clerks und des CRM-Clerks in der Architektur
des kompensierenden Ressourcenmanagers der 3.
-
13 ist
eine Programmauflistung einer „ILogRecoverClerkRegistration"-Schnittstelle der Wiederherstellungsmaschine
in der Architektur des kompensierenden Ressourcenmanagers der 3.
-
14 ist
eine Programmauflistung einer „ILog"-Schnittstelle eines
Log-Objekts für
ein persistentes Log in der Architektur des kompensierenden Ressourcenmanagers
der 3.
-
15 ist
eine Programmauflistung einer „ICrmFormatLogRecords"-Schnittstelle in
der Architektur des kompensierenden Ressourcenmanagers der 3.
-
16 ist
eine Programmauflistung einer „ICrmMonitorLogRecords"-Schnittstelle des CRM-Clerks in der Architektur
des kompensierenden Ressourcenmanagers der 3.
-
17 ist
eine Programmauflistung einer „ICrmMonitorClerks"-Schnittstelle eines
Clerk-Zusammenstellungsobjekts
in der Architektur des kompensierenden Ressourcenmanagers.
-
18 ist
eine Programmauflistung einer „ICrmMonitor"-Schnittstelle des
CRM-Wiederherstellungs-Clerks
in der Architektur des kompensierenden Ressourcenmanagers der 3.
-
DETAILLIERTE BESCHREIBUNG
DER DARGESTELLTEN AUSFÜHRUNGSFORMEN
-
Die
vorliegende Erfindung betrifft Verfahren, Systeme und Softwareprodukte
für ein
kompensierendes Ressourcenmanagement bei der Online-Transaktionsverarbeitung.
In einer hierin dargestellten Ausführungsform ist die Erfindung
in Betriebssoftware für
Serveranwendungen auf dezentralen Computersystemen mit der Bezeichnung „COM+" integriert, wobei
es sich um einen Teil des Betriebssystems „Microsoft Windows NT Server
5.0" von der Microsoft
Corporation in Redmond, Washington, handelt. Kurz beschrieben stellt
diese Software ein Komponentengerüst und eine Laufzeit-Ausführungsumgebung
für Serveranwendungen
bereit, welche unter anderem Systemdienste umfaßt, um die Transaktionsverarbeitung
zu unterstützen,
wobei ein Zweiphasen-Abschlussprotokoll
auf dezentralen Computersystemen verwendet wird.
-
Beispielhafte Betriebsumgebung
-
1 und
die folgende Erörterung
sollen eine kurze allgemeine Beschreibung einer geeigneten Computerumgebung
geben, in welcher die Erfindung realisiert werden kann. Obwohl die
Erfindung in dem allgemeinen Zusammenhang computerausführbarer
Befehle eines Computerprogramms beschrieben wird, welches auf einem
Server-Computer abläuft,
wird der Fachmann erkennen, daß die
Erfindung auch in Kombination mit anderen Programmmodulen realisiert
werden kann. Im Allgemeinen umfassen die Programmmodule Routinen,
Programme, Komponenten, Datenstrukturen usw., welche spezielle Aufgaben
erfüllen
oder spezielle abstrakte Datentypen realisieren. Überdies
wird der Fachmann erkennen, daß die
Erfindung auch mit anderen Computersystemkonfigurationen ausgeführt werden
kann, umfassend Einzel- oder Mehrprozessor-Computersysteme, Minicomputer,
Großcomputer
ebenso wie Personalcomputer, Handcomputervorrichtungen, Verbraucherelektronik
auf Mikroprozessorbasis oder programmierbare Verbraucherelektronik
und Ähnliches.
Die dargestellte Ausführungsform
der Erfindung wird auch in dezentralen Computerumgebungen ausgeführt, wo
Aufgaben durch entfernte Verarbeitungsvorrichtungen erfüllt werden,
welche über ein
Kommunikationsnetzwerk verbunden sind. Einige Ausführungsformen
der Erfindung können
jedoch auf eigenständigen
Computern ausgeführt
werden. In einer dezentralen Computerumgebung können sich Programmmodule sowohl
auf lokalen als auch auf entfernten Speichervorrichtungen befinden.
-
Bezug
nehmend auf 1, umfasst ein beispielhaftes
System zur Realisierung der Erfindung einen herkömmlichen Server-Computer 20,
umfassend eine Prozessoreinheit 21, einen Systemspeicher 22 und
einen Systembus 23, welcher verschiedene Systemkomponenten,
darunter den Systemspeicher, mit der Prozessoreinheit 21 verbindet.
Bei der Prozessoreinheit kann es sich um irgendeinen der verschiedenen
kommerziell erhältlichen
Prozessoren handeln, z. B. Intel x86, Pentium und kompatible Mikroprozessoren
von Intel und anderen, z. B. Cyrix, AMD und Nexgen; Alpha von Digital;
MIPS von MIPS Technology, NEC, IDT, Siemens und anderen und den
PowerPC von IBM und Motorola. Duale Mikroprozessoren und andere
Mehrprozessorarchitekturen können ebenfalls
als Prozessoreinheit 21 verwendet werden.
-
Bei
dem Systembus kann es sich um irgendeine von verschiedenen Arten
von Busstrukturen handeln, z. B. um einen Speicherbus oder eine Speichersteuerung,
einen Peripheriebus oder einen lokalen Bus, wobei irgendeine aus
einer Vielfalt von herkömmlichen
Busarchitekturen verwendet werden kann, wie z. B. PCI, VESA, Microchannel,
ISA und EISA, um nur einige zu nennen. Der Systemspeicher umfasst
einen Nur-Lese-Speicher (ROM) 24 und einen Direktzugriffsspeicher
(RAM) 25. Ein Basis-Eingabe/Ausgabe-System (BIOS), welches
die Basisroutinen enthält,
welche dazu beitragen, Informationen zwischen Elementen innerhalb
des Server-Computers 20 zu übertragen, z. B. während des
Hochfahrens, ist im ROM 24 gespeichert.
-
Der
Server-Computer 20 umfasst ferner ein Festplattenlaufwerk 27,
ein Magnetplattenlaufwerk 28, um z. B. etwas aus einer
Wechselplatte 29 auszulesen oder auf diese zu schreiben,
und ein optisches Plattenlaufwerk 30, um z. B. etwas aus
einer CD-ROM 31 auszulesen oder etwas aus anderen optischen
Medien auszulesen oder auf diese zu schreiben. Das Festplattenlaufwerk 27,
das Magnetplattenlaufwerk 28 und das optische Plattenlaufwerk 30 sind über eine
Festplattenlaufwerk-Schnittstelle 32, eine Magnetplattenlaufwerk-Schnittstelle 33 bzw.
eine Optiklaufwerk-Schnittstelle 34 mit
dem Systembus 23 verbunden. Die Laufwerke und ihre zugehörigen computerlesbaren
Medien sorgen für
eine Speicherung von Daten, Datenstrukturen, computerausführbaren
Befehlen usw. für
den Server-Computer 20. Obwohl sich die obige Beschreibung
von computerlesbaren Medien auf eine Festplatte, eine auswechselbare
Magnetplatte und eine CD bezieht, sollte der Fachmann erkennen,
daß in
der beispielhaften Betriebsumgebung auch andere Arten von Medien
verwendet werden können,
welche von einem Computer lesbar sind, z. B. Magnetbandcassetten,
Flash-Speicher-Karten, DVDs, Bernoulli-Kassetten und Ähnliches.
-
In
den Laufwerken und im RAM 25 kann eine Anzahl von Programmmodulen
gespeichert werden, z. B. ein Betriebssystem 35, ein oder
mehrere Anwendungsprogramme 36, andere Programmmodule 37 und
Programmdaten 38. Bei dem Betriebssystem 35 in
dem dargestellten Server-Computer handelt es sich um das Betriebssystem
Microsoft Windows NT Server zusammen mit dem zuvor erwähnten Microsoft
Transaction Server.
-
Ein
Benutzer kann Befehle und Informationen über eine Tastatur 40 und
eine Zeigervorrichtung, z. B. eine Maus 42, in den Server-Computer 20 eingeben.
Andere (nicht dargestellte) Eingabevorrichtungen können z.
B. ein Mikrofon, ein Joystick, ein Game Pad, ein Satellitenantenne,
ein Scanner oder Ähnliches
sein. Diese und andere Eingabevorrichtungen sind mit der Prozessoreinheit 21 oft über eine
serielle Schnittstelle 46 verbunden, welche mit dem Systembus
verbunden ist, können
aber auch über
andere Schnittstellen verbunden sein, z. B. eine parallele Schnittstelle,
eine Spielschnittstelle oder einen universellen seriellen Bus (USB).
Ein Monitor 47 oder eine andere Art der Anzeigevorrichtung
ist über eine
Schnittstelle, z. B. einen Video-Adapter 48, ebenfalls
mit dem Systembus 23 verbunden. Außer dem Monitor umfassen Server-Computer
typischerweise andere (nicht dargestellte) periphere Ausgabevorrichtungen,
wie z. B. Lautsprecher und Drucker.
-
Der
Server-Computer 20 kann in einer Netzwerkumgebung arbeiten,
wobei logische Verbindungen zu einem oder mehreren entfernten Computer,
z. B. zu einem entfernten Client-Computer 49, verwendet
werden. Bei dem entfernten Computer 49 kann es sich um
einen Arbeitsplatzrechner, einen Server-Computer, einen Leitwegrechner,
eine gleichrangige Vorrichtung oder einen anderen üblichen
Netzwerkknoten handeln, und er umfasst typischerweise viele oder
alle der in Bezug auf den Server-Computer 20 beschriebenen
Elemente, obwohl in 1 nur eine Speichervorrichtung 50 dargestellt
ist. Die in 1 abgebildeten logischen Verbindungen
umfassen ein lokales Netz (LAN) 51 und ein weiträumiges Netz
(WAN) 52. Solche Netzwerkumgebungen sind in Büros, unternehmensweiten
Computernetzen, Intranets und dem Internet alltäglich.
-
Wenn
er in einer LAN-Netzwerkumgebung verwendet wird, ist der Server-Computer 20 über eine
Netzwerk-Schnittstelle oder einen Adapter 53 mit dem lokalen
Netz 51 verbunden. Wenn er in einer WAN-Netzwerkumgebung
verwendet wird, umfasst der Server-Computer 20 typischerweise
ein Modem 54, oder er ist mit einem Kommunikationsserver
auf dem LAN verbunden, oder er weist andere Mittel auf, um Kommunikationen über das
weiträumige
Netz 52, z. B. das Internet, herzustellen. Das Modem 54,
bei welchem es sich um ein internes oder ein externes handeln kann,
ist über
die serielle Schnittstelle 46 mit dem Systembus 23 verbunden.
In einer Netzwerkumgebung können
in der entfernten Speichervorrichtung Programmmodule, welche in
Bezug auf den Server-Computer 20 dargestellt wurden, oder
Teile davon gespeichert sein. Man wird erkennen, daß die dargestellten
Netzwerkverbindungen beispielhaft sind, und daß andere Mittel zur Herstellung
einer Kommunikationsverbindung zwischen den Computer verwendet werden
können.
-
Wie
es für
den Fachmann auf dem Gebiet der Computerprogrammierung üblich ist,
wird die vorliegende Erfindung im Folgenden in Bezug auf Maßnahmen
und symbolische Darstellungen von Operationen beschrieben, welche
von dem Server-Computer 20 durchgeführt werden, solange nicht anders
angegeben. Solche Maßnahmen
und Operationen werden manchmal als computerausgeführt bezeichnet. Man
wird erkennen, daß die
Maßnahmen
und symbolisch dargestellten Operationen die Manipulation von elektrischen
Signalen, welche Datenbits darstellen, durch die Prozessoreinheit 21,
was zu einer Umwandlung oder Reduzierung der elektrischen Signaldarstellung
führt,
und die Unterhaltung von Datenbits an Speicherstellen in dem Speichersystem
(z. B. in dem Systemspeicher 22, in dem Festplattenlaufwerk 27,
auf den Disketten 29 und CD-ROM 31), um dadurch
den Betrieb des Computersystems neu zu konfigurieren oder auf andere
Weise zu verändern, ebenso
wie eine andere Verarbeitung von Signalen umfassen. Bei den Speicherstellen,
wo Datenbits unterhalten werden, handelt es sich um physische Stellen,
welche spezielle elektrische, magnetische oder optische Eigenschaften
aufweisen, die den Datenbits entsprechen.
-
Überblick über das MTS-Programmierungsmodell
-
2 zeigt
eine Serveranwendungs-Ausführungsumgebung 82 des
Microsoft Transaction Server (MTS), in welcher ein erfindungsgemäßes kompensierendes
Ressourcenmanagement enthalten ist. Die MTS-Ausführungsumgebung 82 ist
in den oben angeführten
einbezogenen MTS-Patentanmeldungen detaillierter beschrieben.
-
Bezug
nehmend nun auf 2, stellt ein Transaktionsserver-Hauptsteuerprogramm 80 Laufzeit-
oder Systemdienste bereit, um die Laufzeit-Ausführungsumgebung 80 zu
erzeugen, welche die Online-Transaktionsverarbeitung durch Serveranwendungskomponenten
(z. B. die Serveranwendungskomponente 86) auf einem Server-Computer 84 unterstützt. Das
Transaktionsserver-Hauptsteuerprogramm 80 stellt den Serveranwendungskomponenten 86 auch
Dienste für
das Teilprozess- und Kontextmanagement bereit. Außerdem stellt
das Transaktionsserver-Hauptsteuerprogramm 80 systemdefinierte
Objekte (z. B. ein Komponentenkontextobjekt 136) bereit,
welche Komponentenintegrations-Schnittstellen unterstützen. Das
dargestellte Transaktionsserver-Hauptsteuerprogramm 80 ist
als dynamische Bibliothek (Dynamic Link Library, „DLL") realisiert. (Eine
DLL ist ein wohlbekanntes ausführbares
Dateiformat, welches eine dynamische oder Laufzeitverknüpfung eines
ausführbaren
Codes mit einem Prozess eines Anwendungsprogramms ermöglicht.)
Das Transaktionsserver-Hauptsteuerprogramm 80 wird direkt
in Prozesse eines Anwendungsservers (z. B. Application Server Process, „ASP" 90) geladen,
welche für
Serveranwendungskomponenten die Hostfunktion ausüben, und läuft transparent im Hintergrund
dieser Prozesse ab.
-
Bei
dem dargestellten ASP 90 handelt es sich um einen Systemprozeß, welcher
für die
Ausführung
von Serveranwendungskomponenten die Hostfunktion ausübt. Jeder
ASP 90 kann für
mehrere Serveranwendungskomponenten die Hostfunktion ausüben, welche
zu einer Zusammenstellung gruppiert sind, die als „Paket" bezeichnet wird.
Auch können mehrere
ASP 90 unter einem vielfädigen Mehrprogramm-Betriebssystem
(in der dargestellten Ausführungsform
z. B. Microsoft Windows NT) auf dem Server-Computer ablaufen. Jeder
ASP 90 stellt eine separate Vertrauensgrenze und Fehlerisolierungsdomäne für die Serveranwendungskomponenten
bereit. Wenn sie in getrennten ASP ablaufen, beeinträchtigt mit
anderen Worten im Allgemeinen ein Fehler einer Serveranwendungskomponente,
welcher bewirkt, daß ihr
ASP beendet wird, nicht die Serveranwendungskomponenten in einem
anderen ASP. In der dargestellten Ausführungsform sind die Serveranwendungskomponenten
zu einem Paket gruppiert, um unter Anwendung eines Verwaltungsdienstprogramms,
welches als „COM
Explorer" bezeichnet wird,
zusammen in einem ASP 90 abzulaufen. Dieses Dienstprogramm
stellt eine graphische Benutzerschnittstelle zum Verwalten von Attributen
bereit, die zu Serveranwendungskomponenten gehören, umfassend das Gruppieren
der Komponenten zu Paketen.
-
In
einer typischen Installation, welche in 2 dargestellt
ist, befindet sich die Ausführungsumgebung 80 auf
dem Server-Computer 84 (welcher ein Beispiel für den oben
beschriebenen Computer 20 sein kann), welcher in einem
dezentralen Computernetzwerk verbunden ist, welches eine große Anzahl
von Client-Computern 92 umfaßt, welche auf die Serveranwendungskomponenten
in der Ausführungsumgebung
zugreifen. Alternativ kann sich die Ausführungsumgebung 80 auf
einem einzelnen Computer befinden, und Host-ServerAnwendungskomponenten,
auf welche von Client-Prozessen zugegriffen wird, residieren ebenfalls
auf diesem Computer.
-
Die
Serveranwendungskomponenten 86, für welche die Ausführungsumgebung 80 des
ASP 90 die Hostfunktion ausübt, realisieren die Geschäftslogik
einer Serveranwendung, z. B. den Code für die Verwaltung von Kurseinschreibungen
in der Einschreibungsanwendung einer Universität oder von Aufträgen in einer
Online-Verkaufsanwendung. Typischerweise umfasst jede Serveranwendung
mehrere Komponenten, von denen jede Programmcode für einen
Teil der Aufgaben einer Anwendung enthält. Zum Beispiel kann eine
Bankanwendung eine Transferkomponente, eine Kontobelastungskomponente
und eine Kontogutschriftkomponente umfassen, welche Teile der Aufgaben
einer Geldtransferoperation der Anwendung durchführen. Die Kontobelastungskomponente
in diesem Bankanwendungsbeispiel realisiert einen Programmcode dafür, ein bestimmtes
Konto in einer Bankdatenbank mit einer bestimmten Summe zu belasten.
Die Kontogutschriftkomponente realisiert einen Programmcode dafür, einem
bestimmten Konto in der Datenbank eine Summe gutzuschreiben. Die
Transferkomponente realisiert einen Programmcode, welcher die Kontobelastungskomponente
und die Kontogutschriftkomponente verwendet, um einen Geldtransfer
zwischen zwei Konten zu bewirken.
-
Die
Serveranwendungskomponente 86 in der dargestellten Ausführungsform
entspricht dem Component Object Model („COM") der Spezifikationen OLE und ActiveX
der Microsoft Corporation (wird also als „COM Object" realisiert), kann
aber alternativ auch gemäß anderen
Objektstandards realisiert werden, z. B. gemäß der CORBA-Spezifikation (Common
Object Request Broker Architecture) der Object Management Group.
Die OLE-COM-Spezifikation definiert Binärstandards für Komponenten
und ihre Schnittstellen, welche die Integration von Software-Komponenten
erleichtern. Aus Konvention sind die Schnittstellen eines COM-Objekts
graphisch als Steckerbuchse dargestellt, wie für die Serveranwendungskomponente 86 in 2 dargestellt.
Auch werden den Schnittstellen üblicher
Weise Namen gegeben, die mit einem großen „I” beginnen. Für eine detaillierte
Beschreibung von OLE wird auf Kraig Brockschmidt, Inside OLE, Zweite
Auflage, Microsoft Press, Redmond, Washington, 1995, verwiesen.
-
In
der Ausführungsumgebung 80 der 2 wird
die Serveranwendungskomponente 86 unter der Steuerung des
Transaktionsserver-Hauptsteuerprogramms 80 im ASP 90 ausgeführt. Das
Transaktionsserver-Hauptsteuerprogramm 80 ist für das Laden der
Serveranwendung DLL 300 in das ASP 90 und das
Instanzieren der Serveranwendungskomponente 86 unter Verwendung
der Klassenfabrik 122 verantwortlich. Das Transaktionsserver-Hauptsteuerprogramm 80 verwaltet
ferner Aufrufe der Serveranwendungskomponente 86 von Client-Programmen
(welche sich entweder auf demselben Computer befinden, oder über eine
Netzwerkverbindung).
-
Die
dargestellte Ausführungsumgebung 80 stellt
an die Serveranwendungskomponente 86 bestimmte zusätzliche
Anforderungen, außer
daß sie den
COM-Anforderungen entsprechen muß. Erstens wird die Serveranwendungskomponente
in einer DLL-Datei (also der Serveranwendungs-DLL 120 der 3)
realisiert. (COM-Objekte können
ansonsten alternativ in einer ausführbaren Datei ("exe"-Datei) realisiert
werden.) Zweitens weist die DLL-Datei 120 der Komponente
eine Standard-Klassenfabrik 122 auf (d. h., die DLL realisiert
und exportiert die DIlGetClassObject-Methode und unterstützt die
IClassFactory-Schnittstelle). Drittens exportiert die Serveranwendungskomponente
nur Schnittstellen, welche standardmäßig zusammengestellt werden
können, was
bedeutet, daß die
Schnittstellen der Komponenten entweder durch eine Typbibliothek
beschrieben werden oder eine Proxy-Programmstumpf-DLL aufweisen.
Die Proxy-Programmstumpf-DLL stellt eine Proxy-Komponente 130 in
einem Client-Prozess 132 auf dem Client-Computer 92 und
eine Pro grammstumpfkomponente 131 in dem ASP 90 auf dem
Server-Computer 84 bereit. Die Proxy-Komponente 130 und
die Programmstumpfkomponente 131 stellen Aufrufe von einem
Client-Programm 134 über den
Server-Computer 84 hinweg zusammen. Die Proxy-Programmstumpf-DLL
in dem dargestellten System wird unter Anwendung der MIDL-Version 3.00.44
gebildet, welche mit Microsoft Win32 SDK für Microsoft Windows NT 4.0
mit dem Oicf-Kompilierer-Schalter bereitgestellt wird, und wird
mit dem Transaktionsserver-Hauptsteuerprogramm 80 verbunden.
Diese zusätzlichen
Anforderungen entsprechen wohlbekannten Praktiken.
-
Das
Client-Programm 134 der Serveranwendungskomponente 86 ist
ein Programm, welches die Serveranwendungskomponente verwendet.
Bei dem Client-Programm kann es sich um einen Programmcode (z. B.
ein Anwendungsprogramm, COM-Objekt usw.) handeln, welcher außerhalb
der Ausführungsumgebung 80 abläuft (nicht
unter der Steuerung des Transaktionsserver-Hauptsteuerprogramms 80). Solche
Client-Programme werden als „Basis-Clients" bezeichnet.
-
Alternativ
kann es sich bei dem Client-Programm 134 um eine andere
Serveranwendungskomponente handeln, welche auch unter der Steuerung des
Transaktionsserver-Hauptsteuerprogramm 80 abläuft (entweder
in demselben oder einem eigenen ASP 90). Das Client-Programm 134 kann
sich auf dem Server-Computer 84 oder auf einem eigenen Client-Computer 92 befinden,
wie in 2 dargestellt (in diesem Fall wirkt der Client-Computer
mit der Serveranwendungskomponente 86 aus der Entfernung über das
Proxy-Objekt 130 und das Programmstumpf-Objekt 131 zusammen).
-
Der
Server-Computer 84 führt
auch einen Ressourcenmanager 140 und einen Ressourcendispenser 144 aus.
Der Ressourcenmanager 140 ist ein Systemdienst, welcher
dauerhafte Daten (z. B. Daten in einer Datenbank 146) verwaltet.
Die Serveranwendungskomponente 86 kann den Ressourcenmanager
verwenden, um den dauerhaften Zustand der Serveranwendung (z. B.
das Verzeichnis des verfügbaren
Inventars, zu bearbeitender Aufträge und verfügbarer Konten in einer Online-Verkaufs-Serveranwendung)
aufrecht zu erhalten. Beispiele für Ressourcenmanager in der
dargestellten Ausführungsform
sind der Microsoft SQL Server, dauerhafte Meldungswarteschlangen
und Transaktion-Dateisysteme. Vorzugsweise unterstützt der
Ressourcenmanager 140 die Durchführung von Veränderungen
oder Aktualisierungen des dauerhaften Zustands der Serveranwendung
durch die Serveranwendungskomponente 86 auf Transaktionsbasis
(also in Transaktionen, welche den wohlbekannten ACID-Eigenschaften
entsprechen).
-
Der
Ressourcendispenser 144 ist ein Dienst, welcher einen nicht
dauerhaften gemeinsamen Zustand (also ohne die Garantie der Dauerhaftigkeit)
für die
Serveranwendungskomponenten innerhalb des ASP 90 verwaltet.
Ressourcendispenser sind in der dargestellten Ausführungsumgebung
auch für
die automatische Transaktionsteilnahme verantwortlich, wie in den
oben angeführten
einbezogenen MTS-Patentanmeldungen beschrieben. Beispiele für den Ressourcendispenser 144 in
der dargestellten Ausführungsform
sind ein ODBC-Ressourcendispenser, welcher einen Pool von Datenbankverbindungen
unterhält,
die der Aufrufebenen-Schnittstelle Microsoft Open Database Connectivity
(„ODBC") entsprechen. Der
ODBC-Ressourcendispenser
weist der Serveranwendungskomponente Datenbankverbindungen für den Zugriff
auf Daten aus einer Datenbank 146 (im Allgemeinen über ihren
Ressourcenmanager 140) zu. Außerdem verlangt der ODBC-Ressourcendispenser
Datenbankverbindungen zurück,
wenn sie von den Serveranwendungskomponenten für eine spätere Neuverwendung freigegeben
werden.
-
Die
dargestellte Ausführungsumgebung 82 umfasst
ferner einen Transaktionsmanager 148. Der Transaktionsmanager 148 ist
ein Systemdienst, welcher Transaktionen koordiniert, die mehrere
Ressourcenmanager überspannen,
einschließlich
solcher, wobei sich die Ressourcenmanager in einem dezentralen Netzwerk
auf mehr als einem Server-Computer befinden. Der Transaktionsmanager 148 stellt
sicher, daß Aktualisierungen
ungeachtet von Fehlern (z. B. Computer- oder Netzwerk-Hardware-
oder Software-Fehlern oder Fehlern, die von einem sich fehlerhaft
verhaltenden Ressourcenmanager oder einer fehlerhaften Anwendung
verursacht werden), Konkurrenzzuständen (z. B. eine Transaktion,
welche beginnt abgeschlossen zu werden, während ein Ressourcenmanager
einen Abbruch initiiert) oder Verfügbarkeit (ein Ressourcenmanager
bereitet eine Transaktion vor, kehrt aber nie zurück) über alle an
einer Transaktion teilnehmenden Ressourcenmanager hinweg gemäß den ACID-Eigenschaften
geschehen, wobei das wohlbekannte Zweiphasen-Abschlussprotokoll
verwendet wird. Der dargestellte Transaktionsmanager 148 ist
der Microsoft Distributed Transaction Coordinator (MSDTC), welcher
als Teil des Microsoft SQL Servers 6.5 ausgegeben wird.
-
Die Architektur des kompensierenden
Ressourcenmanagers
-
Bezug
nehmend nun auf 3 umfasst eine komponenten-
oder objektbasierte Architektur 200 eines kompensierenden
Ressourcenmanagers (CRM) eine Anzahl von vom System bereitgestellten
Komponenten und von systemdefinierten Schnittstellen, welche es
den Entwicklern ermöglichen,
Ressourcen mit dauerhafter Datenspeicherung schneller und einfacher
in die MTS-Ausführungsumgebung 82 (2) zu
integrieren, ohne daß sie
einen vollständigen
Ressourcenmanager und Ressourcendispenser speziell für die Ressource
realisieren müssen
(z. B. den Ressourcenmanager 140 und den Ressourcendispenser 144 der 2).
Die dargestellte Architektur 200 ist insbesondere für zwei Ressourcenszenarios
anwendbar, namentlich (1) ein Alt- oder Blackbox-Transaktionsverarbeitungssystem,
welches seinen eigenen internen Mechanismus aufweist, um Transaktionen
zu behandeln, aber nicht die OLE-Transaktionsschnittstellen unterstützt, und
(2) Ressourcen ohne Transaktionsunterstützung. Die Architektur 200 ermöglicht in
dem ersteren Szenario eine einfachere Integration in die MTS-Umgebung 82 (2),
indem eine Ressourcenmanager-Infrastruktur mit Unterstützung der
OLE-Transaktionsschnittstellen bereitgestellt wird und die Notwendigkeit
beseitigt wird, einen Ressourcendispenser für den Ressourcenmanager zu
haben. Ferner ermöglicht
die Architektur 200 in jedem Szenario, daß die Ressourcen durch
die Anwendung des erfindungsgemäßen kompensierenden
Ressourcenmana gements mit einem einfacheren, einfacher zu entwickelnden
Ressourcenmanager integriert werden.
-
In
der dargestellten Architektur 200 eines kompensierenden
Ressourcenmanagers muß der Entwickler
nur ein CRM-Arbeitsprogramm 202 und einen CRM-Kompensator 206 realisieren,
welche die vom System bereitgestellten Komponenten und Schnittstellen
der Architektur 200 benutzen, um für ein kompensierendes Ressourcenmanagement
der Ressource zu sorgen. Das CRM-Arbeitsprogramm 202 und
der CRM-Kompensator 206 sind typischerweise in einem MTS-Bibliothekspaket
installiert, so daß sie
in jedem MTS-Serverprozess (z. B. ASP 90) benutzt werden
können.
-
Im
CRM-Arbeitsprogramm 202 realisiert der Entwickler eine
Logik (also einen Programmcode) speziell für die Ressource, um an der
Ressource eine normale Aktion als Teil einer Transaktion durchzuführen. Der
Entwickler realisiert auch eine ressourcenspezifische Schnittstelle
(z. B. die „IDoWork"-Schnittstelle 210),
an welche eine Serveranwendungskomponente 86 Aufrufe ausgeben
kann, um zu bewirken, daß das
CRM-Arbeitsprogramm 202 die normale Aktion an der Ressource
durchführt.
Das CRM-Arbeitsprogramm 202 bewirkt die normale Aktion
an der Ressource zum Zeitpunkt der Anforderung der Serveranwendungskomponente,
so daß die
Ergebnisse der normalen Aktion unmittelbar nach der Anforderung
auf der Ressource persistent sind.
-
Andererseits
realisiert der Entwickler eine Logik im CRM-Kompensator 206,
welche für
kompensierende Aktionen sorgt, die auf die normale Aktion des CRM-Arbeitsprogramms 202 bezogen
sind. Der Entwickler realisiert ferner den CRM-Kompensator 206,
um eine systemdefinierte Schnittstelle (die „ICompensatingResourceManager"-Schnittstelle 212)
zu unterstützen, über welche
der CRM-Kompensator vom Transaktionsmanager 148 (2)
Vorbereitungs-, Abschluss- und Abbruchsnotifikationen empfangt.
Diese Notifikationen vom Transaktionsmanager werden dem CRM-Kompensator
mittels einer vom System bereitgestellten Infrastruktur, einer Wiederherstellungsmaschine
und eines unten beschriebenen CRM-Clerks zugeführt. Während der Vorbereitungsphase
einer Transaktion, in welcher das CRM-Arbeitsprogramm 202 seine
normale Aktion durchgeführt
hat, kann der CRM-Kompensator in Reaktion auf die Vorbereitungsnotifikation
bewirken, daß die
Transaktion abgebrochen wird, z. B. wenn die Umstände eine
erfolgreiche Beendigung der Transaktion verhindern würden. In
der zweiten Phase der Transaktion kann der CRM-Kompensator auf eine
Abschlussnotifikation reagieren, indem er für die normale Aktion des CRM-Arbeitsprogramms
an der Ressource die richtigen Reinigungsaktionen durchführt. Alternativ
kann der CRM-Kompensator auf eine Abbruchsnotifikation reagieren,
indem er eine kompensierende Aktion durchführt, welche die normale Aktion
des CRM-Arbeitsprogramms umkehrt.
-
Die
normalen, die Reinigungs- und die kompensierenden Aktionen variieren
im Allgemeinen in Abhängigkeit
von der speziellen dauerhaften Ressource, die verwaltet wird. Wo
es sich bei der Ressource zum Beispiel um ein Dateisystem oder eine Datenbank
handelt, können
die Aktionen Datenverarbeitungsaktivitäten umfassen, z. B. das Modifizieren von
Daten, das Schreiben neuer Daten oder das Löschen von Daten aus der Ressource.
In dem Fall einiger Ressourcen können
die Reimgungs- und/oder kompensierenden Aktionen des CRM-Kompensators zusätzlich zu
der Datenverarbeitung Aktivitäten
wie die Ausgabe von Bargeld, Tickets oder anderen Gegenständen aus
einem Geldausgabegerät
oder einer anderen automatisierten Ausgabemaschine umfassen, welche
irreversible Ergebnisse in der echten Welt aufweisen können (eine
solche Operation, welche irreversible Folgen in der physischen Welt
aufweist, wird hierin als „reale
Operation" bezeichnet).
-
Weitere
Komponenten der CRM-Architektur 200 sind in die MTS-Laufzeitumgebung
und Dienste integriert und sind somit „vom System bereitgestellt". Dies ermöglicht dem
Entwickler, nur das CRM-Arbeitsprogramm und den CRM-Kompensator
zu realisieren, welche für
eine bestimmte Ressource spezifisch sind, und sich auf diese vom
System bereitgestellten Komponenten zu verlassen, um Dienste bereitzustellen,
welche sich mit Problemen wie Logging, Wiederherstellung und Teilprozesssicherheit befassen.
Die vom System bereitgestellten Komponenten der dargestellten Architektur 200 umfassen einen
CRM-Clerk 222, einen CRM-Wiederherstellungs-Clerk 224 und
ein persistentes Log 226. Jede von diesen ist ebenfalls
als COM-Komponente
realisiert. Alle dieser Komponenten laufen innerhalb des Anwendungsserverprozesses
(ASP) 90 (ebenfalls in 2 dargestellt)
ab.
-
Die
CRM-Architektur 200 sorgt dadurch für Teilprozesssicherheit, daß die vom
System bereitgestellten Komponenten der Architektur individuell
teilprozesssicher sind, was bedeutet, daß sie von jedem Teilprozess
aus aufgerufen werden können.
Ferner unterstützt
die CRM-Architektur 200 alle der OLE-Transaktionsschnittstellen,
die benötigt
werden, um mit MTS verbunden zu werden. Die CRM-Architektur 200 geht
nicht davon aus, daß die
Benutzer der Funktionalität
der Architektur (also die Serveranwendungskomponenten 86)
selbst teilprozesssicher sind. Die CRM-Architektur 200 garantiert,
daß alle
Aufrufe des CRM-Kompensators in demselben Apartment vorgenommen
werden, in welchem der CRM-Kompensator gemäß Standard-COM-Programmierungspraktiken
erzeugt wurde. Mit anderen Worten geht die CRM-Architektur davon
aus, daß ihre
Benutzer wenigstens Apartmentmodellkomponenten sind (ein wohlbekanntes
Teilprozessmodell).
-
Der
CRM-Clerk 222 und der CRM-Wiederherstellungs-Clerk 224 stellen
Logging- und Wiederherstellungsdienste in der Architektur 200 bereit. Während des
normalen Betriebs erzeugt jedes CRM-Arbeitsprogramm 202 seine
eigene Instanz eines CRM-Clerks (es besteht also ein Eins-zu-Eins-Verhältnis zwischen
CRM-Arbeitsprogramm und CRM-Clerk). Das CRM-Arbeitsprogramm 202 greift
auf den CRM-Clerk 222 über
eine systemdefinierte Schnittstelle, die ICrmLogControl-Schnittstelle 230,
zu, um Informationen in die Warteschlange zu stellen, welche in
das persistente Log 226 geloggt werden sollen. Der CRM-Clerk
fügt den Log-Aufzeichnungen weitere
Informationen hinzu, bevor sie in das Log geschrieben werden. Während der
normalen Verarbeitung ist der CRM-Clerk 222 auch für das Instanzieren
des CRM-Kompensators und
das Weiterleiten von Zweiphasen-Abschlussnotifikationen zu dem CRM-Kompensator, wie
erforderlich, verantwortlich.
-
Der
CRM-Wiederherstellungs-Clerk 224 arbeitet als Log- und
Wiederherstellungsmanager, welcher allen kompensierenden Ressourcenmanagern in
dem Computersystem gemeinsam zusteht. Der CRM-Wiederherstellungs-Clerk 224 ist
eine Einermengen-COM-Komponente, was bedeutet, daß es immer
nur eine Instanz des CRM-Wiederherstellungs-Clerk in dem ASP 90 gibt.
Der CRM-Wiederherstellungs-Clerk 224 führt die ursprüngliche
Wiederherstellung auf dem persistenten Log 226 durch, welche
automatisch initiiert wird, wenn der MTS-Serverprozess (z. B. ASP 90),
welcher für
die CRM-Komponenten die Hostfunktion ausübt, anläuft. Danach bleibt der CRM-Wiederherstellungs-Clerk 224 aktiv,
um Fixpunkte auf dem Log zu initiieren, und um einen zentralen Punkt
bereitzustellen, durch welchen CRM-Clerks überwacht werden.
-
Der
CRM-Wiederherstellungs-Clerk 224 unterstützt eine „ICrmMonitor"-Schnittstelle 234,
welche erhalten wird, indem die „CoCreatelnstance()"-API-Methode mit
der CLSID des CRM-Wiederherstellungs-Clerks
aufgerufen wird. Die „ICrmMonitor"-Schnittstelle ist
in der Programmauflistung 320 definiert, welche in 18 dargestellt
ist. Die „ICrmMonitor"-Schnittstelle 234 wird
verwendet, um zu überwachen,
welche Transaktionen für
die CRMs im ASP 90 aktuell ablaufen (z. B. durch eine Programm-
oder COM-Komponente, welche Benutzeranzeigen oder Dialoge für eine Operator-
oder Administratorperson bereitstellt). Die von dem CRM-Arbeitsprogramm bei
der Registrierung des CRM-Kompensators (siehe die unten beschriebene „RegisterCompensator()"-Methode) bereitgestellten
Textbeschreibungen sind verfügbar,
um bei der Suche nach einer bestimmten CRM-Aktivität zu helfen.
-
Die „ICrmMonitor"-Schnittstelle bietet
eine Methode („GetClerks()"), um einen Schnittstellenzeiger
auf eine „ICrmMonitorClerks"-Schnittstelle auf
einem Clerk-Zusammenstellungsobjekt zu erhalten, welcher die CRM-Clerks 222 der
Architektur 200 eines kompensierenden Ressourcenmanagers
verfolgt. Die „ICrmMonitorClerks"-Schnittstelle ist
in der Programmauflistung 319 definiert, welche in 17 dargestellt
ist. Über
diese Schnittstelle kann ein Zeiger auf eine „ICrmMonitorLogRecords"-Schnittstelle erhalten
werden, welche auf dem CRM-Clerk 222 unterstützt wird.
Die „ICrmMonitorLogRecords"-Schnittstelle wird
verwendet, um die einzelnen Log-Aufzeichnungen zu überwachen,
welche von einem speziellen CRM-Clerk für eine gegebene Transaktion
unterhalten werden, z. B. für
die unten beschriebene Wiederherstellung durch Menschen. Die „ICrmMonitorLogRecords"-Schnittstelle ist
in der Programmauflistung 318 definiert, welche in 16 dargestellt
ist.
-
Jeder
ASP 90, welcher den CRM verwendet, weist sein eigenes zugehöriges persistentes
Log 226 auf, um Log-Aufzeichnungen zu speichern. Das persistente
Log 226 in der dargestellten CRM-Architektur 200 ist
eine Log-Datei des TXF-Formats, welche einen Dateinamen besitzt,
der auf der zu dem ASP 90 gehörigen AppId basiert. Wenn er
(in Reaktion auf die unten beschriebene „ForceLog()"-Methode) Log-Aufzeichnungen
schreibt, schreibt der CRM-Clerk 222 Log-Aufzeichnungen
in einer laufenden Reihenfolge in das persistente Log 226.
Der CRM-Wiederherstellungs-Clerk 224 initiiert
ebenfalls periodisch Fixpunkte in dem persistenten Log 226, um
Platz von Log-Aufzeichnungen zurückzugewinnen,
der nach beendeten Transaktionen freigesetzt wurde.
-
Das
CRM-Arbeitsprogramm 202 loggt (über den CRM-Clerk 222 und
den CRM-Wiederherstellungs-Clerk 224,
wie gerade beschrieben) ausreichende Informationen in das persistente
Log 226, typischerweise, allerdings nicht notwendigerweise,
auf einer Vorabeintragungs-Basis, wenn es für die Serveranwendungskomponente 86 seine
normale Aktion an der Ressource durchführt, so daß die CRM-Architektur 200 bewirken
kann, daß der
CRM-Kompensator 206 in
Reaktion auf die Zweiphasen-Abschluss-Protokollnotifikationen geeignete Aktionen unternimmt
(z. B. eine Abstimmaktion während
der Vorbereitung, eine Reinigungsaktion nach einem Abschluss oder
eine kompensierende Aktion nach einem Abbruch). Das CRM-Arbeitsprogramm 202 registriert
auch eine Klassenkennung („CLSID") des CRM-Kompensators 206 mit
dem CRM-Clerk 222. Später,
wenn die Transaktion vorbei ist (was in der MTS-Umgebung typischerweise in Reaktion
auf einen SetComplete- oder SetAbort-Aufruf von der (den) Serveranwendungskomponente(n) 86 in
der Transaktion der Fall ist, wie in den obigen einbezogenen MTS-Patentanmeldungen
beschrieben), erzeugt der CRM-Clerk 222 den CRM-Kompensator 206 und ruft
für jede
der Zweiphasen-Abschlussnotifikationen, welche es vom Transaktionsmanager 148 empfangt (2),
an seiner ICrmCompensator- (oder ICrmCompensatorVariants-)Schnittstelle
geeignete Methoden auf. Mit den Zweiphasen-Abschlussnotifikationen stellt der CRM-Clerk 222 individuell
für die Transaktion
die vom CRM-Arbeitsprogramm 202 geschriebenen Log-Aufzeichnungen
zu – in
Vorwärtsreihenfolge
für den
Abschluss und in Rückwärtsreihenfolge
für den
Abbruch, um innerhalb der Transaktion die Reihenfolge der Aktionen
zu bewahren. Der CRM-Kompensator 206 kann auch Informationen über seine
eigenen kompensierenden Aktionen in das persistente Log loggen,
welche während
der Wiederherstellung benötigt
werden können.
Das CRM-Arbeitsprogramm 202 und der CRM-Kompensator 206 teilen
daher einen Zustand nur durch das persistente Log 226.
-
Das
persistente Log 226 ist in der dargestellten Architektur 200 als
ein Log-Objekt 240, eine Wiederherstellungsmaschine 240 und
eine Log-Datei 244 realisiert. Bei dem Log-Objekt handelt
es sich um ein COM-Objekt, welches einen seriellen Strom von Log-Aufzeichnungen
verkapselt und dafür
verantwortlich ist, einen sequenziellen Strom von Log-Aufzeichnungen
stabil in die Log-Datei 244 zu schreiben. Das Log-Objekt 240 stellt
Methoden zum Schreiben und Lesen der Log-Aufzeichnungen aus der
Log-Datei 244 über
eine „ILog"-Schnittstelle 246 bereit,
welche vom CRM-Clerk 222, vom CRM-Wiederherstellungs-Clerk 224 und
von der Wiederherstellungsmaschine 242 angewendet werden.
-
Bei
der Log-Datei 244 handelt es sich um einen seriellen Datenstrom,
welcher in einem nichtflüchtigen
Speicher (z. B. auf dem Festplattenlaufwerk der 1)
gespeichert ist, z. B. um eine Datei oder Zusammenstellung von Dateien
eines Dateisystems, in welchem Log-Aufzeichnungen gespeichert werden. Bei
der dargestellten Log-Datei 244 handelt es sich um eine
Datei, welche das Microsoft-TXF-Dateiformat aufweist. Jede Log-Aufzeichnung
in der dargestellten Log-Datei 244 ist durch eine Log-Sequenznummer
(LSN) gekennzeichnet, bei welchen es sich im seriellen Strom um
monoton steigende 64-Bit-Ganzzahlen handelt. Für jeden ASP 90 wird auf
dem Computer 20 (1) eine
separate Log-Datei bewahrt. In der dargestellten Architektur 200 ist die
Log-Datei 244 durch einen Dateinamen gekennzeichnet, welcher
auf einer einzigartigen Kennung basiert, die zu dem entsprechenden
ASP 90 (z. B. zu der „AppId" im Betriebssystem
Microsoft Windows NT) gehört,
und befindet sich auf demselben Dateisystempfad wie ein Log des
Transaktionsmanagers 148. Dies erleichtert die Wiederherstellung
basierend auf dem Log.
-
Bei
der Wiederherstellungsmaschine 242 handelt es sich um ein
COM-Objekt, welches Dienste über
eine „ILogRecover"-Schnittstelle 248 und
eine „ILogRecoverClerkRegistration"-Schnittstelle bereitstellt, um die Log-Aufzeichnungen
aus der Log-Datei 244 nach einem Systemneustart gemäß einem Log-Wiederherstellungsprotokoll
zu verarbeiten, um eine Wiederherstellung nach Fehlern zu bewirken. Die
in der dargestellten Wiederherstellungsmaschine 242 realisierte
Wiederherstellungsverarbeitung basiert auf dem wohlbekannten Log-Wiederherstellungsprotokoll
ARIES, obwohl stattdessen auch ein anderes Log-Wiederherstellungsprotokoll oder eine Abweichung
davon verwendet werden kann. (Es wird verwiesen auf C. Mohan, D.
Haderle, B. Lindsay, H. Pirahesh und P. Schwarz, ARIES: A Transaction
Recovery Method Supporting Fine-Granularity Locking and Partial
Rollbacks Using Write Ahead Logging, in Readings in Database Systems,
Zweite Auflage (Hrsg. Michael Stonebraker 1994).) Der CRM-Wiederherstellungs-Clerk 224 und
der CRM-Clerk 222 registrieren sich bei der Wiederherstellungsmaschine 242,
so daß Log-Aufzeichnungen,
welche von diesen Einheiten geschrieben werden, von der Wiederherstellungsmaschine 242 während der
Wiederherstellung bereitgestellt werden können. Die Wiederherstellungsmaschine 242 nimmt
mit dem Transaktionsmanager 148 (2) auch
an der Transaktion teil, an welcher das CRM-Arbeitsprogramm 202 und der CRM-Clerk 222 teilnehmen.
Während
des normalen Betriebs in der Architektur 200 empfangt die
Wiederherstellungsmaschine 242 die Zweiphasen-Abschlussnotifikationen
vom Transaktionsmanager 148 und leitet die Notifikationen
zusammen mit Log-Aufzeichnungen, welche die Transaktion betreffen,
an den CRM-Clerk 222 weiter, welcher auf die Notifikationen
reagiert, indem er den CRM-Kompensator 206 erzeugt und
die richtigen kompensierenden Aktionen durch den CRM-Kompensator 206 initiiert.
Die Wiederherstellungsmaschine 242 nimmt mit dem Transaktionsmanager 148 an
Transaktionen teil und empfängt
Zweiphasen-Abschlussnotifikationen vom Transaktionsmanager unter
Verwendung der OLE-Transaktionsschnittstellen. Der CRM-Clerk 222 und
der CRM-Wiederherstellungs-Clerk 224 realisieren
eine Gruppe von Schnittstellen (umfassend die Schnittstellen „ILogRecoverClerk", „ILogRecoverClerkRecordsOnTerminate" und „ILogRecoverClerkPhaseNotificati on"), auf welchen die
Clerks die Zweiphasen-Abschlussnotifikationen von der Wiederherstellungsmaschine 242 empfangen.
-
Betriebssequenz
-
4 zeigt
eine Reihenfolge der Ausführung der
Komponenten innerhalb der dargestellten CRM-Architektur 200.
Anfänglich
erzeugt die Serveranwendungskomponente 86 das CRM-Arbeitsprogramm 202 unter
Verwendung einer herkömmlichen COM-Objekt-Instanzierungsmethodik,
wie in Schritt 251 angezeigt. In einem Fall, in dem die
Serveranwendungskomponente 86 eine Transaktion aufweist, assoziiert
die MTS-Ausführungsumgebung 82 automatisch
das CRM-Arbeitsprogramm 202 in dieser Transaktion, wie
in „Automatic
Transaction Processing Of Component-Based Server Applications", US-Patentanmeldung
08/959,141 (durch Bezugnahme oben hierin einbezogen) beschrieben.
-
In
einem nächsten
Schritt 252 erzeugt das CRM-Arbeitsprogramm 202 eine
Instanz des CRM-Clerks 222 und
erhält
einen Schnittstellenverweis auf die ICrmLogControl-Schnittstelle 230 des CRM-Clerks 222,
indem es die „CreateInstance()"-Methode (eine wohlbekannte
Anwendungsprogrammierungs-Schnittstellen(API)-Methode in der COM-Laufzeitdienste-Bibliothek,
welche für die
Objektinstanzierung verwendet wird) aufruft und die CLSID des CRM-Clerks
und die IID der ICrmLogControl-Schnittstelle spezifiziert. Hierdurch
wird auch automatisch die CRM-Clerk-Instanz
in der Transaktion assoziiert.
-
Nach
dem Erhalt des ICrmLogControl-Schnittstellenverweises ruft das CRM-Arbeitsprogramm 202 eine „RegisterCompensator()"-Methode der Schnittstelle
auf, um das CRM-Kompensator-Gegenstück 206 für das CRM-Arbeitsprogramm 202 bei dem
CRM-Clerk 222 zu registrieren, wie in Schritt 253 gezeigt.
Das CRM-Arbeitsprogramm 202 registriert den CRM-Kompensator 206 durch
eine Kennung seiner Klasse (z. B. eine Programmkennung (PROGID)
oder eine Klassenkennung (CLSID)), welche unter COM für den CRM-Clerk 222 eine
ausreichende Identifikation darstellt, um später den CRM-Kompensator 206 zu
erzeugen.
-
Außerdem registriert
der CRM-Clerk 222 sich selbst bei dem CRM-Wiederherstellungs-Clerk 224 und
der Wiederherstellungsmaschine 242 unter Verwendung einer
global einzigartigen Kennung (GUID), welche zu der speziellen Instanz
der CRM-Clerk-Klasse gehört.
Der CRM-Wiederherstellungs-Clerk 224 loggt
alle aktiven CRM-Clerks in dem Log 226 ein, um später bei der
Wiederherstellung die Neuerzeugung des CRM-Clerks zu ermöglichen. Wenn
der CRM-Clerk bei
der Wiederherstellungsmaschine 242 registriert ist, nimmt
die Wiederherstellungsmaschine 242 mit dem Transaktionsmanager 148 an
der Transaktion der Serveranwendungskomponente teil. Dies ermöglicht der
Wiederherstellungsmaschine 242, Zweiphasen-Abschlussnotifikationen zu
empfangen, welche bei der Transaktion vom Transaktionsmanager ausgegeben
werden, und die Notifikationen an den CRM-Clerk 222 weiterzuleiten.
-
In
einem nächsten
Schritt 254 fordert die Serveranwendungskomponente 86 an,
daß das CRM-Arbeitsprogramm 202 als
Teil seiner Transaktion einen Arbeitsvorgang an der Ressource durchführt. Wenn
das CRM-Arbeitsprogramm 202 den angeforderte Arbeitsvorgang
(also seine normale Aktion) durchführt, loggt das CRM-Arbeitsprogramm
zuerst in Schritt 255 unter Verwendung des CRM-Clerks 222 ausreichende
Informationen in das persistente Log 226, damit der CRM-Kompensator 206 die
geeigneten Reinigungs- und Kompensierungsaktionen vornehmen kann.
Wie unten erläutert, schreibt
das CRM-Arbeitsprogramm 202 eine Sequenz von Log-Aufzeichnungen in
den CRM-Clerk 222 (unter Anwendung der „WriteLogRecord()"- oder „WriteLogRecordVariants()"-Methode) und bewirkt dann
(unter Anwendung der „ForceLog()"-Methode), daß die Aufzeichnungen auf der
Vorabeintragungsbasis in das persistente Log herausgeschrieben werden,
bevor der angeforderte Arbeitsvorgang durchgeführt wird.
-
Später gibt
der Transaktionsmanager 148 in Schritt 256 Zweiphasen-Abschlussprotokollnotifikationen
an die Teilnehmer der Transaktion (also die an der Transaktion teilnehmenden
Komponenten) aus, z. B. an die Wiederherstellungsmaschine 242,
welche die Notifikationen zusammen mit den zuvor vom CRM-Arbeitsprogramm 202 geschriebenen
Log-Aufzeichnungen
an den CRM-Clerk 222 weiterleitet. Typischerweise werden
diese Notifikationen gesendet, nachdem die Serveranwendungskomponente 86, welche
die Transaktion initiiert hat, SetComplete aufgerufen hat, um anzuzeigen,
daß alle
Arbeitsvorgänge
der Transaktion abgeschlossen sind, oder eine Komponente in der
Transaktion SetAbort aufruft, wodurch angezeigt wird, daß der Arbeitsvorgang
nicht erfolgreich abgeschlossen werden kann. Set-Complete und SetAbort sind Schnittstellenmethoden
des vom System bereitgestellten Kontextobjekts 136 (2)
und sind detaillierter in den obigen einbezogenen MTS-Patentanmeldungen
beschrieben. Der Transaktionsmanager 148 gibt die Zweiphasen-Abschlussprotokollnotifikationen
auf der ITransactionResourceAsync-Schnittstelle 238 (welche
ein Teil der OLE-Transaktionsschnittstellen
ist) an die Wiederherstellungsmaschine 242 aus.
-
In
Reaktion auf jede Zweiphasen-Abschlussprotokollnotifikation erzeugt
der CRM-Clerk 222 in Schritt 257 den CRM-Kompensator 206,
der zuvor von dem CRM-Arbeitsprogramm 202 bei dem CRM-Clerk 222 registriert
wurde. In Schritt 258 ruft der CRM-Clerk 222 dann
eine geeignete Methode der ICrmCompensator-Schnittstelle 212 auf,
um die Notifikation und die zugehörigen Log-Aufzeichnungen zum
CRM-Kompensator 206 weiterzuleiten. Mit seinem Aufruf an
den CRM-Kompensator 206 leitet der CRM-Clerk 222 einen
Schnittstellenzeiger für
die ICrmLogControl-Schnittstelle 230 weiter, um dem CRM-Kompensator
zu ermöglichen,
Log-Aufzeichnungen
seiner kompensierenden Aktionen zu schreiben.
-
In
Schritt 259 führt
der CRM-Kompensator 206 die für die Zweiphasen-Abschlussnotifikation richtige
Abstimmungs-, Reinigungs- oder Kompensierungsaktion durch, basierend
auf den vom CRM-Arbeitsprogramm 202 geloggten Informationen.
Wenn angebracht, kann der CRM-Kompensator 206 auch
Informationen über
seine Reinigungs- oder Kompensierungsaktionen für die Verwendung während der
Wiederherstellung loggen.
-
Logging
-
5 zeigt
ein Verfahren 280, durch welches das CRM-Arbeitsprogramm 202 Informationen dafür loggt,
seine normale Aktion an der Ressource zu kompensieren. In der dargestellten
Architektur 200 (3) werden
Informationen in einer Hinterher-Speicherform in das Log geschrieben.
Das CRM-Arbeitsprogramm 202 verwendet die ICrmLogControl-Schnittstelle 230 des
CRM-Clerks, um Log-Aufzeichnungen in Warteschlange zu stellen, welche
eine von dem CRM-Arbeitsprogramm 202 vorgenommene Aktion
repräsentieren,
welche dann zusammen zur permanenten Speicherung in der Log-Datei 244 gebracht
werden. Das CRM-Arbeitsprogramm 202 führt das Logging vorzugsweise auf
einer Vorabeintragungsbasis durch, bevor es irgendwelche Aktionen
an der Ressource durchführt, welche
später
eine Kompensation erforderlich machen können.
-
Als
Anfangsschritt 281 des Logging-Verfahrens 280 bildet
das CRM-Arbeitsprogramm 202 eine Log-Aufzeichnung als Zusammenstellung
von Datenelementen. In der dargestellten Architektur 200 kann die
Log-Aufzeichnung strukturiert oder unstrukturiert sein. Eine strukturierte
Log-Aufzeichnung
ist eine Zusammenstellung von Datenelementen des Variant-Typs, wie
z. B. ein Visual-Basic-Zusammenstellungsobjekt. Unstrukturierte
Log-Aufzeichnungen sind einfach ein Puffer aus Bytes. Typischerweise schreibt
ein CRM-Arbeitsprogramm, welches in der Program miersprache Microsoft
Visual Basic geschrieben ist, strukturierte Log-Aufzeichnungen, während eines,
das in den Programmiersprachen Microsoft Visual C++ oder J++ geschrieben
ist, unstrukturierte Log-Aufzeichnungen schreibt. Das CRM-Arbeitsprogramm 202 in
der dargestellten Architektur eines kompensierenden Ressourcenmanagers 200 darf
nicht strukturierte und unstrukturierte Log-Aufzeichnungen vermischen
und muß Log-Aufzeichnungen
nur eines dieser Typen schreiben.
-
Wenn
die Log-Aufzeichnung gebildet ist, ruft das CRM-Arbeitsprogramm 202 in
Schritt 282 eine „WriteLogRecord()"-Methode (oder „WriteLogRecordVariants()"-Methode für strukturierte
Log-Aufzeichnungen) auf der ICrmLogControl-Schnittstelle 230 des
CRM-Clerks 222 auf, um die Log-Aufzeichnung in eine Warteschlange
zu kopieren. Wie in Schritt 283 angezeigt, kann das CRM-Arbeitsprogramm
die Schritte 281 bis 282 mehrere Male wiederholen,
um mehrere Log-Aufzeichnungen in Warteschlange zu stellen.
-
Nachdem
das CRM-Arbeitsprogramm 202 für die Aktion, welche das CRM-Arbeitsprogramm 202 an
der Ressource vornehmen möchte,
alle Log-Aufzeichnungen in Warteschlange gestellt hat, ruft das
CRM-Arbeitsprogramm 202 in Schritt 284 auf der
ICrmLogControl-Schnittstelle 230 des CRM-Clerks 222 die „ForceLog()"-Methode auf, um zu
bewirken, daß die
in der Warteschlange stehenden Log-Aufzeichnungen in das persistente
Log 226 ausgeschrieben werden. Die separaten „WriteLogRecord()"- und „ForceLog()"-Methoden ermöglichen dem
CRM-Arbeitsprogramm 202 somit, mehrere Log-Aufzeichnungen
in Warteschlange zu stellen und zusammen in das persistente Log 226 schreiben
zu lassen, was die Logging-Effizienz verbessert.
-
Bei
der Realisierung der „WriteLogRecord()"-, „WriteLogRecordVariants()"- und „Force-Log()"-Methode im CRM-Clerk 222 wird
die ILog-Schnittstelle 246 des Log-Objekts verwendet, um
geschriebene Log-Aufzeichnungen in Cache-Form zu speichern und dann
in die Log-Datei 244 zu bringen.
-
Fixpunkte
-
Bezug
nehmend wiederum auf 3, verwendet das persistente
Log 226 Fixpunkte, um in der Log-Datei 244 Raum
von Log-Aufzeichnungen aus abgeschlossenen Transaktionen zurückzugewinnen.
-
Der
CRM-Wiederherstellungs-Clerk 224 gibt periodisch anfängliche
Fixpunktanforderungen an die Wiederherstellungsmaschine 242 aus,
indem er auf der ILogRecover-Schnittstelle 248 die „TakeCheckpoint()"-Methode aufruft.
Der CRM-Wiederherstellungs-Clerk 224 weist einen Hintergrund-Teilprozess auf,
welcher auf Ereignisse oder einen Zeitablauf wartet. Bei Zeitablauf überprüft der CRM-Wiederherstellungs-Clerk 224,
ob seit dem letzten Fixpunkt irgendwelche Log-Aufzeichnungen geschrieben
worden sind. Wenn nicht, wird keine Fixpunktanforderung initiiert.
Diese periodischen Fixpunktanforderungen ermöglichen der Wiederherstellungsmaschine, die
Log-Datei 244 automatisch neu zu dimensionieren oder zu
vergrößern, wenn
sie für
die Transaktionsgeschwindigkeit und das Volumen der Log-Aufzeichnungen
nicht ausreicht.
-
Der
CRM-Wiederherstellungs-Clerk 224 überprüft auch, ob es aktuell irgendwelche CRM-Clerks 222 gibt,
bevor er eine Fixpunktanforderung initiiert. Wenn es keine gibt,
wird keine Fixpunktanforderung initiiert. Wenn es aktuell CRM-Clerks gibt,
loggt der CRM-Wiederherstellungs-Clerk 224 die
Clerk-Instanzkennungen der CRM-Clerks, so daß die CRM-Clerks während der Wiederherstellungsverarbeitung
richtig erzeugt werden können.
Der CRM-Wiederherstellungs-Clerk 224 loggt
eine einzige Log-Aufzeichnung, die „Clerk-Listen-Aufzeichnung", welche die Clerk-Instanzkennungen
aller aktuellen CRM-Clerks enthält.
-
Der
CRM-Wiederherstellungs-Clerk 224 leitet ferner die Trunkierung
des Log. Während
der Fixpunktverarbeitung durch die Wiederherstellungsmaschine 242 lässt die
Wiederherstellungsmaschine 242 (unter Anwendung der „ILogRecoverClerk::WriteCheckpoint()"-Methode) den CRM-Wiederherstellungs-Clerk 224 und
jeden CRM-Clerk 222 Fixpunkt-Log-Aufzeichnungen schreiben
und die minimale für
ihre Log-Aufzeichnungen verwendete LSN zurücksenden. Der CRM-Wiederherstellungs-Clerk 224 schreibt
vor der Ausgabe der Fixpunktanforderung an die Wiederherstellungsmaschine
die Clerk-Listen-Log-Aufzeichnung, sendet dann die LSN der Clerk-Listen-Log-Aufzeichnung
als seine minimale LSN aus der Fixpunkt-Schreibanforderung der Wiederherstellungsmaschine
zurück.
Hierdurch wird garantiert, daß die
Clerk-Listen-Aufzeichnung vor
jeglichen Fixpunktaufzeichnungen der CRM-Clerks 222 in
der Log-Datei 244 geschieht, und daß die letzten beiden Fixpunkte
in der Log-Datei 244 behalten werden.
-
In
Reaktion auf die Fixpunkt-Schreibanforderungen der Wiederherstellungsmaschine
an die CRM-Clerks kopiert jeder CRM-Clerk 222 seine Log-Aufzeichnungen
auf Basis eines jeden anderen Fixpunkts weiter. Insbesondere, wenn
der CRM-Clerk 222 das erste Mal mit einer Fixpunkt-Schreibanforderung
aufgerufen wird und eine laufende Transaktion aufweist, sendet der CRM-Clerk 222 seine
minimale in Gebrauch befindliche LSN zurück. Das nächste Mal kopiert der CRM-Clerk 222 alle
seine Log-Aufzeichnungen weiter und sendet seine neue minimale LSN
zurück. Beim
Weiterkopieren liest der CRM-Clerk 222 alle Log-Aufzeichnungen, welche
er in die Log-Datei 244 geschrieben hat, und schreibt die
Log-Aufzeichnungen neu in die Log-Datei 244. Dieser Ansatz
bedeutet, daß nur
die letzten beiden Fixpunkte in der Log-Datei 244 behalten
werden, während
die Frequenz, mit welcher der CRM-Clerk 222 seine Log-Aufzeichnungen
weiterkopieren muß,
verringert wird. Das persistente Log 226 kann dann so gepackt werden,
daß freigesetzter
Raum aus abgeschlossenen Transaktionen neu verwendet wird. Vorzugsweise
ist das Zeitablaufintervall der anfänglichen Fixpunktanforderungen
des CRM-Wiederherstellungs-Clerks 224 so eingestellt, daß die meisten
der Transaktionen innerhalb von zwei Fixpunkten abgeschlossen werden
und ein Weiterkopieren für
den CRM-Clerk 222 normalerweise
nicht erforderlich ist.
-
Der
CRM-Clerk 222 beginnt das Schreiben eines Fixpunkts mit
einer Fixpunktstartaufzeichnung und endet mit einer Fixpunktendaufzeichnung.
Dies ermöglicht,
daß die
Grenzen des Fixpunkts während der
Wiederherstellung genau identifiziert werden, und daß bestimmt
wird, ob der Fixpunkt erfolgreich abgeschlossen wurde oder durch
einen Fehler unterbrochen wurde. Der CRM-Clerk 222 fügt ferner
jeder Log-Aufzeichnung, die er schreibt, eine Sequenznummer hinzu,
und fügt
Log-Aufzeichnungen, die in einen Fixpunkt weiterkopiert werden,
Kopiermerker hinzu. Wenn Vergessensaufzeichnungen (welche eine vorige
Log-Aufzeichnung identifizieren, die vergessen werden soll) weiterkopiert
werden, aktualisiert der CRM-Clerk 222 die Vergessensaufzeichnung,
um die vergessene Log-Aufzeichnung anhand ihrer neuen (weiterkopierten)
LSN richtig zu identifizieren.
-
Während der
Fixpunktverarbeitung blockiert der CRM-Clerk 222 neue Log-Aufzeichnungs-Schreibvorgänge vom
CRM-Arbeitsprogramm 202 oder CRM-Kompensator 206,
um die Reihenfolge der über
den CRM-Clerk geschriebenen Log-Aufzeichnungen aufrecht zu erhalten.
Auch Zweiphasen-Abschlussnotifikationen werden blockiert, während ein
Fixpunkt in Bearbeitung ist. Fixpunktanforderungen werden während normaler
Schreibvorgänge
in das persistente Log 226 und während der Verarbeitung von
Transaktionsabschlussnotifikationen in ähnlicher Weise blockiert.
-
Kompensierung
-
In
der dargestellten CRM-Architektur 200 der 3 stellt
der Transaktionsmanager 148 ( 2) für den kompensierenden
Ressourcenmanager die Zweiphasen-Abschlussnotifikationen über die ITransactionResourceAsync-Schnittstelle 238 der Wiederherstellungsmaschine 242 (welche
während der
Registrierung des CRM-Clerks 222 bei der Wiederherstellungsmaschine
an der Transaktion teilnahm) bereit. Für jede Notifikation liest die
Wiederherstellungsmaschine 242 alle Log-Aufzeichnungen aus,
welche in Verbindung mit der Clerk-Instanzkennung des CRM-Clerks 222 in
das Log geschrieben worden sind (was die Log-Aufzeichnungen umfaßt, die
vom CRM-Arbeitsprogramm 202 für seine
normale Aktion geschrieben worden sind). Die Wiederherstellungsmaschine 242 leitet
dann unter Verwendung der (unten beschriebenen) ILogRecoverClerkPhaseNotification-Schnittstelle
des CRM-Clerks die Notifikation und die Log-Aufzeichnungen an den CRM-Clerk 222 weiter.
-
Der
CRM-Clerk 222 reagiert auf die Aufrufe der Wiederherstellungsmaschine,
indem er unter Verwendung der mit dem CRM-Ressourcendispenser 220 registrierten
CLSID den CRM-Kompensator 206 erzeugt.
Der CRM-Clerk 222 ruft dann eine Methode der ICrmCompensator-Schnittstelle 212 (im Fall
unstrukturierter Log-Aufzeichnungen) oder der ICrmCompensatorVariants-Schnittstelle 212 (im
Fall strukturierter Log-Aufzeichnungen) auf dem CRM-Kompensator 206 auf,
welche für
die entsprechende Zweiphasen-Abschlussnotifikation die richtige
ist (z. B. BeginPrepare(), PrepareRecord() und EndPrepare() für die Vorbereitungsphasennotifikation).
Der CRM-Clerk 222 leitet außerdem in einem Aufruf der „SetLogControl"-Methode auf der ICrmCompensator-Schnittstelle
(oder der ICrmCompensatorVariants-Schnittstelle) 212 des CRM-Kompensators 206 einen
Zeiger auf seine ICrmLogControl-Schnittstelle
weiter, welchen der CRM-Kompensator verwendet, um seine kompensierende
Aktion zu loggen.
-
Die
Realisierung der Zweiphasen-Abschlussnotifikations-Methoden im CRM-Kompensator 206 führt zur
Durchführung
der richtigen Aktionen speziell für die Ressource für die durch
das CRM-Arbeitsprogramm geloggte Aktion. (Wie oben angemerkt, sorgt
für die
Realisierung des CRM-Kompensators der Entwickler, z. B. ein Systemintegrator
oder anderer Programmierer des kompensierenden Ressourcenmanagers
für eine
bestimmte Ressource.) In den Vorbereitungsnotifikationsmethoden
(also „BeginPrepare()", „PrepareRecord()" und „EndPrepare()") ermittelt der CRM-Kompensator 206,
ob der in der Transaktion an der Ressource durchgeführte Arbeits vorgang
richtig vorbereitet ist, um abgeschlossen zu werden. In dem Fall
der meisten Realisierungen des CRM-Kompensators ist der Arbeitsvorgang des
CRM-Arbeitsprogramms 202 in der Transaktion bereits zu
der Zeit auf der Ressource persistent gemacht worden, zu der er
vom CRM-Arbeitsprogramm durchgeführt
wurde. Der CRM-Kompensator kann deswegen so realisiert werden, daß er einfach
den „bOkToPrepare"-Parameter der „EndPrepare()"-Methode auf „VARIANT-TRUE" stellt und zurückmeldet. In
anderen Verwirklichungen kann der CRM-Kompensator 206 Überprüfungen durchführen, um
zu ermitteln, ob der Arbeitsvorgang persistent gemacht oder kompensiert
werden sollte, und den „bOkToPrepare"-Parameter dementsprechend
einstellen. Zum Beispiel kann durch die Überprüfung ermittelt werden, ob der
vom CRM-Arbeitsprogramm durchgeführte
Arbeitsvorgang richtig oder widerspruchsfrei ist.
-
Für die Abschlussnotifikationen
(z. B. die „BeginCommit()"-, „CommitRecord()" und „End-Commit()"-Methode) kann der
CRM-Kompensator 206 irgendwelche Reinigungsaktionen durchführen, um den
Arbeitsvorgang des CRM-Arbeitsprogramms an der Ressource abzuschließen. Wo
es sich bei der Ressource zum Beispiel um ein Dateisystem handelt und
der kompensierende Ressourcenmanager innerhalb einer Transaktion
die Fähigkeit
bereitstellt, Dateien zu löschen,
kann es die normale Aktion des CRM-Arbeitsprogramms sein, die zu
löschende
Datei umzubenennen oder zu verstecken, so daß die Datei nach einem Abbruch
der Transaktion wiederhergestellt werden kann. Der CRM-Kompensator
führt in diesem
Beispiel eine Reinigungsaktion durch, durch welche die umbenannte
oder gelöschte
Datei nach einem Abschluss der Transaktion tatsächlich gelöscht wird. Der CRM-Kompensator
empfangt die Log-Aufzeichnungen
der Aktion des CRM-Arbeitsprogramms (über die „CommitRecord()"-Methode), z. B. den Namen der umbenannten
oder versteckten Datei zu lesen. DerCRM-Kompensator verwendet auch die ICrmLogControl-Schnittstelle
des CRM-Clerks 222, um die Reinigungsaktionen für Wiederherstellungszwecke
zu loggen. Der CRM-Kompensator schreibt die Log-Informationen, nachdem
er die Reinigungsaktion durchgeführt
hat, um sicherzustellen, daß die
Reinigungsaktion vorgenommen worden ist. In dem obigen Beispiel
des kompensierenden Ressourcenmanagers für die Dateilöschung loggt
der CRM-Kompensator 206 zum Beispiel ein, daß die umbenannte
oder versteckte Datei gelöscht
worden ist, nachdem die Datei gelöscht worden ist. Wenn dann
während
der Abschlussphase der Transaktion ein Fehler auftritt, kann die
Reinigungsaktion während
der darauf folgenden Wiederherstellung ausgelassen werden. Die in
der „EndCommit()"-Methode realisierte
Reinigungsaktion sollte idempotent sein, so daß sie mehrfach versucht werden
kann, mit denselben Ergebnissen, als wenn sie beim ersten Versuch
erfolgreich wäre,
wie z. B. in einem Fall, in dem ein Fehler auftritt, nachdem der CRM- Kompensator die Reinigungsaktion
durchführt, aber
bevor eingeloggt wird, daß die
Reinigungsaktion durchgeführt
wurde, oder wenn Fehler während
der Wiederherstellung auftreten.
-
In
den Abbruchnotifikationsmethoden führt der CRM-Kompensator 206 eine
idempotente kompensierende Aktion durch, um den Arbeitsvorgang des
CRM-Arbeitsprogramms 202 umzukehren, welcher typischerweise
bereits auf der Ressource persistent gemacht ist. Der CRM-Kompensator empfängt die
vom CRM-Arbeitsprogramm geloggten Informationen mit der „AbortRecord()"-Methode. Der CRM-Kompensator
loggt auch die kompensierende Aktion mit dem CRM-Clerk 222 auf
einer Danacheintragungsbasis. In dem obigen Beispiel des kompensierenden
Ressourcenmanagers für
die Dateilöschung
kann der CRM-Kompensator zum Beispiel realisiert werden, um die
umbenannte oder versteckte Datei in der „EndAbort()"-Methode wiederherzustellen.
-
Nachdem
der CRM-Kompensator erfolgreich die Verarbeitung seiner kompensierenden
Aktionen für
die Abschluss- oder Abbruchnotifikation abschließt, schreibt der CRM-Clerk 222 eine
Clerk-Beendigungs-Log-Aufzeichnung in das persistente Log 226,
um anzuzeigen, daß die
Verarbeitung durchgeführt
ist und der CRM-Clerk 222 freigegeben werden kann. Der
CRM-Clerk 222 benachrichtigt
auch den CRM-Wiederherstellungs-Clerk 224, so daß er von der
Liste der aktuell registrierten CRM-Clerks entfernt werden kann.
-
Wiederherstellung
-
In
der dargestellten CRM-Architektur 200, die in 3 dargestellt
ist, führt
die vom System bereitgestellte Infrastruktur (z. B. der CRM-Wiederherstellungs-Clerk 224 und
die Wiederherstellungsmaschine 242) auch eine Wiederherstellung
durch, nachdem ein Fehler auftritt, welcher die normale Verarbeitung
unterbricht. Die Wiederherstellung wird nach dem Anlaufen des ASP 90 (2)
initiiert. Während
der Anlaufverarbeitung des ASP 90 wird die CRM-Architektur 200 in
den ASP geladen, und der CRM-Wiederherstellungs-Clerk 224 wird
erzeugt. Beim Anlaufen sucht der CRM-Wiederherstellungs-Clerk 224 nach
der Log-Datei 244, welche zu dem ASP gehört. Wie
oben beschrieben, weist die Log-Datei 244 einen Dateinamen
basierend auf einer Kennung (der AppId) des ASP auf und befindet
sich auf demselben Dateisystempfad wie eine Log-Datei des Transaktionsmanagers 148 (2).
Wenn die Log-Datei 244 für den ASP existiert, initiiert
der CRM-Wiederherstellungs-Clerk auf der Log-Datei 244 die
Wiederher stellung (z. B. durch Erzeugen der Wiederherstellungsmaschine 242 und
Aufrufen der „ILogRecover::Recover()"-Methode der Wiederherstellungsmaschine).
-
Die
Wiederherstellungsmaschine 242 realisiert die Wiederherstellungsverarbeitung
gemäß dem ARIES-Wiederherstellungsprotokoll
und führt
jeden Clerk, welcher bei der Wiederherstellungsmaschine registriert
wurde (z. B. den CRM-Wiederherstellungs-Clerk 224 und jeden
CRM-Clerk 222), durch Analyse-, Wiederholungs- und Rückgängigmachphasen
der Wiederherstellungsverarbeitung (wobei sie die ILogRecoverClerk-Schnittstelle
verwendet, welche auf dem CRM-Wiederherstellungs-Clerk 224 und jedem
CRM-Clerk 222 realisiert ist). Während der normalen Verarbeitung
loggt der CRM-Wiederherstellungs-Clerk 224 Clerk-Listen-Log-Aufzeichnungen
(vor den Fixpunkten) und Neu-Clerk-Log-Aufzeichnungen (wenn zwischen
Fixpunkten ein neuer Clerk erzeugt wird). Aufgrund der Weise, wie
der CRM-Wiederherstellungs-Clerk diese Aufzeichnungen loggt, gehen
die Clerk-Listen- und Neu-Clerk-Aufzeichnungen, welche den CRM-Clerk 222 identifizieren,
allen Aufzeichnungen voran, die durch einen solchen CRM-Clerk in
der Log-Datei 244 geloggt wurden (haben also niedrigere
LSNs als diese). Während
der Wiederherstellung bewirkt die Wiederherstellungsmaschine deswegen,
daß der CRM-Wiederherstellungs-Clerk 224 die
Wiederherstellungsverarbeitung der Aufzeichnungen, die den CRM-Clerk 222 identifizieren,
durchführt,
bevor bewirkt wird, daß der
CRM-Clerk 222 die Wiederherstellungsverarbeitung der Log-Aufzeichnungen
durchführt,
welche der CRM-Clerk geschrieben hat. Wenn er in der Analysephase
der Wiederherstellung die Clerk-Listen- und Neu-Clerk-Aufzeichnungen verarbeitet, erzeugt
der CRM-Wiederherstellungs-Clerk 224 einen neuen CRM-Clerk
für jede
in den Aufzeichnungen identifizierte Clerk-Instanzkennung und weist ihm
die entsprechende Clerk-Instanzkennung zu. Der erzeugte CRM-Clerk
identifiziert sich selbst der Wiederherstellungsmaschine 242 mit
der zugewiesenen Clerk-Instanzkennung und ist dann dafür verfügbar, die
mit dieser Clerk-Instanzkennung geloggten Log-Aufzeichnungen von
der Wiederherstellungsmaschine zu empfangen. Der CRM-Clerk 222 ist
dann dafür
verantwortlich, die Log-Aufzeichnungen richtig zu interpretieren,
den registrierten CRM-Kompensator 206 zu erzeugen und auf
dem CRM-Kompensator gemäß dem Ergebnis
der Transaktion die richtigen Methoden aufzurufen.
-
In
der Analysephase leitet die Wiederherstellungsmaschine 242 alle
Log-Aufzeichnungen, welche zu der Clerk-Instanzkennung des CRM-Clerks 222 gehören, (über die „ILogRecoverClerk::AnalyzeRecord()"-Methode) an den
CRM-Clerk weiter. Der CRM-Clerk analysiert die Log-Aufzeichnungen,
um die richtige Wiederherstellungsverarbeitung durchzuführen. Zuerst sucht
der CRM-Clerk nach einer Clerk-Beendigungs-Aufzeichnung. Der CRM-Clerk loggt
eine Clerk-Beendigungs-Aufzeichnung während der normalen Verarbeitung
nur nach der kompensierenden Aktion des CRM-Kompensators auf eine
Abschluss- oder Abbruchnotifikation ein. Wenn eine Clerk-Beendigungs-Aufzeichnung
erkannt wird, schließt
der CRM-Clerk 222 daraus, daß die Transaktion erfolgreich
abgeschlossen wurde (einschließlich
der kompensierenden Aktionen des CRM-Kompensators 206)
und für
diese Instanz des CRM-Clerks keine Wiederherstellung notwendig ist.
-
Wenn
keine Clerk-Beendigungs-Aufzeichnung erkannt wird, geht der CRM-Clerk 222 dazu über, eine
richtige Sequenz der ursprünglich
vom CRM-Clerk geschriebenen Log-Aufzeichnungen
zu identifizieren. Der CRM-Clerk 222 kann vor dem Fehler
durch mehrere Fixpunkte hindurch überlebt haben, was zu doppelten
Kopien einiger Log-Aufzeichnungen mit alten LSNs führt. Der
CRM-Clerk 222 ordnet die Log-Aufzeichnungen, die er von
der Wiederherstellungsmaschine 242 empfängt, nach ihrer LSN. Der CRM-Clerk 222 verarbeitet
die Log-Aufzeichnungen,
um sicherzustellen, daß unter
einer gegebenen Sequenznummer nur eine Aufzeichnung existiert. Alle
Duplikate werden verworfen. Außerdem
verarbeitet der CRM-Clerk 222 die Liste für Vergessens-Log-Aufzeichnungen
und markiert die Log-Aufzeichnungen, die vergessen werden sollen.
Die resultierende Liste ist die richtige Log-Aufzeichnungssequenz
für den
CRM-Clerk 222.
-
Während dieser
Analysephase sucht der CRM-Clerk 222 auch nach einer Clerk-Startaufzeichnung,
in welcher der CRM-Clerk die Klassenkennung des CRM-Kompensators
geloggt hat, welche vom CRM-Arbeitsprogramm 202 registriert
wurde. Am Ende seiner Analysephase sendet der CRM-Clerk 222 die
niedrigste LSN in der identifizierten Log-Aufzeichnungssequenz an die Wiederherstellungsmaschine 242 zurück.
-
Nach
der Analysephase führt
die Wiederherstellungsmaschine 242 ferner den CRM-Wiederherstellungs-Clerk 224 und
jeden CRM-Clerk 222 durch Wiederholungs- und Rückgängigmachphasen
(über die „BeginRedoPass()"-, „RedoRecord()"-, „BeginUndoPass()"- und „UndoRecord()"-Methode der ILogRecoverClerk-Schnittstelle)
und stellt dem CRM-Clerk Notifikationen über den Status der Transaktion
des CRM-Clerks zu (über
die IRecoverClerkPhaseNotification-Schnittstelle). Der CRM-Wiederherstellungs-Clerk 224 und
der CRM-Clerk 222 ignorieren die Wiederholungs- und Rückgängigmachphasen
der Wiederherstellung. Die Wiederherstellungsmaschine 242 ermittelt
den Transaktionsstatus aus Log-Aufzeichnungen, welche sie während der
normalen Verarbeitung geloggt hat, oder durch erneute Teilnahme
an der Transaktion mit dem Transaktionsmanager 148 (2).
-
Wenn
die Wiederherstellungsmaschine 242 eine für die Transaktion
geloggte Vorbereitungsaufzeichnung findet, stellt die Wiederherstellungsmaschine
dem CRM-Clerk 222 eine Vorbereitungsnotifikation zu, welcher
die Transaktion während
der Wiederherstellung aufweist (über
die „OnPrepare()"-Methode der IRecoverClerkPhaseNotification-Schnittstelle).
Da jedoch die Vorbereitung für
den CRM-Kompensator während
der Wiederherstellung nicht bedeutsam ist, leitet der CRM-Clerk 222 die Vorbereitungsnotifikation
nicht an den CRM-Kompensator weiter.
-
Nach
der Ermittlung, daß die
Transaktion abgeschlossen oder abgebrochen wurde, stellt die Wiederherstellungsmaschine 242 dem
CRM-Clerk 222 die richtige Notifikation zu, welcher die
Transaktion während
der Wiederherstellung aufweist (über
die „OnCommit()"-Methode oder „OnAbort()"-Methode der IRecoverClerkPhaseNotification-Schnittstelle). Wie
während
der normalen Verarbeitung reagiert der CRM-Clerk 222 auf
diese Notifikationen, indem er den CRM-Kompensator erzeugt und dem
CRM-Kompensator die Abschluss- oder Abbruchnotifikation zusammen
mit den Log-Aufzeichnungen zustellt, die vom CRM-Arbeitsprogramm
geschrieben wurden (über
die „BeginCommit()"-, „CommitRecord()"-, „EndCommit()"-, „Begin-Abort()"-, „AbortRecord()"- und „EndAbort()"-Methode der ICrmCompensator-Schnittstelle 212).
Dies bewirkt, daß der CRM-Kompensator
basierend auf den Log-Aufzeichnungen die richtige Reinigungsaktion
(für einen
Abschluss) oder kompensierende Aktion (für einen Abbruch) durchführt. Nachdem
der CRM-Kompensator diese Verarbeitung erfolgreich beendet, schreibt
der CRM-Clerk 222 eine Clerk-Beendigungs-Aufzeichnung,
um anzuzeigen, daß diese
Verarbeitung vorgenommen wurde, und der CRM-Clerk kann freigegeben
werden. Der CRM-Clerk 222 benachrichtigt
auch den CRM-Wiederherstellungs-Clerk 224, damit er von
der Liste der registrierten CRM-Clerks entfernt werden kann.
-
Wenn
die Wiederherstellungsmaschine 242 nach der erneuten Teilnahme
an der Transaktion mit dem Transaktionsmanager 148 (2)
ermittelt, daß über die
Transaktion Zweifel bestehen, benachrichtigt die Wiederherstellungsmaschine
den CRM-Clerk 222, welcher die Transaktion aufweist, darüber (über die „OnInDoubt()"-Methode der ILogRecoverClerk-Schnittstelle).
In diesem Fall ist der CRM-Clerk dafür verantwortlich, seine Log-Aufzeichnungen durch
alle folgenden Fixpunkte hindurch in der Log-Datei 244 zu
bewahren.
-
Am
Ende der Wiederherstellung benachrichtigt die Wiederherstellungsmaschine 242 den CRM-Wiederherstellungs-Clerk 224 und
den CRM-Clerk 222, daß die
Wiederherstellung beendet ist (über
die „EndRecovery()"-Methode der ILogRecoverClerk-Schnittstelle).
Wenn seine Transaktion während
der Wiederherstellung beendet wurde, wird der CRM-Clerk 222 freigegeben.
Der CRM-Wiederherstellungs-Clerk 224 verbleibt nach der
Wiederherstellung, um die Liste der registrierten CRM-Clerks zu unterhalten
und Fixpunktanforderungen zu initiieren.
-
Kompensierung durch Menschen
-
In
einigen mit der CRM-Architektur 200 (3)
realisierten kompensierenden Ressourcenmanagern kann der CRM-Kompensator 206 als
Teil seiner Reinigungsaktionen und/oder kompensierenden Aktionen
eine Kompensierung durch Menschen verwenden.
-
Als
Teil des Zweiphasen-Abschlussprotokolls ist es wesentlich, daß der kompensierende
Ressourcenmanager die richtigen Aktionen durchführen kann, um die Transaktion
abzuschließen
oder abzubrechen, nachdem er in der Vorbereitungsphase mit „Ja" gestimmt hat. In
kompensierenden Ressourcenmanagern, in welchen eine Kompensierung
durch Menschen angewendet wird, ist der CRM-Kompensator in Fällen, in
denen die Reinigungsaktion oder die kompensierende Aktion fehlschlägt, auf
Aktionen durch Menschen angewiesen. Nach solchen Fehlschlägen stellt
der CRM-Kompensator eine Ausgabe bereit, um einen menschlichen Operator
darüber
zu informieren, eine geeignete manuelle Aktion vorzunehmen, um die
Situation zu korrigieren. Der CRM-Kompensator führt dann fort, als ob die Reinigungsaktion
oder kompensierende Aktion erfolgreich gewesen wäre, z. B. indem er die richtigen
Informationen loggt und als Antwort auf den „EndCommit()"- oder „EndAbort()"-Aufruf „Erfolg" (als HRESULT-Rückmeldewert
der Methode) anzeigt. Wenn erforderlich, kann der CRM-Kompensator
anfordern, daß der
CRM-Clerk 222 die
Log-Aufzeichnungen von Beginn an neu abspielt, indem er auf die „CommitRecord()"- oder „AbortRecord"-Aufrufe, durch welche
die Log-Aufzeichnungen vom CRM-Clerk zugestellt werden, einen Fehlercode
zurücksendet.
Dies ermöglicht,
daß die
vollständige
Sequenz der Log-Aufzeichnungen in einer separaten Datei zur Verwendung
bei einer späteren
Kompensation durch Menschen gespeichert wird, wenn der Fehler, der
eine Kompensation durch Menschen erforderlich macht, nach einem
Teil der Verarbeitung der Log-Aufzeichnungen durch den CRM-Kompensator
auftritt.
-
Die
Nachricht an den menschlichen Operator kann in Form einer sichtbaren
Bildschirmmeldung, einer akustischen Meldung, eines ausgedruckten
Berichts oder einer anderen Meldung vorgenommen werden. Gewöhnlich wird
die Nachricht die für
die Transaktion relevanten Log-Aufzeichnungen
in einem von Menschen lesbaren Format umfassen, um für den menschlichen
Operator ausreichende Informationen bereitzustellen, um die erforderliche
manuelle Berichtigungsaktion durchzuführen, oder es wird dem menschlichen
Operator auf andere Weise ermöglicht,
solche Aufzeichnungen zu untersuchen (z. B. indem die Log-Aufzeichnungen
in eine separate Datei geschrieben werden, die für den menschlichen Operator
unter Verwendung eines Log-Einsichtnahme-Hilfsprogramms einzusehen
ist).
-
Zum
Beispiel kann ein kompensierender Ressourcenmanager, welcher eine
Kreditkartenzahlung bewirkt, als Teil der kompensierenden Aktion
für eine
Kreditkartenbelastung eine Kompensation durch Menschen anwenden.
Wo die Transaktion abgebrochen wurde, ist es die kompensierende
Aktion, eine Gutschrift auf das Konto vorzunehmen. Wenn der CRM-Kompensator
keine Gutschrift auf das Konto vornehmen kann, z. B. aufgrund der
fehlenden Verfügbarkeit
eines anderen Computers oder einer Kommunikationsverbindung, die
benötigt
wird, um auf die Kontoinformationen zuzugreifen, kann der CRM-Kompensator
stattdessen die kompensierende Aktion durch menschliches Eingreifen
durchführen. Der
CRM-Kompensator benachrichtigt den menschlichen Operator, daß eine manuelle
Aktion erforderlich ist, und kann für den Operator einen Zugang
zu den Log-Aufzeichnungen bereitstellen, damit dieser ermitteln
kann, welchem Konto welcher Betrag gutzuschreiben ist.
-
Verschobene Wiederherstellung
-
In
einigen kompensierenden Ressourcenmanagern, die mit der CRM-Architektur 200 (3) realisiert
sind, kann der CRM-Kompensator 206 als Teil seiner Reinigungs-
und/oder kompensierenden Aktion alternativ eine verschobene Wiederherstellung
anwenden. Bei verschobener Wiederherstellung bleiben die Log-Aufzeichnungen
der normalen Aktionen des CRM-Arbeitsprogramms
im persistenten Log 226, wenn die Reinigungs- oder kompensierende
Aktion des CRM-Kompensators 206 während der normalen Verarbeitung
oder während
der Wiederherstellungsverarbeitung fehlschlägt. Der CRM-Kompensator 206 sendet
auf die „EndCommit()"- oder „EndAbort()"-Methode ein Fehlerergebnis
zurück.
Da die Abschluss- oder Abbruchphase nicht beendet wird, existiert
die Transaktion weiterhin, und der Transaktionsmanager 148 ( 2)
bewahrt die Informationen über
die Transaktion. Die CRM-Architektur 200 und die MTS- Ausführungsumgebung 82 fahren jedoch
mit der Wiederherstellungsverarbeitung (falls während einer Wiederherstellung)
und auch mit der normalen Verarbeitung anderer Transaktionen fort. Bei
einer späteren
Wiederherstellung bewirkt der CRM-Clerk 222, daß der CRM-Kompensator 206 die verschobene
Reinigungsaktion oder kompensierende Aktion erneut versucht.
-
Schnittstellendefinitionen
-
Die
ICrmLogControl-Schnittstelle. Bezug nehmend wiederum auf 3,
unterstützt
der CRM-Clerk 222 die
ICrmLogControl-Schnittstelle 230. Die ICrmLogControl-Schnittstelle 230 wird
vom CRM-Arbeitsprogramm 202 und möglicherweise auch vom CRM-Kompensator 212 verwendet,
um Aufzeichnungen in das persistente Log 226 zu schreiben.
Das CRM-Arbeitsprogramm 202 registriert
auch 230 sein Gegenstück,
den CRM-Kompensator 212, unter Verwendung der ICrmLogControl-Schnittstelle
beim CRM-Clerk 222.
-
Die
ICrmLogControl-Schnittstelle 230 stellt eine Gruppe von
Methoden bereit, wie in der Programmauflistung der 6 dargestellt.
Die „TransactionUOW()"-Methode wird vom
CRM angewendet, um eine Transaction-Unit-Of-Work-Kennung der Transaktion
zu erhalten, in welcher das CRM-Arbeitsprogramm seine normale Aktion
durchführt.
-
Wie
oben erörtert,
ruft das CRM-Arbeitsprogramm 202 die „RegisterCompensator()"-Methode auf, um
sein Gegenstück,
den CRM-Kompensator 206, beim CRM-Clerk 222 zu
registrieren. Das CRM-Arbeitsprogramm 202 ruft die Methode
zuerst auf, nachdem es einen Zeiger auf die ICrmLogControl-Schnittstelle
erhalten hat (also bevor es die Schnittstelle verwendet, um irgendwelche
Log-Aufzeichnungen in das persistente Log zu schreiben), und kann
die Methode nur einmal erfolgreich aufrufen (nachfolgende Versuche
oder ein Versuch durch den CRM-Kompensator,
die Methode aufzurufen, fahren zu einem E_FAIL-Rückmeldewert). Das CRM-Arbeitsprogramm 202 legt
eine Klassenkennung (CLSID) oder Programmkennung (PROGID) im Zeichenkettenformat
des CRM-Kompensators 206 als „IpcwstrProgIdCompensator"-Parameter des Aufrufs fest. Das CRM-Arbeitsprogramm 202 leitet
in dem „IpcwstrDescription"-Parameter auch eine Textbeschreibung
weiter, die für
eine Überwachung
oder Verwaltung verwendet werden kann. Außer der Registrierung des CRM-Arbeitsprogramms
führt die
Methode auch eine Anzahl von Überprüfungen durch, um
sicherzustellen, daß der
CRM fortfahren kann. Diese Überprüfungen umfassen
das Verifizieren, daß der
CRM-Kompensator erzeugt werden kann und mindestens eine der (unten
beschriebenen) ICrmCompensator- oder ICrmCompensatorVariants-Schnittstellen
unterstützt.
Wenn nicht, meldet die Methode entsprechend „E_FAIL"- oder „E-NOINTERFACE"-Werte zurück. Die
Methode überprüft ferner,
daß der
aktuelle Kontext gültige
Transaktion- und Aktivitätskennungen
aufweist. Schließlich
meldet die Methode dann, wenn der CRM-Wiederherstellungs-Clerk die
Wiederherstellungsverarbeitung nicht beendet hat oder wenn er schwerwiegende
Fehler für den
CRM erkannt hat, entsprechend „XACT-E-RECOVERYINPROGRESS"- oder „E-FAIL"-Werte zurück.
-
Die „WriteLogRecordVariants"-Methode wird vom
CRM-Arbeitsprogramm 202 und vom CRM-Kompensator 206 aufgerufen,
um strukturierte Log-Aufzeichnungen in das Log zu schreiben. Strukturierte
Aufzeichnungen sind Aufzeichnungen, die als Zusammenstellung von
Werten des Variant-Typs aufgebaut sind. Typischerweise wird diese
Methode verwendet, wo das CRM-Arbeitsprogramm und der CRM-Kompensator
in Microsoft Visual Basic geschrieben sind und die strukturierte
Aufzeichnung ein Visual-Basic-Collection-Objekt ist. Die Methode
meldet einen Fehlercode „E_FAIL" zurück, wenn
der CRM-Kompensator 206, der von dem CRM-Arbeitsprogramm 202 registriert
wurde, nicht die ICrmCompensatorVariants-Schnittstelle unterstützt. Das CRM-Arbeitsprogramm
und der CRM-Kompensator dürfen
nicht sowohl strukturierte als auch unstrukturierte Log-Aufzeichnungen
verwenden. Dementsprechend erhält
ein Aufruf dieser Methode nach einem vorhergehenden erfolgreichen
Aufruf der „WriteLogRecord()"-Methode einen „E_FAIL"-Wert zurück. Die Methode
meldet auch den „E_FAIL"-Wert zurück, wenn
sie vom CRM-Arbeitsprogramm 202 aufgerufen wird, nachdem
die Transaktion beendet ist oder sich im Beendigungsvorgang befindet.
Der CRM-Kompensator kann jedoch die Methode weiter anwenden, um
während
der Transaktionsergebnisnotifikationen weitere Log-Aufzeichnungen zu
schreiben.
-
Die „ForceLog()"-Methode wird vom CRM-Arbeitsprogramm 202 und
vom CRM-Kompensator 206 aufgerufen, um zu bewirken, daß Log-Aufzeichnungen,
die zuvor unter Anwendung der „WriteLogRecord()"- oder WriteLogRecordVariants()"-Methode geschrieben
wurden, in das persistente Log 226 herausgeschrieben werden,
welches sich im persistenten Speicher des Computers (z. B. im Festplattenlaufwerk 27 der 1)
befindet, wo es einen Fehler übersteht.
Wenn die Log-Aufzeichnungen persistent gemacht sind, kann das CRM-Arbeitsprogramm 202 mit
seiner normalen Aktion an der Ressource fortfahren.
-
Die „ForgetLogRecord()"-Methode wird vom CRM-Arbeitsprogramm 202 oder
vom CRM-Kompensator 206 aufgerufen,
um zu bewirken, daß der CRM-Clerk
die letzte Log-Aufzeichnung,
die (z. B. unter Anwendung der „WriteLogRecord()"- oder „WriteLogRecordVariants()"-Methode) geschrieben
wurde, vergißt.
In der dargestellten CRM-Architektur 200 kann die Methode
nur angewendet werden, um die letzte geschriebene Log-Aufzeichnung
zu vergessen, und ermöglicht
keine Verschachtelung. Die vergessene Log-Aufzeichnung wird dem
CRM-Kompensator
während
Zweiphasen-Abschlussnotifikationen nicht zugestellt.
-
Das
CRM-Arbeitsprogramm 202 ruft die „ForcTransactionToAbort()"-Methode auf, um
einseitig zu bewirken, daß die
Transaktion unmittelbar abgebrochen wird (z. B. über einen Aufruf der MTS-ITransaction::Abort-Methode,
wie in den obigen einbezogenen MTS-Patentanmeldungen detaillierter beschrieben).
Ein Aufruf der Methode durch den registrierten CRM-Kompensator 202 erhält einen
Fehlercode „E_FAIL" zurück, weil
der CRM-Kompensator nicht aktiv ist, solange sich die Transaktion
im Beendigungsvorgang befindet.
-
Die „WriteLogRecord()"-Methode wird vom CRM-Arbeitsprogramm 202 und
vom CRM-Kompensator 206 aufgerufen,
um unstrukturierte Log-Aufzeichnungen zu schreiben (welche typischerweise verwendet
werden, wo das CRM-Arbeitsprogramm und der CRM-Kompensator in Microsoft
Visual C++ oder Visual J++ geschrieben sind). Bei den unstrukturierten
Aufzeichnungen handelt es sich einfach um einen Puffer aus Bytes.
Die Methode stellt eine Zusammenstellungsmöglichkeit bereit, indem sie
ermöglicht,
daß Abschnitte
der Log-Aufzeichnung durch das CRM-Arbeitsprogramm (oder den CRM-Kompensator)
als Feld solcher Puffer (der „rgBlob"-Parameter) aufgebaut
werden, welche dann durch diese Methode in einer einzelnen Operation
in einem Puffer kopiert werden, der vom CRM-Clerk unterhalten wird.
Die Methode meldet in den folgenden Fällen einen Fehlercode („E_FAIL") zurück: (1)
der registrierte CRM-Kompensator
unterstützt
nicht die ICrmCompensator-Schnittstelle, (2) die Methode wurde nach
einem vorhergehenden erfolgreichen Aufruf der „WriteLogVariants()"-Methode aufgerufen (da
der CRM-Clerk 222 nicht zuläßt, daß strukturierte und unstrukturierte
Aufzeichnungen vermischt werden) und (3) das CRM-Arbeitsprogramm
ruft die Methode auf, nachdem die Transaktion beendet ist oder sich
im Beendigungsvorgang befindet.
-
Die
ICrmCompensator- und ICrmCompensatorVariants-Schnittstellen. Immer
noch Bezug nehmend auf 3, unterstützt der CRM-Kompensator 206 eine
oder beide aus der ICrmCompensator- und der ICrmCompensatorVariants-Schnittstelle 212.
Die Schnittstellen werden vom CRM-Clerk 222 benutzt, um
dem CRM-Kompensator Zweiphasen-Abschlussnotifikationen und die vom
CRM-Arbeitsprogramm 202 während seiner normalen Aktion
geloggten Aufzeichnungen zuzustellen. Wie oben für die ICrmLogControl-Schnittstelle
erörtert,
müssen
die Aufzeichnungen für
einen speziellen CRM in Abhängigkeit
davon, ob die „WriteLogRecordVariants()"- oder die „WriteLogRecord()"-Methode angewendet
wurde, alle entweder strukturiert oder unstrukturiert sein. Die ICrmCompensator-Schnittstelle
wird verwendet, um unstrukturierte Log-Aufzeichnungen zuzustellen, während die
ICrmCompensatorVariants-Schnittstelle dem CRM-Kompensator strukturierte Log-Aufzeichnungen
zustellt.
-
Die
ICrmCompensator- und die ICrmCompensatorVariants-Schnittstelle sind
in den Programmauflistungen 302 bis 303 definiert,
die in 7 und 8 dargestellt sind. Die „SetLogControl()"-Methode wird vom CRM-Clerk 222 zuerst
aufgerufen, nachdem er den CRM-Kompensator 212 erzeugt
hat, um an den CRM-Kompensator 212 (als „pLogControl"-Parameter) einen
Zeiger auf die ICrmLogControl-Schnittstelle 230 des CRM-Clerks 222 weiterzuleiten.
Dies ermöglicht
dem CRM-Kompensator, während
der Beendigung der Transaktion weitere Log-Aufzeichnungen zu schreiben.
Ein anderer Rückmeldewert
als „S_OK" von dieser Methode
wird als Fehler des CRM-Kompensators angesehen, der einen „schnellen
Abbruch" des ASP 90 bewirkt,
solange er nicht speziell über
einen Registermerker für die
CLSID des CRM-Kompensators außer
Kraft gesetzt ist.
-
Die „BeginPrepare()"-Methode wird vom CRM-Clerk 222 als
Vorbereitungsnotifikation (Phase 1 des Zweiphasen-Abschlussprotokolls)
an den CRM-Kompensator aufgerufen und zeigt an, daß Log-Aufzeichnungen
im Begriff sind, zugestellt zu werden. Die Vorbereitungsnotifikation
wird nur während
der normalen Verarbeitung und nicht während der Wiederherstellung
gesendet. Wiederum wird ein anderer Rückmeldewert als „S_OK" als CRM-Kompensator-Fehler
angesehen.
-
Die
PrepareRecord()"-Methode
wird vom CRM-Clerk 222 aufgerufen, um dem CRM-Kompensator 206 während der
Vorbereitungsphase eine Log-Aufzeichnung zuzustellen. Die Log-Aufzeichnungen
werden in Vorwärtsreihenfolge
zugestellt. Unstrukturierte Log-Aufzeichnungen
werden als „CrmLogRecordRead"-Datenstruktur zugestellt,
welche ein Merkerfeld („dwCrmFlags"), eine Sequenznummer
(„dwSequenceNumber") und die Log-Aufzeichnungs-Daten
(„blobUserData") enthält. Das Merkerfeld
und die Sequenznummer stellen Informationen bereit, welche unter
Umständen,
unter denen eine Kompensierung durch Men schen erforderlich ist,
für ein
Austesten oder eine Fehleridentifikation nützlich sein können. Das
Merkerfeld umfasst Merker, die anzeigen, ob die Aufzeichnung vergessen gemacht
wurde und wann die Aufzeichnung geschrieben wurde. Die Sequenznummer
der Log-Aufzeichnung zeigt ihre Sequenz im persistenten Log 226 an.
Der CRM-Kompensator 206 kann den Vergessensmerker (den „pfForget"-Parameter) auf die Rückmeldung
von der Methode stellen, so daß er
bewirkt, daß der
CRM-Clerk die durch den Methodenaufruf zugestellte Log-Aufzeichnung
vergißt.
Der CRM-Kompensator 206 kann den Wert „ERROR-REPLAY-RECORDS" zurückmelden,
um zu bewirken, daß der
CRM-Clerk 222 die Zustellung aller vom CRM-Arbeitsprogramm geschriebenen
Log-Aufzeichnungen wiederholt, auch einschließlich jener, die vergessen
gemacht wurden, und jener, die vom CRM-Kompensator während der
Vorbereitungsphase geschrieben wurden. Ein anderer Rückmeldewert als „S_OK" oder „ERROR-REPLAY-RECORDS" wird als Fehler
des CRM-Kompensators angesehen, der einen schnellen Abbruch des
ASP 90 bewirkt. Die „PrepareRecordVariants()"-Methode ähnelt der „PrepareRecord()"-Methode, stellt aber strukturierte Log-Aufzeichnungen
zu.
-
Die „EndPrepare()"-Methode wird vom CRM-Clerk 222 aufgerufen,
um anzuzeigen, daß alle während der
Vorbereitungsphase verfügbaren Log-Aufzeichnungen
zugestellt worden sind. Wenn keine Log-Aufzeichnungen vom CRM-Arbeitsprogramm 202 geschrieben
wurden, lässt
der CRM-Clerk zwischen seinen Aufrufen der „BeginPrepare()"- und „EndPrepare()"-Methode den Aufruf
der „PrepareRecord()"- oder „PrepareRecordVariants()"-Methode aus. Der
CRM-Kompensator
stimmt unter Verwendung des „fOkToPrepare"-Parameters über das
Transaktionsergebnis ab. Ein anderer Rückmeldewert als „S_OK" wird als CRM-Kompensator-Fehler
angesehen, der einen schnellen Abbruch des ASP 90 verursacht.
-
Der
CRM-Clerk 222 ruft die „BeginCommit()"- oder „BeginAbort()"-Methode auf, um
dem CRM-Kompensator eine Abschluss- bzw. Abbruchnotifikation zuzustellen.
Der Aufruf zeigt dem CRM-Kompensator auch an, daß Log-Aufzeichnungen im Begriff
sind, für
die Verarbeitung der Abschluss- oder Abbruchaktionen durch den CRM-Kompensator 206 zugestellt
zu werden. Der „fRecovery"-Parameter ist ein
Merker, der anzeigt, ob die Methode während der Wiederherstellung
oder der normalen Verarbeitung aufgerufen wird. Ein anderer Rückmeldewert
als „S_OK" wird als CRM-Kompensator-Fehler
angesehen, der einen schnellen Abbruch des ASP 90 verursacht.
-
Die „CommitRecord()"- und die „AbortRecord()"-Methode werden vom
CRM-Clerk 222 aufgerufen, um während der Abschluss- und Abbruchphasenverarbeitung
eine unstrukturierte Log-Aufzeichnung zuzustellen. Für strukturierte
Log-Aufzeichnungen ruft der CRM-Clerk die ähnliche „CommitRecordVariants()"- oder „AbortRecordVariants()"-Methode auf. Für die „CommitRecord()"-Methode stellt der CRM-Clerk 222 die
Log-Aufzeichnungen in Vorwärtsreihenfolge
zu. Für
die „AbortRecord()"-Methode stellt der
CRM-Clerk 222 die Log-Aufzeichnungen
in Rückwärtsreihenfolge
zu. Wenn keine Log-Aufzeichnungen geschrieben wurden, lässt der
CRM-Clerk 222 zwischen „BeginCommit()"- (oder „BeginAbort()"-) und „EndCommit()"- (oder EndAbort()"-) Aufrufen den Aufruf
von „CommitRecord()"- (oder „AbortRecord()"-) aus. Der CRM-Kompensator
kann den Vergessensmerkerparameter („fForget”) auf Rückmeldung stellen, um zu bewirken,
daß der CRM-Clerk
die zugestellte Log-Aufzeichnung
vergißt.
Ein anderer Rückmeldewert
als „S_OK" oder „ERROR_REPLAY_RECORDS" wird als CRM-Kompensator-Fehler
angesehen, der einen schnellen Abbruch des ASP 90 verursacht.
-
Die „EndCommit()"- und „EndAbort()"-Methode werden vom
CRM-Clerk aufgerufen, um den CRM-Kompensator darüber zu benachrichtigen, daß während der
Abschluss- oder Abbruchphase alle Log-Aufzeichnungen zugestellt
worden sind. Dem CRM-Clerk 222 steht es frei, nach erfolgreicher
Beendigung dieser Methode alle Log-Aufzeichnungen für die Transaktion
zu verwerfen. Ein anderer Rückmeldewert
als „S_OK" wird als CRM-Kompensator-Fehler
angesehen, der einen schnellen Abbruch des ASP 90 verursacht.
-
Die
ILogRecover-Schnittstelle. Die Wiederherstellungsmaschine 242 unterstützt die
ILogRecover-Schnittstelle 248. Die Schnittstelle wird vom CRM-Wiederherstellungs-Clerk 224 benutzt,
um während
der normalen Verarbeitung Fixpunkte zu initiieren (über einen
Aufruf der „Take-Checkpoint()"-Methode), und um
während
der Wiederherstellungsverarbeitung die Wiederherstellung auf der Log-Datei 244 zu
initiieren (über
die „Recover()"-Methode). Die ILogRecover-Schnittstelle ist
in der Programmauflistung 306 definiert, die in 10 dargestellt
ist.
-
Die
ILogRecoverClerk-Schnittstelle. Der CRM-Wiederherstellungs-Clerk 224 und
jeder CRM-Clerk 222 verwirklichen
die ILogRecoverClerk-Schnittstelle. Die Wiederherstellungsmaschine 242 benutzt
die ILogRecoverClerk-Schnittstelle, um den CRM-Wiederherstellungs-Clerk 224 und
den CRM-Clerk 222 durch Wiederherstellungsphasen zu führen und
während
der Wiederherstellungsphasen die zu dem Clerk gehörenden Log-Aufzeichnungen zuzustellen.
Die Wieder herstellungsmaschine 242 benutzt die ILogRecoverClerk-Schnittstelle
auch dafür
zu bewirken, daß der
CRM-Wiederherstellungs-Clerk 224 und der CRM-Clerk 222 ihre
Fixpunktverarbeitung durchführen
(über die „WriteCheckpoint()"-Methode). Die ILogRecoverClerk-Schnittstelle
ist durch die Programmauflistung 308 definiert, die in 11 dargestellt
ist.
-
Die
ILogRecoverClerkPhaseNotification-Schnittstelle. Der CRM-Clerk 222 verwirklicht
die ILogRecoverClerkPhaseNotification-Schnittstelle. Wenn die Wiederherstellungsmaschine 242 von
den Transaktionen, an welchen sie teilnimmt, Zweiphasen-Abschlussnotifikationen
empfängt,
benutzt die Wiederherstellungsmaschine die ILogRecoverClerkPhaseNotification-Schnittstelle, um
die Notifikation an den CRM-Clerk 222 weiterzuleiten, der
die Transaktion aufweist. Die ILogRecoverClerkPhaseNotification-Schnittstelle
ist in der Programmauflistung 310 definiert, die in 12 dargestellt
ist.
-
Die
ILogRecoverClerkRegistration-Schnittstelle. Die Wiederherstellungsmaschine 242 unterstützt die
ILogRecoverClerkRegistration-Schnittstelle, welche vom CRM-Wiederherstellungs-Clerk 224 und
vom CRM-Clerk 222 aufgerufen wird, um sich im persistenten
Log 226 zu registrieren. Wie oben beschrieben, registriert
der CRM-Wiederherstellungs-Clerk 224 seine Klassenkennung
(CLSID) beim Wiederherstellungs-Clerk, während der CRM-Clerk 222 eine
Clerk-Instanzkennung registriert, die den CRM-Clerk 222 unter
anderen CRM-Clerks derselben Klasse eindeutig identifiziert. Die
ILogRecoverClerkRegistration-Schnittstelle ist in der Programmauflistung 312 definiert,
die in 13 dargestellt ist.
-
Die
ILog-Schnittstelle. Das Log-Objekt 240 verwirklicht die
ILog-Schnitstelle, welche für
den CRM-Clerk 222, den CRM-Wiederherstellungs-Clerk 224 und
die Wiederherstellungsmaschine 242 Dienste zum stabilen
Schreiben von Log-Aufzeichnungen in die Log-Datei 244 bereitstellt.
Die ILog-Schnittstelle ist in der Programmauflistung 314 definiert,
die in 14 dargestellt ist.
-
Nachdem
die Prinzipien meiner Erfindung mit Bezug auf eine dargestellte
Ausführungsform
beschrieben und veranschaulicht worden sind, wird man erkennen,
daß die
dargestellte Ausführungsform
in der Anordnung und den Einzelheiten modifiziert werden kann, ohne
die Prinzipien zu verlassen. Es versteht sich, daß die hierin
beschriebenen Programme, Verfahren oder Methoden nicht auf eine
bestimmte Art von Computervorrichtung bezogen oder beschränkt sind,
solange nicht anders angezeigt. Es können verschiedene Arten von
allgemeinen oder spezialisierten Computervorrichtungen mit den hierin beschriebenen
Lehren benutzt werden oder Operatio nen gemäß den hierin beschriebenen
Lehren durchführen.
Elemente der veranschaulichten Ausführungsform, die in Software
dargestellt wurden, können
auch in Hardware realisiert werden, und umgekehrt.
-
Während zum
Beispiel die dargestellte CRM-Architektur 200 eine Schnittstelle
(die „ICrmLog-Control::RegisterCompensator()"-Methode) bereitstellt,
um den CRM-Kompensator 206 zu registrieren, können erfindungsgemäße kompensierende Ressourcenmanager
alternativ eine Kennung (z. B. CLSID oder PROGID) des Kompensatorobjekts
in die Log-Informationen loggen, die in das persistente Log 226 geschrieben
werden, die von der vom System bereitgestellten Infrastruktur (z.
B. dem CRM-Clerk 222 und dem CRM-Wiederherstellungs-Clerk 224)
verwendet werden kann, um die Kompensatorkomponente zu erzeugen,
um Zweiphasen-Abschlussnotifikationen
des Transaktionsmanagers 148 (2) zu verarbeiten.
-
Im
Hinblick auf die vielen möglichen
Ausführungsformen,
in welchen die Prinzipien meiner Erfindung angewendet werden können, sollte
man erkennen, daß die
detaillierten Ausführungsformen
lediglich beispielhaft sind und nicht den Umfang meiner Erfindung
beschränken
sollen.