-
Gebiet der
Erfindung
-
Die
Erfindung betrifft kollaborative Peer-to-Peer-Computersysteme, welche
Kommando- und Datenblöcke direkt
austauschen, um die Konsistenz eines geteilten Raumes zwischen den
Kollaborateuren aufrechtzuerhalten.
-
Stand der
Technik
-
Die
Kollaboration umfaßt
die Fähigkeit
jeden Mitgliedes in einer Gruppe von Mitgliedern, „Kollaborateure" genannt, Informationen
automatisch an andere Kollaborateure in der Gruppe zu übertragen
und von diesen zu erhalten. Zum Vereinfachen einer solchen Kollaboration
wurden verschiedene Systeme entwickelt, die es ermöglichen,
daß solche
Informationen zwischen PC-Systemen, Kommunikationsvorrichtungen
oder anderen Kommunikationsgeräten,
einschließlich
Handheld- und Funk-Geräten, übertragen
werden. In dieser Beschreibung werden diese Geräte zusammen als „Computer" bezeichnet.
-
Computerbasierte
Kollaboration kann lokal zwischen Benutzern stattfinden, die mit
einem Computer oder Server verbunden sind oder mit diesem arbeiten.
Alternativ dazu kann die Kollaboration über ein Netz wie das Internet
erfolgen, wobei sich jeder der Benutzer an einem Computer befindet,
welcher mit dem Netz verbunden ist. Es kann auch ein Server mit
dem Netz verbunden sein. Derzeit werden mehrere Kollaborationsmodelle
als Netzcomputer-Kollaborationssysteme implementiert. Eines dieser
Modelle ist ein Client-Server-Modell, bei dem alle Kollaborateure über das
Netz mit einem Zentralserver verbunden sind. Die durch jeden Kollaborateur
erzeugten Informationen werden über
das Netz an den Server gesendet, welcher dann die Informationen über das
Netz zurück
an jeden anderen Kollaborateur überträgt. Ein
weiteres Modell ist ein „Peer-to-Peer"-Modell, bei dem über das
Netz direkte Verbindungen zwischen allen Kollaborateurcomputern aufgebaut
werden. Die von jedem Kollaborateur erzeugten Informationen werden
dann direkt an jeden anderen Kollaborateur gesendet. Bei einem solchen
System kommunizieren die Kollaborateure in einem privaten „virtuellen" geteilten Raum.
-
Bei
beiden dieser Modelle gibt es mehrere Verfahren, mittels welcher
die Informationen zwischen Kollaborateuren übertragen werden. Zum Beispiel
können
bei einem Client-Server-System
Daten, die kollaborativ modifiziert werden, auf dem Server gespeichert
werden. Dann sendet jeder Kollaborateur, der die Daten modifizieren
möchte,
ein Kommando an den Server, um eine Änderung der Serverdaten zu
bewirken. Der Server modifiziert seine Kopie der Daten und sendet
dann Informationen, die eine „Ansicht" der modifizierten
Daten darstellen, an alle Kollaborateure, so daß jeder Kollaborateur die Daten
lokal anzeigen kann.
-
Ein
zentraler Datenspeicher ist bei einem Peer-to-Peer-Kollaborationssystem
nicht möglich,
weil kein Kollaborateur als ein Server agiert. Somit weist bei solchen
Systemen jeder Kollaborateur eine lokale Kopie der kollaborativ
modifizierten Daten auf. Zum Ändern
der Daten erzeugt ein Kollaborateur eine Datenänderungsanforderung, die an
jeden anderen Kollaborateur weitergeleitet wird. Die eingehenden
Datenänderungsanforderungen
werden dann von jedem Kollaborateur zum Modifizieren seiner lokalen
Datenkopie verwendet.
-
Der
letztgenannte Typ des Kollaborationssystems ist detailliert beschrieben
in WO 01/06365 A2 „METHOD
AND APPARATUS FOR ACTIVITY-BASED COLLABORATION BY A COMPUTER SYSTEM
EQUIPPED WITH A COMMUNICATION MANAGER", WO 01/06361 A2 „METHOD AND APPARATUS FOR
ACTIVITY-BASED COLLABORATION BY A COMPUTER SYSTEM EQUIPPED WITH
A DYNAMICS MANAGER" und WO
01/06364 A2 „METHOD
AND APPARATUS FOR PRIORITIZING DATA CHANGE REQUESTS AND MAINTAINING
DATA CONSISTENCY IN A DISTRIBUTED COMPUTER SYSTEM EQUIPPED FOR ACTIVITY-BASED
COLLABORATION" und
WO 01/95155 A2 „METHOD
AND APPARATUS FOR EFFICIENT MANAGEMENT OF XML DOCUMENTS".
-
Bei
diesem Kollaborationssystem besitzt jeder Kollaborateur ein Programm, „Aktivität" genannt, welches
auf seinem oder ihrem Computer läuft.
Das Aktivitätsprogramm
enthält
ein Werkzeug, welches auf Benutzerinteraktionen durch das Erzeugen
von Datenänderungskommandos
reagiert. Diese Datenänderungskommandos
werden einer Datenänderungsvorrichtung
bereitgestellt, welche die lokale Datenkopie durch die Durchführung der Änderungen
an den Daten angefordert durch die Datenänderungskommandos pflegt. Die Kommandos
werden in ein Behältnis, „Delta" genannt, eingefügt, und
Deltas werden von einem Kollaborateur zum anderen durch ein Programm,
Kommunikationsmanager genannt, verteilt.
-
Wenn
ein Peer-to-Peer-Kollaborationssystem über ein Netz verwendet wird,
sind spezielle Überlegungen
anzustellen. Eine Hauptüberlegung
ist die Netzlatenz. Insbesondere wenn ein Delta über das Netz an eine Gruppe
anderer Kollaborateure übertragen
wird, kann es aufgrund ungleicher Übertragungszeiten über das Netz
einige Kollaborateure früher
erreichen als andere. Da alle Kollaborateure Deltas „asynchron" senden und empfangen,
können
die Anforderungen durch unterschiedliche Kollaborateure in unterschiedlicher
Reihenfolge empfangen werden. Dies kann potentiell ein Problem verursachen,
weil die korrekte Ausführung
einiger Kommandos von anderen Kommandos abhängen kann, die vorausgehend
ausgeführt
wurden. Um sicherzustellen, daß die
lokalen Datenkopien konsistent bleiben, muß das Kollaborationssystem
Kausalität
wahren. Insbesondere fordert die Kausalität, daß, wenn ein aktuelles Datenänderungskommando
empfangen von einem ersten Kollaborateur durch einen zweiten Kollaborateur
ausgeführt
wird, der zweite Kollaborateur alle vorausgehenden Datenänderungskommandos
ausgeführt
hat, die der erste Kollaborateur bereits ausgeführt hatte, als das aktuelle
Datenänderungskommando
erzeugt wurde.
-
Eine
weitere Bedingung, die erfüllt
sein muß,
ist Konvergenz. Konvergenz stellt sicher, daß, wenn alle Kollaborateure
den gleichen Satz von Operationen ausgeführt haben, die abschließende Ausführungsreihenfolge
der Datenänderungskommandos
durch alle Kollaborateure die gleiche ist. Bei dem in den zuvor
genannten Patentanmeldungen beschriebenen Kollaborationssystem empfängt und
interpretiert ein Spezialprogramm, Dynamikmanager genannt, in jedem
Computer die Deltas erzeugt in diesem Computer und empfangen durch
diesen Computer von anderen Computer zum Wahren der Kausalität und zum
Sicherstellen der Konvergenz.
-
Ein
weiteres potentielles Problem bei einem Peer-to-Peer-System betrifft
Kollaborateure, die während einer
andauernden Sitzung in die Kollaborationsgruppe eintreten und diese
wieder verlassen, indem sie ihre Computer vom Netz trennen oder
die Computer herunterfahren. Da die Integrität der lokalen Datenkopie eines Kollaborateurs
abhängig
ist vom Empfang von Datenänderungskommandos
von anderen Kollaborateuren und der korrekten Interpretation dieser
Kommandos, benötigen
Kollaborateure, die eine Kollaborationssitzung verlassen, entweder
eine komplette aktuelle Kopie der lokalen Daten oder eine Sammlung
von Datenänderungskommandos,
die während
ihrer Abwesenheit von anderen Kollaborateuren übertragen wurden, um ihr System neu
zu starten. In vielen Fällen
kann die Kopie der lokalen Daten und die Sammlung von Datenänderungskommandos
recht groß sein,
was zu einer übermäßig langen
Startverzögerung
für einen
Kollaborateur führen kann,
der in eine andauernde Kollaborationssitzung eintritt.
-
Die
oben zitierte Internationale Patentanmeldung WO 01/06364 A2 offenbart
ein dezentrales aktivitätsbasiertes
Kollaborationssystem, bei welchem Datenänderungsanforderungen, welche
Deltas umfassen, über
ein Netz zwischen netzfähigen
Geräten,
auch Endpunkte genannt, kommuniziert werden. Dieses System verwendet
ein Prioritätsschema
für Datenänderungsanforderungen
zum Bestimmen einer Reihenfolge der Ausführung von Datenänderungsanforderungen
beim Bewirken von Änderungen
an lokalen Kopien von Daten zum Optimieren der Datenkonsistenz bei
kollaborativen Aktivitäten.
Das Prioritätsschema
für Datenänderungsanforderungen
umfaßt
das Codieren der Datenänderungsanforderungen
mit Anforderungsfolgenummern und einem Identifikator, welcher den
Eigenschaften der netzfähigen
Geräte
entspricht, welche die Anforderung erzeugt haben. Ferner umfaßt das Prioritätsschema
für Datenänderungsanforderungen
das Codieren der Datenänderungsanforderungen
mit einem Abhängigkeitsidentifikator,
welcher eine Datenänderungsanforderung spezifiziert,
von der die codierte Datenänderungsanforderung
abhängt.
Als Reaktion auf den Abhängigkeitsidentifikator
können
Datenänderungen
an den Daten vorgenommen, rückgängig gemacht
und erneut vorgenommen werden. Das System umfaßt in jedem der netzfähigen Geräte eine
Datenänderungsvorrichtung,
welche mit einem lokalen Speicher gekoppelt ist und auf eine Vielzahl
von Datenänderungsanforderungen
zum Steuern der Speicherung der lokalen Kopie der Daten im lokalen
Speicher reagiert, sowie einen Dynamikmanager, welcher mit der Datenänderungsvorrichtung
gekoppelt ist und auf die Datenänderungsanforderungen zum
Steuern der Datenänderungsvorrichtung
und zum Koordinieren der Ausführung
der Datenänderungsanforderungen
reagiert. Zu diesem Zweck pflegt der Dynamikmanager ein Deltaprotokoll,
bei welchem es sich um eine Aufzeichnung aller Deltas ausgeführt durch
das netzfähige
Gerät und
eine Vektoranordnung zum Spezifizieren der höchsten Folgenummer von Deltas,
welche durch das lokale Gerät
erzeugt oder von anderen Geräten
empfangen wurden, handelt. Die Vektoranordnung speichert einen Endpunktidentifikator,
eine dem Endpunkt entsprechende Folgenummer aller Deltas empfangen
von allen Endpunkten und den Abhängigkeitsidentifikator.
-
Kurzfassung
der Erfindung
-
Die
Erfindung stellt Verbesserungen dieses bekannten Systems bereit
und betrifft ein System und ein Verfahren zum Aufrechterhalten der
Konsistenz eines geteilten Raumes über eine Vielzahl von Endpunkten
in einem kollaborativen Computersystem. Das kollaborative Computersystem
gemäß der Erfindung,
wie in den Ansprüchen
definiert, umfaßt
in jedem Endpunkt einen Mechanismus, welcher den Einsetzungspunkt
eines Deltas in das Deltaprotokoll bestimmt, so daß das Deltaprotokoll
Ketten von Deltas enthält,
wobei jede Kette Deltas von einem Endpunkt in der Reihenfolge der
Erzeugung aufweist. Die Ketten sind organisiert in Gruppen von Ketten
von unterschiedlichen Endpunkten und die Gruppen sind basierend
auf der Zeit des Empfangs der Deltas innerhalb der Gruppe geordnet.
-
Gemäß der Grundlagen
der Erfindung ist die Deltaprotokoll-Datenstruktur in Blöcken organisiert
und die Blöcke
enthalten wiederum Gruppen, Gruppen enthalten Ketten und Ketten
enthalten Deltas. Deltablöcke werden
verwendet, um Prioritätsdeltas
zu implementieren, die verwendet werden, um die Sammlung von Datenänderungskommandos
einzuschränken,
die zu übertragen
sind. Innerhalb eines Blocks sind die Deltas nach Gruppen organisiert,
von denen jede ein Satz von Deltas organisiert in Ketten ist. Die
Deltagruppe wird verwendet, um zu bestimmen, welche Deltas zu eliminieren
sind. Die Ketten sind nach ansteigender Erzeuger-ID des Endpunktes
geordnet, welcher die Kette erzeugt hat. Das Organisieren des Deltaprotokolls
auf diese Art und Weise hält
die Deltas auf allen Endpunkten in einer konsistenten Reihenfolge.
Dies macht es möglich,
das Deltaprotokoll „abzuschreiten", um Konvergenz auf
allen Endpunkten zu erreichen.
-
Zum
Erreichen der Kausalitätserhaltung
besitzt jedes Delta eine Liste von Abhängigkeiten, welche andere Deltas
darstellen, die auszuführen
sind, bevor das aktuelle Delta ausgeführt werden kann. Der Dynamikmanager
nutzt die Fähigkeit
zum Vornehmen (Ausführen)
und Rückgängigmachen
von Kommandos zum Durchführen
von Wiederholungs- und Überspringen-Operationen an Deltas,
um Konvergenz zu erreichen.
-
Um
zu verhindern, daß das
Deltaprotokoll zu groß wird,
verwendet eine Eliminierungstechnik gemäß der Grundlagen der Erfindung
Endpunktimpulse zwischen den Endpunkten in einem geteilten Raum übertragen.
Jeder Endpunkt beinhaltet in einem Endpunktimpulse Informationen,
welche eine Deltagruppe identifizieren, zu deren Eliminierung er
bereit ist (basierend auf der höchsten
Gruppe, deren Empfang jeder Endpunkt quittiert hat). Dann eliminieren
alle Endpunkte Deltas in Gruppen ausgewählt durch Vergleichen der Gruppen, für welche
die Endpunkte erklärt
haben, daß sie
zu deren Eliminierung bereit sind.
-
Gemäß einer
weiteren Ausführungsform
werden spezielle Deltas, Prioritätsdeltas
genannt, verwendet, um die Ausführungsreihenfolgebildung
unabhängiger
Deltas zu steuern. Zum Beispiel kann ein Delta, welches einen Endpunkt
in einen geteilten Raum einlädt,
ein Prioritätsdelta
sein, so daß Deltas,
die von dem einladenden Delta unabhängig sind, keine Wiederholung
verursachen, die zum Erreichen von Konvergenz notwendig ist, und
daher ist es nicht notwendig, den Inhalt des gesamten Deltaprotokolls
an einen neuen eingeladenen Endpunkt zu senden.
-
Gemäß noch einer
weiteren Ausführungsform
werden spezielle Deltas, asynchrone Deltas genannt, verwendet, um
große
Dateien zu übertragen,
ohne die Übertragung
anderer Deltas während
des Datenübertragungsprozesses
zu blockieren. Asynchrone Deltas sind so angeordnet, daß es keine
anderen Deltas gibt, die von ihnen abhängig sind. Dementsprechend
müssen
Endpunkte nicht warten, bis das Verarbeiten eines asynchronen Deltas
abgeschlossen ist, um weitere Deltas zu übertragen.
-
Gemäß noch einer
weiteren Ausführungsform
werden bleibende Daten gespeichert, welche den Zustand aller Endpunkte
im geteilten Raum darstellen. Deltas werden nur an aktive Endpunkte
gesendet, und die Verarbeitung eingehender Deltas ist abhängig vom
Zustand des Endpunktes, welcher das Delta gesendet hat. Diese Zustande
unterstützen
die Implementierung von Mitgliedschaftsveränderungen, wie Einladen und
Ausladen, in einer dezentralen und sicheren Art und Weise. Außerdem ist
es möglich,
einen inaktiven Endpunkt im geteilten Raum zu suspendieren, um zuzulassen,
daß Teile
des Deltaprotokolls eliminiert werden.
-
Kurzbeschreibung
der Zeichnungen
-
Die
obengenannten und weiteren Vorteile der Erfindung sind möglicherweise
unter Verweis auf die folgende Beschreibung in Verbindung mit den
beiliegenden Zeichnungen besser verständlich, wobei:
-
1 ein
schematisches Blockdiagramm eines veranschaulichenden Kollaborationssystems
des Standes der Technik ist, in dem die Erfindung verwendet werden
kann.
-
2 ein
detaillierteres schematisches Blockdiagramm eines veranschaulichenden
Computersystems des Standes der Technik ist, auf dem Kollaborationssoftware
läuft,
die verwendet wird, um das in 1 gezeigte
System zu implementieren.
-
3A und 3B zusammengenommen
ein Flußdiagramm
bilden, welches die Schritte bei der Verarbeitung eines Deltas auf
dem Endpunkt, welcher das Delta gemäß der Grundlagen der Erfindung
erzeugt hat, veranschaulicht.
-
4 ein
schematisches Blockdiagramm ist, welches die Hauptkomponenten des
Dynamikmanagers veranschaulicht, welche an der Erzeugungs-, Übertragungs-
und Empfangsverarbeitung von Deltas beteiligt sind.
-
5 ein
Diagram ist, welches eine XML-Datenstruktur veranschaulicht, welche
ein typisches Delta mit einem Datenänderungskommando und ohne Rückgängigmachen-Informationen
darstellt.
-
6 ein
Diagram ist, welches die XML-Datenstruktur veranschaulicht, welche
ein typisches Delta mit zwei Datenänderungskommandos und Rückgängigmachen-Informationen
für beide
Kommandos darstellt.
-
7 ein
Diagramm ist, welches die Struktur eines bleibenden XML-Dokumentes
veranschaulicht, welches Deltas und Deltaverarbeitungsstrukturen
in einem Dynamikmanager darstellt.
-
8A und 8B zusammengenommen
ein Diagramm einer XML-Datenstruktur eines Deltas bilden, welche
zwei erzeugungsverschachtelte Deltas darstellt, von denen beide
Rückgängigmachen-Informationen
aufweisen.
-
9A und 9B zusammengenommen
ein Diagramm einer XML-Datenstruktur eines Deltaprotokolls bilden,
welches die Deltas während
der Verarbeitung enthält.
-
10A und 10B zusammengenommen
ein Flußdiagramm
bilden, welches die Schritte bei einem Prozeß zum Empfangen und Verarbeiten
eines Deltas an einem Endpunkt veranschaulicht.
-
11A und 11B zusammengenommen
ein Flußdiagramm
bilden, welches die Schritte bei einem Prozeß zum Assimilieren eines neuen
Deltas veranschaulicht.
-
12 ein
Diagramm ist, welches eine XML-Datenstruktur eines Deltahalters
zeigt, welcher Deltas während
der Verarbeitung enthält.
-
13 ein
Flußdiagramm
ist, welches die Schritte eines veranschaulichenden Prozesses zum
Einschränken
des übermäßigen Holens
während
der Verarbeitung eines Deltas zeigt.
-
14A und 14B zusammengenommen
ein Diagramm bilden, welches eine XML-Datenstruktur zum Speichern von Endpunktinformationen
darstellt.
-
15A und 15B zusammengenommen
ein Flußdiagramm
bilden, welches die Schritte bei einem Prozeß zum Ausführen eines neuen Deltas veranschaulicht.
-
16 ein
Diagramm ist, welches eine veranschaulichende XML-Datenstruktur
eines Identität-Verbreitet-Deltas
zeigt.
-
17 ein
Flußdiagramm
ist, welches die Schritte eines veranschaulichenden Prozesses zum
Assimilieren von Prioritätsdeltas
zeigt.
-
18 ein
Flußdiagramm
ist, welches die Schritte eines veranschaulichenden Prozesses zum
Eliminieren von Deltaprotokollen zeigt.
-
19 ein
schematisches Diagramm ist, welches Endpunkt-Zustände und Übergänge zwischen
den Endpunkt-Zuständen
für einen
Endpunkt darstellt.
-
Detaillierte
Beschreibung
-
1 veranschaulicht
in sehr schematischer Form ein Peer-to-Peer-Kollaborationssystem 100, bei welchem
kollaborierende Computer durch ein Netz 110 wie das Internet
miteinander verbunden sind. Obwohl bei diesem System verschiedene
Netze verwendet werden können,
wird in der nachfolgenden Diskussion das Netz 110 als das
Internet angenommen. Bei diesem System bestehen die kollaborierenden
Computersysteme aus den Peer-Einheiten 102–108,
und Kommunikationen über
das Internet 110 können
von einem Peer zu einem anderen gerichtet sein, ohne Zwischengeräte. Jeder
Peer-Einheit 102–108 kann
als ein PC oder eine andere Form eines netzfähigen Gerätes, wie eine Set-Top-Box oder
ein Handheld-Gerät, implementiert
sein.
-
Peer-to-Peer-Kommunikationen
können
direkt zwischen Peer-Einheiten erfolgen. Zum Beispiel kann die Peer-Einheit 102 direkt
mit den Peer-Einheiten 104, 106 und 108 kommunizieren,
wie schematisch durch die gepunkteten Links 112, 116 bzw. 114 angegeben.
In einer ähnlichen
Art und Weise kann die Peer-Einheit 104 mit den Einheiten 108 und 106 über die
Verbindungen 120 bzw. 118 verbunden sein. Und
schließlich
können
die Einheiten 106 und 108 über die Verbindung 122 kommunizieren.
Ein Kollaborationssystem wie das in 1 gezeigte
ist erhältlich
von Groove Networks, Inc., 100 Cummings Center, Suite 535Q, Beverly,
Massachusetts 01915 und ist im GrooveTM Plattform
Development Kit detailliert beschrieben, welches von Groove Networks,
Inc. und online unter http://www.groove.net erhältlich ist. In der nachfolgenden
Diskussion wird das Kollaborationssystem als ein solches System
angenommen. Jedoch dürfte
dem Fachmann auf dem Gebiet klar sein, daß auch andere Kollaborationssysteme
mit der vorliegenden Erfindung verwendet werden können.
-
Bei
diesem Kollaborationssystem befindet sich ein Programm, „Aktivität" genannt, in jedem
kollaborierenden Computersystem, Kommunikationsgerät oder anderen
netzfähigen
Gerät.
Die Aktivität
ermöglicht
es, eine geteilte, fokussierte Aufgabe (Task), wie zum Beispiel
einen „Chat", Spiele oder Geschäftsanwendungen, in
Kollaboration mit anderen entfernten Kollaborateuren durchzuführen. Diese
Kollaboration beinhaltet geteilte und gemeinsame Aktivitäten zwischen
Einzelpersonen und kleinen Gruppen in privaten geteilten Räumen. Jeder
geteilte Raum ist eine konkrete Darstellung einer oder mehrerer
Aktivitäten,
die auf jedem der kollaborierenden Computer von Mitgliedern dieses
geteilten Raumes betriebfähig
sind.
-
Bei
dem System greifen Teilnehmer oder Mitglieder eines geteilten Raumes
auf das System zu, indem sie „Konten" eröffnen, die
mit „Endpunkten" in Zusammenhang
stehen. Da ein einzelner Kollaborateur über mehr als ein Gerät auf das
System zugreifen kann, ist ein Endpunkt als eine einmalige Kombination
einer Einzelperson und eines Gerätes
definiert. Jeder Endpunkt speichert eine einzelne, lokale Kopie
der Daten des geteilten Raumes.
-
Jede
Aktivität
umfaßt
ein oder mehrere Werkzeuge, von denen jedes mit einem Kollaborateur
interagiert, zum Beispiel durch das Empfangen von Maus- und Tastaturereignissen,
und initiiert Datenänderungsanforderungen
als Antwort auf die Interaktionen. Diese Datenänderungsanforderungen werden
lokal verwendet und an andere Mitglieder des geteilten Raumes gesendet.
Jede Aktivität
umfaßt
auch eine oder mehrere Datenänderungsvorrichtungen
getrennt von den Werkzeugen, zum Pflegen der lokalen Kopie der Daten
des geteilten Raumes gemäß eines
gemeinsamen Datenmodells. Das Datenmodell ist zum Beispiel aktivitätsspezifisch
und ist bevorzugt das gleiche über
alle Mitglieder des geteilten Raumes hinweg. Jeder kollaborierende Computer
umfaßt
auch einen Dynamikmanager, welcher Datenänderungsanforderungen, die
lokal erzeugt wurden und anderen Mitgliedern des geteilten Raumes
empfangen wurden, prüft,
die Ausführung
der lokalen und anderer Datenänderungsanforderungen
koordiniert und die Datenänderungsvorrichtung
steuert, die angeforderten Änderungen
an der lokalen Kopie der Daten vorzunehmen.
-
2 zeigt
die interne Architektur 200 des Kollaborationssystems wie
auf einer der Peer-Einheiten 102–108, wie zum Beispiel
Peer-Einheit 102, implementiert, detaillierter. Das Kollaborationssystem
auf der Peer-Einheit 102 umfaßt einen Rahmen 202,
mindestens einen geteilten Raum 204, der eine oder mehrere Aktivitäten 205 umschreibt,
und eine Benutzerschnittstelle 206.
-
Der
Rahmen 202 kann eine Plattform für die Wartung einer Reihe geteilter
Räume bereitstellen,
von denen der geteilte Raum 204 gezeigt ist. Der Rahmen 202 ist
bevorzugt eine modulare Konstruktion mit einer Anwendungsprogrammierungsschnittstelle
(application programming interface – API), auf der die Aktivitäten laufen
und durch welche diese mit den Rahmenkomponenten kommunizieren.
Der Rahmen 202 umfaßt
einen Benutzerschnittstellenmanager 208, einen Identitätsmanager 210,
einen Manager für
den geteilten Raum 212, einen Aktivitätsmanager 214, einen
Speichermanager 216, einen Dynamikmanager 220 und
einen Kommunikationsmanager 222.
-
Der
Benutzerschnittstellen-(user interface – UI)Manager 208 ist
verantwortlich für
das Verwalten geteilter Dienste für eine Reihe von Benutzerschnittstellen-Controllern
(nicht separat gezeigt). Der UI-Manager 208 verwaltet das
graphische Layout von Aktivitätsbildschirmanzeigen
innerhalb von Feldern eines Anzeigefensters, und ansonsten stellt
er ein gewünschtes „Aussehen
und Gefühl” für die Benutzerschnittstelle
bereit. Der UI-Manager 208 verwaltet auch die Aktivitätsnavigation
(zum Beispiel „Gehe
zu", „Nächstes", „Vorhergehendes" usw.) und pflegt
die Navigationsgeschichte.
-
Der
Identitätsmanager 210 ist
verantwortlich für
das Pflegen einer „Identität" für jedes
Mitglied des geteilten Raumes. Eine Identität ist der Name und eine entsprechende
Internetadresse (uniform resource locator – URL), unter welcher jeder
Benutzer bei anderen bekannt ist. Einzelne Benutzer können eine
oder viele Identitäten
haben. Der Identitätsmanager 210 pflegt
eine Aufzeichnung oder Tabelle im lokalen Speicher der Identitäten. Der
Identitätsmanager 210 kann
auch eine Aufzeichnung oder Tabelle von URLs für die Mitglieder des geteilten
Raumes und ihre entsprechenden Geräte-URLs pflegen. Alternativ
dazu kann ein separater Mitgliedsmanager implementiert werden.
-
Der
Manager des geteilten Raumes 212 ist verantwortlich für das Verwalten
jedes der geteilten Räume 204,
die auf der Peer-Einheit 102 geöffnet sein können. Jeder
geteilte Raum 204 ist eine konkrete Darstellung von einer
oder mehreren Aktivitäten.
Jeder geteilte Raum 204 besitzt einen entsprechenden Aktivitätsmanager 214.
-
Jeder
Aktivitätsmanager 214 ist
verantwortlich für
(a) das Hinzufügen
neuer Aktivitäten
zu einem geteilten Raum, (b) das Öffnen bestehender Aktivitäten in einem
geteilten Raum und (c) das Aktualisieren von Aktivitäten des
geteilten Raumes. Jede Aktivität
ist definiert durch eine Aktivitäts-„Vorlage", welche die Anfangsaktivitätskonfiguration
für einen
geteilten Raum definiert, und ist eine bleibende Darstellung des
Werkzeugs und der Vorrichtungskomponenten, welche die Aktivität umfassen.
Zum Erzeugen einer Aktivitätsvorlage
kann ein Softwareentwickler ein Werkzeug schreiben oder ein/e bestehende/s
Werkzeug und Vorrichtung für
die Verwendung innerhalb des Rahmens anpassen. Zum Beispiel kann
eine Aktivitätsvorlage
als eine eingeschweißte
Software vertrieben oder über
das Internet von einem entfernten Server zur Peer-Einheit 102 heruntergeladen
werden. Die Aktivitätskomponenten
können
als Web-Dokumente angesehen werden, und sie werden bleibend über URLs
dargestellt. Die Aktivitätsvorlage
selbst besitzt bevorzugt eine URL, welche das Verfolgen von Aktivitätsdesignänderungen
ermöglicht.
Die Aktivitätsvorlage
kann eine einzelne Aktivitätsvorlage
oder eine Aktivitätssammlungsvorlage
sein. Eine einzelne Aktivitätsvorlage
betrifft nur eine Aktivität,
wie einen „Chat". Eine Aktivitätssammlungsvorlage
betrifft eine Sammlung von Aktivitäten, wie „Chat und Übersicht".
-
Zum
Hinzufügen
einer neuen Aktivität
wird dem Aktivitätsmanager 214 durch
die oben beschriebenen Mittel die URL einer Vorlage für die neue
Aktivität
bereitgestellt. Zum Öffnen der
neuen Aktivität
oder einer bestehenden Aktivität öffnet der
Aktivitätsmanager
die Vorlage, extrahiert die Vorlageninformationen (wie Komponenten-URLs)
und verbreitet die Information in den geteilten Raum. Ein Kollaborateur
kann bei Bedarf zusätzliche
Aktivitäten
zum geteilten Raum 204 hinzufügen. Nach dem Hinzufügen ist
eine Aktivität „Teil des" geteilten Raumes
und sichtbar für
alle Mitglieder des geteilten Raumes, und jedes Mitglied des geteilten
Raumes besitzt eine Aktivitätsvorlage
für den
geteilten Raum, die auf seiner oder ihrer Peer-Einheit zur Verfügung steht.
-
Jeder
geteilte Raum, wie der geteilte Raum 204, weist ein Tag
zum Identifizieren seines entsprechenden Aktivitätsmanagers 214 und
zum Binden des Aktivitätsmanagers
mit Daten in Zusammenhang mit der Aktivität auf. Bevorzugt befinden sich
die Daten in einem Dokument im lokalen Speicher und jedes Dokument
besitzt ein lokales Register, welches damit über die Tag-Namen verlinkt ist, die im Register
gepflegt werden, um eine Abbildung (Referenzzeiger oder Assoziationen)
in einer erweiterbaren, plattformunabhängigen Art und Weise zwischen
dem Dokument und seinem entsprechenden geteilten Raum auszudrücken.
-
Jede
Aktivität,
wie die Aktivität 205,
umfaßt
ein Werkzeug, wie das Werkzeug 224, und eine Vorrichtung,
wie die Vorrichtung 226. Das Werkzeug 224 zusammen
mit der Benutzerschnittstelle 206 erlauben es einer Aktivität, mit einem
Kollaborateur zu interagieren. Zum Beispiel kann das Werkzeug Benutzerschnittstellenereignisse,
wie Tastatur- oder Mausereignisse, empfangen, die erzeugt werden,
wenn der Benutzer mit der Benutzerschnittstelle 206 interagiert.
Als Antwort auf solche Benutzerschnittstellenereignisse kann das
Werkzeug 224 Datenänderungsanforderungen
an seine entsprechende Vorrichtung 226 stellen. Das Werkzeug 224 implementiert
auch APIs für
das Interagieren mit Hintergrunddiensten.
-
Die
Vorrichtung 226 ist verantwortlich für das Pflegen und Ändern der
Daten, welche den geteilten Raum 204 unterstützen und/oder
aus einer Benutzerinteraktion erhalten durch das Werkzeug 224 resultieren. Sie
reagiert auf Datenänderungsanforderungen
vom Werkzeug 224 mit dem Zurücksenden von Kommandos an das
Werkzeug 224, die notwendig sind, um die Datenänderungsanforderungen
zu implementieren. Unter der Anleitung und Kontrolle des Dynamikmanagers 220,
kann die Vorrichtung 226 Änderungen an der Datenkopie
des geteilten Raumes vornehmen, welche lokal unter Kontrolle des
Speichermanagers 216 gespeichert ist. Wenn diese Änderungen
vorgenommen werden, erzeugt die Vorrichtung 226 asynchron
Datenänderungsbenachrichtigungen.
Das Werkzeug 224 kann sich bei der Vorrichtung 226 anmelden,
um diese Datenänderungsbenachrichtigungen
zu erhalten, damit das Werkzeug 224 die Benutzerschnittstelle
asynchron aktualisieren kann, wenn die Datenänderungen erfolgen.
-
Der
Dynamikmanager 220 empfangt lokale Datenänderungskommandos
vom Werkzeug 224 und empfängt Datenänderungskommandos von anderen
kollaborierenden Computer über
den Kommunikationsmanager 222 von einer Netzverbindung 228.
Diese Kommandos können
für die Übertragung
zwischen Kollaborateuren verschlüsselt
sein und der Dynamikmanager 220 kann den Sicherheitsmanager 230 verwenden, um
die Kommandos zu entschlüsseln.
Der Dynamikmanager 220 trifft Entscheidungen darüber, welche
Kommandos zu implementieren sind, um die Synchronisation unter allen
Kollaborateuren aufrechtzuerhalten, und leitet diese Kommandos an
die Vorrichtung 226 weiter, um die Vorrichtung 226 zu
veranlassen, Änderungen an
der lokalen Datenkopie vorzunehmen.
-
Während des
Betriebs erhält
das kollaborative System 200 die Identität eines
Mitglieds vom Identitätsmanager 210 und öffnet einen
Manager für
den geteilten Raum 212. Das System 200 fordert
dann an, daß der Manager
des geteilten Raumes 212 einen geteilten Raum identifiziert
durch eine URL öffnet
und einen Aktivitätsmanager 214 erzeugt.
Nach dem Erzeugen öffnet
der Aktivitätsmanager 214 eine
Aktivität, üblicherweise durch
Verwendung der URL der Aktivität
zu Identifizieren der Aktivität.
Dann ist das Kollaborationssystem 200 zum Verwenden des
geteilten Raumes durch Mitglieder bereit, um die geteilten, fokussierten
Aufgaben angeboten durch die bestimmte Aktivität durchzuführen.
-
Wie
bereits zuvor erwähnt
werden Datenänderungsanforderungen
erzeugt durch die Vorrichtung 226 in einem „Delta" genannten Behältnis plaziert,
welches verwendet wird, um die Datenänderungsanforderungen an andere
Kollaborateure zu senden. Bei dem veranschaulichenden Kollaborationssystem
ist ein Delta eine atomische Änderungseinheit
in einem geteilten Raum und es ist die einzige Möglichkeit, Änderungen des geteilten Raumes
vorzunehmen, welche eine Vielzahl von Endpunkten betreffen. Der
Dynamikmanager 220 in jedem Endpunkt ist verantwortlich
für das
Sicherstellen, daß die
Datenänderungskommandos
in jedem Delta korrekt ausgeführt
werden, so daß die
Reihenfolgebildung der Datenänderungskommandos
auf einer Vielzahl von Endpunkten in einem geteilten Raum konsistent
ist. Um dies zu tun, arbeitet der Dynamikmanager 220 mit verschiedenen
Vorrichtungen 226 zum Ausführen und „Rückgängigmachen" von Datenänderungskommandos.
-
Der
Dynamikmanager stellt eine Reihe von Rahmen bereit, welche verschiedene
Dienste handhaben, die notwendig sind, um die zuvor erwähnte Kausalitätserhaltung
und Konvergenz sicherzustellen. Zu den Rahmen zählen ein Kommandoausführungsrahmen,
eine Empfehlungsrahmen, ein Verteilungsrahmen und ein Deltaprotokollmanagementrahmen.
-
Zum
Erreichen der Kausalitätserhaltung
weist jedes Delta eine Liste von Abhängigkeiten auf, die andere
Deltas darstellen, welche ausgeführt
werden müssen,
bevor das aktuelle Delta ausgeführt
werden kann. Der Dynamikmanager verwendet die Fähigkeit zum Vornehmen (Ausführen) und
Rückgängigmachen
von Kommandos zum Durchführen
von Wiederholungs- und Überspringen-Operationen
an Deltas zum Erreichen von Konvergenz. Wenn zwei Endpunkte A und
B unabhängig
die Deltas DA bzw. DB erzeugen und ausführen und die Deltas an den
jeweils anderen Endpunkt senden, dann muß ein Endpunkt seine Deltaausführung „Wiederholen", damit beide Endpunkte
konvergieren. Zum Beispiel wird auf dem Endpunkt A Delta DA ausgeführt, bevor
Delta DB empfangen wird. Auf dem Endpunkt B wird Delta DB ausgeführt, bevor
Delta DA empfangen wird. Um Konvergenz sicherzustellen, muß ein Endpunkt
wiederholen. Wenn die korrekte Ausführungsreihenfolge bestimmt
durch den Dynamikmanager Do(DA) Do(DB) ist, dann muß der Endpunkt
B eine Wiederholung durchführen.
Die Reihenfolge der Operationen auf B ist: Do(DB) Undo(DB) Do(DA)
Do(DB). Somit ist die abschließende
Ausführungsreihenfolge
auf beiden Endpunkten die gleiche.
-
Als
Teil des Kommandoausführungsrahmens
stellt der Dynamikmanager 220 auch die Handhabung von Ausnahmen
bereit, welche auftreten, wenn Kommandos ausgeführt werden. Der Dynamikmanager 220 stellt
auch APIs bereit, um es Werkzeugen zu ermöglichen, Rückgängigmachen- und erneute Ausführungsoperationen
auf dem Benutzerlevel auszuführen.
Der Dynamikmanager 220 verwendet die gleiche Implementierung
für das
Rückgängigmachen
und die erneute Ausführung,
die auch von Wiederholungs- und Überspringen-Operationen
verwendet wird, um die Rückgängigmachen-
und erneute Ausführungsoperationen
durch den Benutzer zu unterstützen.
-
Der
Dynamikmanager wendet bei der Operation auch Einschränkungen
an, die durch Vorrichtungen als Teil der Ausführen- und Rückgängigmachen-Verfahren durchgeführt werden
können.
Insbesondere können die
Vorrichtungen während
dieser Verfahren keine Komponenten höherer Levels (wie Ansichten)
aufrufen. Um Vorrichtungen beim Implementieren von Ansichtbenachrichtigungen
zu unterstützen,
stellt der Dynamikmanager 220 einen asynchronen Benachrichtigungsdienst
in Verbindung mit „Empfehlungs"-Elementen bereit.
Diese Elemente werden dem Dynamikmanager 220 bereitgestellt
und der Dynamikmanager 220 benachrichtigt dann asynchron
jede Einheit, welche registriert ist, um diese Benachrichtigungen
zu empfangen. Die Benachrichtigungen werden auch für die Benachrichtigung über Ereignisse
verwendet, bei denen es sich nicht um die Ausführung eines Kommandos handelt.
-
Der
Dynamikmanager 220 ist ferner verantwortlich für das Garantieren,
daß Deltas
von allen aktiven Endpunkten im geteilten Raum gesendet und empfangen
werden. Um dies zu tun, pflegt der Dynamikmanager 220 Kontaktinformationen
für alle
Endpunkte im Raum. Deltas, welche lokal ausgeführt werden, werden auch an
alle Mitglieder des Raumes verbreitet, zum Ausführen auf anderen Endpunkten. Üblicherweise
ist das Kommunikationsnetz zwischen Endpunkten nicht komplett zuverlässig, und
somit ist der Dynamikmanager 220 verantwortlich für die Rückübertragung
von Deltas, die möglicherweise
während
der Übertragung
verloren gegangen sind. Der Dynamikmanager 220 verwendet
die Abhängigkeiten
von Deltas zum Erkennen, ob Deltas fehlen. Der Dynamikmanager 220 sendet
auch periodisch Impulse, wenn es Änderungen im geteilten Raum
gegeben hat. Wie die Deltas enthalten auch die Impulse Abhängigkeiten,
welche verwendet werden können,
um fehlende Deltas zu erkennen.
-
Wenn
der Dynamikmanager 220 erkannt hat, daß ein Delta fehlt, versucht
er normalerweise, das fehlende Delta von einem oder mehreren anderen
Endpunkten im geteilten Raum zu holen. Die Deltas werden in einer
Datenstruktur, Datenprotokoll genannt, in jedem Endpunkt gespeichert,
so daß normalerweise
andere Endpunkte die Anforderung erfüllen können und das fehlende Delta
erneut senden. Der Dynamikmanager 220 bietet auch eine
Schnittstelle, die es anderen erlaubt, Informationen an die Endpunkte
in einem geteilten Raum zu verbreiten.
-
Der
Dynamikmanager 220 pflegt das zuvor erwähnte Deltaprotokoll, welches
alle Deltas enthält,
die im Raum ausgeführt
wurden. Das Protokoll wird aus drei Gründen geführt: die Deltas müssen möglicherweise wiederholt
werden, um Konvergenz sicherzustellen, die Deltas müssen möglicherweise
von einem anderen Endpunkt geholt werden und die Deltas werden möglicherweise
vom Benutzer rückgängig gemacht
oder erneut ausgeführt.
Der Dynamikmanager 220 erkennt, wenn ein Delta aus einem
dieser Gründe
nicht mehr geführt
werden muß.
Zu diesem Zeitpunkt kann der Dynamikmanager 220 das Delta
in einem Verfahren, Eliminierung genannt, aus dem Deltaprotokoll
entfernen. Damit der Dynamikmanager 220 erkennen kann,
daß er ein
Delta nicht mehr benötigt,
muß er
Impulse von allen anderen Endpunkten empfangen. Wenn ein Endpunkt für einen
vorbestimmten Zeitraum keinen Impuls sendet, kann der Dynamikmanager 220 entscheiden,
daß der Endpunkt
ein „Nachzügler" ist. Ein Nachzügler-Endpunkt
ist definiert als ein Endpunkt, der scheinbar die Verbindung zum
geteilten Raum verloren hat. Im Allgemeinen ist es wünschenswert,
einen solchen Endpunkt zeitweilig aus dem Raum zu entfernen, so
daß seine
Deltas aus dem Deltaprotokoll eliminiert werden können, um die
Größe des Deltaprotokolls
zu verringern. Wenn auch andere Endpunkte entscheiden, daß ein Endpunkt ein
Nachzügler
ist, wird der Nachzügler-Endpunkt
vom geteilten Raum getrennt. Wenn der Nachzügler-Endpunkt wieder im geteilten
Raum aktiv wird, muß er
eine neue Kopie des Raumes von einem der aktiven Endpunkte empfangen.
-
Es
sind mehrere Schritte am Prozeß des
Erzeugens und Ausführens
von Datenänderungskommandos in
Deltas beteiligt und viele Komponenten des kollaborativen Systems
sind an diesem Prozeß beteiligt. 3A and 3B zusammengenommen
bilden ein Flußdiagramm,
welches die Hauptschritte veranschaulicht, die an der Erzeugung
eines Deltas und der Einfügung
des Deltas in einen geteilten Raum beteiligt sind. Dieses Flußdiagramm
wird in Verbindung mit 4 beschrieben, welche die Hauptkomponenten
veranschaulicht, die an dem Prozeß beteiligt sind, einschließlich Komponenten
am Quellendpunkt, von dem das Delta erzeugt wird und einem Zielendpunkt,
an den das Delta gesendet wird.
-
Der
Prozeß beginnt
mit Schritt 300 und fährt
fort mit Schritt 302, wo ein Dynamikmanager wie der Manager 420 in
einem Quellendpunkt 400 (der Endpunkt, welcher das Delta
erzeugt) bei der Anforderung eines Werkzeugs 418 ein Delta
erzeugt. Der Dynamikmanager 420 stellt das Delta mittels
XML-Code dar. Ein neu erzeugtes Delta ist ein leeres Behältnis für Datenänderungskommandos.
Die Struktur eines typischen Deltas variiert abhängig vom Typ des Deltas, der
Anzahl der Kommandos enthalten in dem Delta und ob „Rückgängigmachen"-Informationen vorliegen,
die das „Rückgängigmachen" der Kommandos erlauben. 5 zeigt
die grundlegende XML-Codestruktur eines Deltas 500 mit
einem Kommando und ohne Rückgängigmachen-Informationen,
und 6 zeigt die grundlegende XML-Codestruktur eines
Deltas 600 mit zwei Kommandos und Rückgängigmachen-Informationen für beide
Kommandos. Gemäß der typischen
XML-Struktur besteht dieser XML-Code aus einer Vielzahl hierarchischer
Elemente, die miteinander verschachtelt sind. Jedes Element kann
damit in Zusammenhang stehende Attribute und spezifischen Inhalt
aufweisen. Der gesamte XML-Code befindet sich in einem Namensraum,
wo „g" für die URL „urn:groove.net" steht.
-
Das
LDel-Element 502, 602 ist ein lokales Delta-Element
und es weist Attribute auf, die nur für den lokalen Endpunkt relevant
sind. Aus diesem Grund wird dieses Delta-Element nicht an andere
Endpunkte gesendet, wenn die Deltas an andere Endpunkte gesendet
werden. Es weist mehrere Attribute auf. Attribute sind nur dann
in einem Element enthalten, wenn sie relevant sind, deswegen sind
nicht alle Attribute in 5 und 6 gezeigt.
Zu den Attributen des LDel-Elements 502, 602 zählt ein
AssPrevGenDel-Attribut, welches eingestellt ist, wenn das Delta
zum Zweck des Rückgängigmachens
mit einem vorhergehenden Delta in Zusammenhang steht (das heißt die Deltas
werden zusammen rückgängig gemacht).
Das BlkDel-Attribut ist eingestellt, wenn dieses Delta die höchste Priorität im aktuellen
Block hat. Das DeltaToRedoIP- Attribut
ist auf einem erneut auszuführenden
Delta eingestellt. Es wird auf den Einsetzungspunkt des Deltas eingestellt,
welches erneut ausgeführt
wird. Das DoError-Attribut ist eingestellt, wenn das letzte Mal,
als das Delta ausgeführt
wurde, ein Fehler aufgetreten ist.
-
Das
Done-Attribut ist eingestellt, wenn das Delta auf dem Endpunkt ausgeführt wurde.
Es existiert nicht, wenn das Delta nicht ausgeführt wurde. Das Redone-Attribut
ist eingestellt, wenn das Delta rückgängig gemacht und dann erneut
ausgeführt
wurde. Das ReKeys-Attribut enthält
Schlüsselinformationen
für das
Delta, welche beim Verschlüsseln
des Deltas zum Senden an andere Endpunkte verwendet werden. Es existiert nur
an dem Endpunkt, welcher der Erzeuger des Deltas ist. Das SenderUID-Attribut
ist auf die einmalige ID des Senderendpunktes auf Deltas eingestellt,
die aufgrund einer Holen-Anforderung durch den Dynamikmanager 420 empfangen
wurden.
-
Das
Ses-Attribut ist die Delta-Sitzung verwendet bei Rückgängigmachen-
und erneuten Ausführungsoperationen.
Es existiert nur auf dem Endpunkt, welcher das Delta erzeugt hat.
Das Undo-Attribut ist eingestellt, wenn das Delta ein Rückgängigmachen-Delta
ist. Das UndoError-Attribut
ist eingestellt, wenn ein Fehler aufgetreten ist, als das letzte
Mal versucht wurde, das Delta rückgängig zu
machen. Das Undone-Attribut ist eingestellt, wenn ein Delta rückgängig gemacht
wurde. Das URL-Attribut speichert eine URL, wenn für das Delta
eine spezifiziert wurde. Diese URL wird als die Nachrichten-URL
verwendet und erlaubt dem Dynamikmanager das Unterstützen von
Deltafortschrittbenachrichtigungen.
-
Der
Inhalt des LDel-Elements 502, 602 umfaßt das Del-Element 504, 604 und
das SEC-Element 506, 606.
Das Del-Element 504, 604 ist das Delta-Element,
das an andere Endpunkte gesendet wird. Es sei darauf hingewiesen,
daß nur
das Kommando-Element (oder Kommandos-Element) verbreitet wird. Alle Kommando-Rückgängigmachen-Informationen
werden nicht verbreitet. Das Sec-Element 506, 606 ist
das Sicherheitselement, wo der Sicherheitsmanager 414 Delta-spezifische
Sicherheitsinformationen speichern kann.
-
Die
Attribute des Del-Elements 504, 604 umfassen ein
AddEpt-Attribut, welches eingestellt ist, wenn dieses Delta einen
Endpunkt zum geteilten Raum hinzufügt. Ein AddNewEpt-Attribut
ist eingestellt, wenn dieses Delta einen neuen Endpunkt zum geteilten
Raum hinzufügt.
Dieses Attribut wird nur verwendet, wenn ein Kontoraum auf ein neues
Gerät importiert
wird. Ein CR-Attribut enthält
die Konfliktregion des Deltas, die eingestellt ist, wenn das Delta
erzeugt wird. Deltas, die unterschiedliche Konfliktregionen aufweisen,
erfordern keine konsistente Ausführungsreihenfolge.
Deltas ohne Konfliktregion kollidieren mit allen anderen Deltas.
Das CR-Attribut enthält
eine Zeichenkette, und eine leere Zeichenkette zeigt an, daß das Delta
mit allen anderen Deltas kollidieren wird. Wenn zwei unterschiedliche
Regionen auf dem gleichen Delta eingestellt sind, dann ist die Konfliktzeichenkette
auf leer eingestellt, so daß das
Delta mit allen anderen Deltas kollidiert. Üblicherweise weist jedes Werkzeug
eine einmalige Konfliktregion auf, die es auf einem Delta einstellt.
Jedoch stellen Systemwerkzeuge wie der Sicherheitsmanager und Mitgliedsmanager
keine Konfliktregion ein, so daß ihre
Deltas mit allen anderen Deltas kollidieren. Dies ist wichtig, weil
jedes Werkzeug auf die Daten in den Systemwerkzeugen zugreifen kann.
-
Ein
DepSeq-Attribut ist der Satz von Abhängigkeitsfolgen des Deltas.
Dieses existiert möglicherweise nicht,
wenn die einzigen Abhängigkeiten
impliziert sind. Abhängigkeiten
werden unten detaillierter beschrieben.
-
Ein
Gp-Attribut ist die Gruppennummer des Deltas. Ein PurNot-Attribut
ist eingestellt, wenn eine Vorrichtung, welche eines der Kommandos
in dem Delta erzeugt hat, benachrichtigt werden muß, wenn
das Delta eliminiert wird. Ein Seq-Attribut beinhaltet eine Sequenznummer
des Deltas wie unten beschrieben. Ein Version-Attribut beinhaltet
die Version des Dynamikmanagers 420, der das Delta erzeugt
hat.
-
Der
Inhalt des Del-Elements 504, 604 umfaßt ein Kommando-Element 508,
wenn nur ein Kommando vorliegt, oder ein Kommandos-Element 608,
wenn mehr als ein Kommando vorliegt. Dem Kommando-Element 508 folgt
ein Inhaltsabschnitt, welcher den Kommandoinhalt umfaßt, und
dem Kommandos-Element 608 folgt ein Inhaltsabschnitt, welcher
die Kommandos-Elemente 610, 612 für jedes
Kommando in dem Delta umfaßt. Wenn
das Delta nur ein Kommando aufweist, ist das Kommando-Element 508 ein
direkter Nachkomme des Delta-Elements. Wenn das Delta eine Vielzahl
von Kommandos aufweist, so sind diese im Kommandos-Element 608 enthalten,
welches ein direkter Nachkomme des Deltas ist. Die Cmd-Elemente 508, 610 und 612 stehen
jeweils für
ein Kommando in dem Delta. Der Inhalt und die meisten der Attribute
dieser Elemente sind eingestellt durch die Vorrichtung, welche das
Kommando erzeugt hat. Zu den Attributen zählt ein EngineURL-Attribut,
welches auf die URL der Vorrichtung eingestellt ist, welche das
Kommando erzeugt hat. Ein PurNot-Attribut ist eingestellt, wenn
die Vorrichtung, welche das Kommando erzeugt hat, eine Benachrichtigung
erfordert, wenn das Kommando eliminiert wird.
-
Wenn
keine Rückgängigmachen-Informationen
für das
Kommando vorliegen, wird ein leerer Kommentar „<!--->" 510 als
ein Platzhalter verwendet. Wenn Rückgängigmachen-Informationen vorliegen,
enthält ein
CmdU-Element 614, 616 Kommando-Rückgängigmachen- Informationen für eines
der Kommandos im Delta. Der Inhalt und die Attribute auf diesem
Element sind eingestellt durch die Vorrichtung, welche das Kommando
ausgeführt
hat.
-
Wenn
ein Delta erzeugt wird, ist es ein ungebundenes oder unabhängiges XML-Codefragment innerhalb
eines größeren, bleibenden
XML-Dokuments 440, welches die Deltas im Dynamikmanager 420 darstellt. Eine
typische XML-Darstellung des Dokuments 440 ist in 7 gezeigt.
Das XML-Dokument 700 umfaßt ein EngineData-Element 702,
welches das Stammelement für
das Dynamikmanager-Dokument ist. Der Inhalt dieses Elements umfaßt eine
Reihe weiterer Elemente. Zu diesen zählen ein BlockedDels-Element 704,
welches der Ursprung für
alle Deltas ist, die blockiert werden. Dieses Element wird als ein
Ursprung für
alle Nachrichten verwendet, die blockiert werden. Es enthält ein EptPul-Element,
welches ein Impuls-Element von einem unterschiedlichen Element enthält, und
ein LocalDel-Element, welches ein Delta einschließlich Informationen
spezifisch für
den lokalen Endpunkt darstellt. Ein CmdU-Element 706 dient
als ein leeres Nur-Lese-Kommando-Rückgängigmachen-Element. Es wird
als das Rückgängigmachen-Element
für alle
Kommandos verwendet, welche keine expliziten Rückgängigmachen-Informationen aufweisen.
Die Attribute und der Inhalt des CmdU-Elements sind spezifisch für die Vorrichtung,
welche das Kommando ausführt.
-
Hin
und wieder kann der Dynamikmanager 420 CmdU-Elemente erzeugen,
die später
als überflüssig bestimmt
werden. Diese CmdU-Elemente werden für die zukünftige Verwendung in CmdUParent-Elementen gespeichert.
Zum Beispiel werden die CmdUParent-Elemente 708 und 710 als
Ursprünge
für zusätzliche
CmdU-Elemente verwendet. Ein DelHldr-Element 712 wird verwendet,
um eine Datenstruktur, „Delta-Halter" 442 genannt,
darzustellen. Diese Struktur ist unten detaillierter beschrieben. Ähnlich stellt
das DelLog-Element 714 eine Datenstruktur, „Deltaprotokoll" 438 genannt,
dar. Auch diese ist unten detailliert beschrieben.
-
Ein
DisconnectNotifications-Element 716 wird als ein temporärer Ursprung
für eingehende
Trennbenachrichtigungen verwendet. Ein Disseminator-Element 718 wird
verwendet, um Elemente darzustellen, welche darauf warten, an andere
Endpunkte gesendet oder „verbreitet" zu werden. Auch
diese Struktur ist unten detailliert beschrieben. Ein Epts-Element 720 wird
verwendet, um Endpunkte in dem geteilten Raum darzustellen. Es wird
unten detaillierter beschrieben. Ein InboundDeltas-Element 722 wird
als eine temporäre
Schlange für
eingehende Nachrichten an den Dynamikmanager 420 verwendet
und es wird unten beschrieben. Es enthält ein Del-Element, welches
den Teil eines Deltas darstellt, der allen Endpunkten gemeinsam
ist, ein DisNtfy-Element, welches eine Trennbenachrichtigung von
einem unterschiedlichen Endpunkt enthält, ein EptPul-Element, welches
ein Impulselement von einem unterschiedlichen Element enthält und ein
LocalDel-Element, welches ein Delta einschließlich Informationen spezifisch
für den
lokalen Endpunkt enthält.
-
Zu
den Attributen des EngineData-Elements 702 zählen ein
Blocked-Attribut, welches den Einsetzungspunkt eines Deltas enthält, welches
den Dynamikmanager 420 veranlaßt hat, in einen blockierten
Zustand zu wechseln. Ein BlockedCount-Attribut enthält die Anzhal,
wie oft der Dynamikmanager 420 blockiert wurde. Ein Divergent-Attribut
ist eingestellt, wenn der Dynamikmanager 420 für einen
geteilten Raum von anderen Mitgliedern des geteilten Raumes abweichend
ist. Das Attribut ist eingestellt auf eine Zeichenkette, welche
den Grund für
die Abweichung darstellt. Ein LastEptPulse-Attribut enthält die Zeit,
zu welcher der lokale Endpunkt zum letzten Mal eine Impulsnachricht
gesendet hat. Ein PurgingDisabled-Attribut ist eingestellt, wenn
das Eliminieren deaktiviert ist. Ein UnackedDel-Attribut ist eingestellt,
wenn ein Delta existiert, welches nicht durch einen Impuls quittiert
wurde. Wie unten detailliert diskutiert werden wird, werden dieser
letzten drei Attribute verwendet, wenn das oben erwähnte Deltaprotokoll
periodisch eliminiert wird. Ein PingSeq-Attribut enthält eine
Folgenummer, welche das letzte Mal anzeigt, wann ein Relaisserver
kontaktiert wurde. Ein Uninvited-Attribut ist eingestellt, wenn
der lokale Endpunkt aus dem Raum ausgeladen wurde. Ein Version-Attribut enthält die Version
des Dynamikmanager-Datenmodells. Und schließlich wird ein Watermark-Attribut verwendet,
um den im lokalen Cache gespeicherten Zustand konsistent mit dem
bleibenden Zustand zu halten, indem erkannt wird, wenn Transaktionen
abgebrochen werden.
-
Dieses
bleibende XML-Dokument 440 wird durch einen Speichermanager 216 gepflegt.
Ein Speichermanager 216, der für die Verwendung mit der vorliegenden
Erfindung geeignet ist, ist in der zuvor erwähnten US-Patentanmeldung mit
der Seriennummer 09/588,195 detailliert beschrieben. Zusätzlich zum
Erzeugen der bleibenden XML-Darstellung 440 erzeugt der
Dynamikmanager 420 ein COM-Objekt, welches das Delta darstellt.
Das letztgenannte Objekt implementiert eine Reihe von Schnittstellen,
welche das Werkzeug 418 verwenden kann, um Kommandos zu
dem Delta hinzuzufügen
und Eigenschaften des Deltas einzustellen.
-
Das
Erzeugen eines Deltas erzeugt auch automatisch eine Transaktion
in einer Transaktionsdatenbank, welche mit dem geteilten Raum in
Zusammenhang steht (nicht gezeigt). Transaktionen stellen ein exklusives
Verfahren des Zugriffs auf die Datenbank des geteilten Raumes bereit
und ermöglichen
es, sämtliche Änderungen
komplett rückgängig zu
machen, die aufgrund eines bestimmten Deltas eingeleitet wurden.
Eine Transaktion wird abgebrochen, wenn das Delta, welches die Transaktion
erzeugt hat, abgebrochen wird, oder wenn während der Deltaaus führung Fehler
auftreten. Die Transaktion wird übergeben,
wenn das Delta übergeben
und erfolgreich ausgeführt
wird.
-
Als
nächstes
fügt das
Werkzeug 418 in Schritt 304 ein oder mehrere Datenänderungskommandos
zum Deltabehältnis
hinzu, entweder direkt oder durch die Verwendung von „erzeugungsverschachtelten" Deltas, wie unten
beschrieben. Ein Kommando ist eine Änderungseinheit erzeugt und
ausgeführt
durch eine Vorrichtung wie die Vorrichtung 430, und ein
Delta ist eine Gruppierung von Kommandos mit der Absicht, daß alle diese
Kommandos immer zusammen ausgeführt
werden. Daher ist ein Delta „atomisch" in dem Sinne, daß entweder
alle Kommandos in dem Delta ausgeführt werden oder keines wird
ausgeführt.
Es gibt eine Ausnahme zu dieser Regel, welche während der Handhabung von Ausnahmen
während
der Kommandoausführung
stattfindet, und sie wird unten diskutiert.
-
Die
Schnittstellen auf dem COM-Objekt, welches mit dem Delta erzeugt
wird und dieses darstellt, ermöglichen
das Hinzufügen
von Kommandos zu dem Delta. Ein Kommando wird mit Hilfe des Dynamikmanagers 420 hinzugefügt, um ein
leeres Kommando-XML-Element (ein Cmd-Element) innerhalb des zuvor
erwähnten
XML-Fragments zu erzeugen, welches das Delta innerhalb des XML-Deltadokuments
darstellt. Zu dem Zeitpunkt, zu dem das Delta erzeugt wird, muß dem Dynamikmanager 420 eine
bindbare URL einer Vorrichtung wie der Vorrichtung 430 bereitgestellt
werden, welche später
das Kommando ausführt.
Obwohl in 4 nur eine Vorrichtung 430 gezeigt
ist, dürfte
dem Fachmann auf dem Gebiet verständlich sein, daß eine Vielzahl
von Vorrichtungen vorliegen kann. In der folgenden Beschreibung
wird die Vorrichtung 430 verwendet, um auf alle diese Vorrichtungen
zu verweisen. Diese URL ist ein einmaliger Name dieser Vorrichtung,
so daß der
Dynamikmanager die Vorrichtung später finden kann, wenn sie benötigt wird.
Das zuvor erwähnte
EngineURL-Attribut ist auf das zutreffende XML-Kommandoelement eingestellt. Der Erzeuger
des Deltas kann dann sämtliche
Attribute und Inhalte hinzufügen,
die zum Ausführen
des Kommandos erforderlich sind. Zum Beispiel besitzt eine Vorrichtung,
welche einen Skizzenblock implementiert, Kommandos zum Zeichnen
von Objekten. Wenn der Benutzer ein Objekt auf dem Skizzenblock
zeichnet, wird ein Kommando mit Attributen erzeugt, welche die Form,
Farbe und Position des Objekts beschreiben. Wenn dieses Kommando
ausgeführt wird,
werden sowohl auf dem Quellendpunkt, welcher das Delta erzeugt hat,
als auch auf den entfernten Zielendpunkten die Änderungen in dem Kommando auf
das Datenmodell 432 in Zusammenhang mit der Vorrichtung 430 angewandt.
-
Eine
alternative Art und Weise, um Kommandos zu einem Delta hinzuzufügen, ist
durch „erzeugungsverschachtelte" Deltas. Erzeugungsverschachtelte
Deltas bieten eine einfache Möglichkeit,
Komponenten zu kombinieren, um komplexere Werkzeuge herzustellen.
Zum Beispiel könnte
ein Werkzeug eine Reihe anderer Komponenten verwenden, welche andere
Werkzeuge sein können.
Wenn der Benutzer eine Handlung in dem Werkzeug ausführt, erzeugt
dieses Werkzeug einen Delta-Behälter.
Das Werkzeug ruft dann die anderen Komponenten auf, um Kommandos
zu dem Deltabehälter
hinzuzufügen.
Anstelle des direkten Hinzufügens
von Kommandos zu dem Delta kann ein Werkzeug ein weiteres Delta
erzeugen und dieses neue Delta zu dem ersten Delta hinzufügen. Aufgrund
der Erzeugung dieses Deltas verschachtelt innerhalb der Erzeugung
eines weiteren Deltas wird es ein erzeugungsverschachteltes Delta
genannt. Zum Beispiel könnte
ein Satz von Schritten während
der Erzeugung eines Deltas Folgender sein:
- Delta 1 erzeugt
Kommando
A hinzugefügt
Delta
2 erzeugt (dieses ist erzeugungsverschachtelt)
Kommando B erzeugt
Delta
2 übergeben
Kommando
C hinzugefügt
- Delta 1 übergeben
-
Die
XML-Struktur eines Deltas 800, welches zwei erzeugungsverschachtelte
Deltas enthält,
von denen beide Rückgängigmachen-Informationen
aufweisen, ist in 8A und 8B zusammengenommen
gezeigt. Ein erzeugungsverschachteltes Delta weist die gleichen
Elemente auf wie ein Standard-Delta mit einigen Änderungen am Kommando-Element.
Zum Beispiel ist ein Nested-Attribut
im Cmd-Element eingestellt, wenn das Kommando als Teil eines erzeugungsverschachtelten
Deltas erzeugt wurde. Das Nested-Attribut ist auf die ID des erzeugungsverschachtelten
Deltas eingestellt. Außerdem
ist ein Nord-Attribut auf dem Cmd-Element auf die Ordnungszahl des
Kommandos innerhalb des verschachtelten Deltas eingestellt.
-
Wenn
ein erzeugungsverschachteltes Delta wie unten beschrieben übergeben
wird, werden alle Kommandos in dem Delta ausgeführt, genau wie dies bei einem
nichtverschachtelten Delta der Fall wäre. Jedoch fügt anstelle
des Speicherns des Deltas in einem Deltaprotokoll 438 nach
dem Ausführen
der Kommandos der Dynamikmanager 420 die Kommandos und
Rückgängigmachen-Informationen
automatisch zum Beginn des enthaltenden Deltas hinzu. Wenn das enthaltende
Delta abgebrochen wird, werden auch die erzeugungsverschachtelten
Deltakommandos abgebrochen. Wenn das enthaltende Delta durchgeführt wird,
wurden die erzeugungsver schachtelten Kommandos bereits ausgeführt und
sie werden nicht noch einmal ausgeführt. Es sei darauf hingewiesen,
daß Kommandos
im abschließenden
enthaltenden Delta in der Reihenfolge vorliegen, wie sie ausgeführt werden.
Weil sie nicht ausgeführt
werden, bis das Delta, in dem sie enthalten sind, ausgeführt wurde,
ist die Ausführungsreihenfolge
der Kommandos in Delta 1 oben B, A, C.
-
Wenn
ein Werkzeug wie das Werkzeug 418 das Hinzufügen von
Kommandos zu dem Delta abgeschlossen hat, kann das Werkzeug 418 das
Delta in Schritt 306 entweder übergeben oder abbrechen. Wenn das
Delta abgebrochen wird, wird keines der Kommandos ausgeführt und
die auch Transaktion, die gestartet wurde, als das Delta erzeugt
wurde, wird abgebrochen. Weil in diesem Fall nichts weiter passiert,
wird angenommen, daß das
Delta in Schritt 306 übergeben
wird. Wenn ein Delta übergeben
wird, führen
die übrigen Schritte
tatsächlich
die Kommandos in dem lokalen Endpunkt aus und verbreiten das Delta
und seine Kommandos an die Zielendpunkte. Die Transaktion, die gestartet
wurde, als das Delta erzeugt wurde, wird nicht übergeben, bis das Delta ausgeführt und
zur Verbreitung aufgereiht worden ist.
-
Als
nächstes
bestimmt in Schritt 308 der Dynamikmanager 420,
wo das neu übergebene
Delta in ein Deltaprotokoll 438 eingefügt wird. Das Deltaprotokoll
ist eine XML-Datenstruktur, die eigentlich Teil des XML-Dokumentes 440 im
Dynamikmanager 420 ist. Die Struktur weist eine typische
XML-Codestruktur wie die in 9A und 9B zusammengenommen
gezeigte auf.
-
Die
XML-Struktur des Deltaprotokolls besteht aus mehreren Elementen,
einschließlich
eines DelLog-Elements 902, welches das Deltaprotokoll darstellt.
Das DelLog-Element 902 weist mehrere Attribute auf, einschließlich eines
NeedToDelete-Attributs, welches eingestellt ist, wenn es Gruppen
gibt, die eliminiert, jedoch noch nicht gelöscht wurden. Ein PenGrpNum-Attribut enthält die Zahl
der höchsten
Gruppe, deren Eliminierung ansteht, d.h. die zum Eliminieren berechtigt
erklärt
wurde. Ein PurGrpNum-Attribut enthält die Zahl der höchsten Gruppe,
die eliminiert wurde.
-
Das
DelLog-Element 902 umfaßt auch weitere Elemente als
seinen Inhalt. Dazu zählen
ein oder mehrere DelBlk-Elemente 904 und 922,
von denen jedes einen Block von Deltas darstellt. Deltablöcke werden
verwendet zum Implementieren von Prioritätsdeltas wie unten beschrieben.
Innerhalb eines Blocks sind die Deltas nach der Gruppe organisiert.
Jeder Block weist ein Inhaltselement für jede Gruppe von der ersten
Gruppe in dem Block zur höchsten
Gruppe in dem Block auf, selbst wenn die Gruppe keine Deltas innerhalb
des Blocks aufweist.
-
Jedes
DelBlk-Element, zum Beispiel das Element 904, enthält ein oder
mehrere DelGrp-Elemente 906, 912 und 914,
von denen jedes eine Gruppe von Deltas darstellt. Eine Deltagruppe ist
ein Satz von Deltas organisiert in Ketten. Es gibt ein XML-Element
für jede
Kette innerhalb einer Gruppe. Die Ketten sind nach ansteigender
Erzeuger-ID des Endpunktes, welcher die Kette erzeugt hat, geordnet.
Ein DelGrp-Element 906 kann zwei Attribute aufweisen: ein
DoneTime-Attribut,
welches den Zeitpunkt enthält,
zu dem die nächste Gruppe
erzeugt wurde, und ein Number-Attribut, welches die Nummer der Gruppe
enthält.
-
Jedes
DelGrp-Element, zum Beispiel das Element 906, enthält ein oder
mehrere DelChn-Elemente 908,
welche eine Kette von Deltas darstellen. Jedes DelChn-Element 908 weist
ein CreatorID-Attribut auf, welches die ID des Erzeugers der Kette
enthält.
Jedes DelChn-Element 908 enthält ein oder mehrere LDelChn-Elemente 910,
von denen jedes ein Delta darstellt.
-
Jede
Position in dem Deltaprotokoll 438 weist eine einmalige
Adresse auf, ein „Einsetzungspunkt" genannt. Ein neues
Delta wird immer am Ende des Deltaprotokolls 438 eingefügt und dementsprechend
muß zum
Einfügen
eines neuen Deltas der Einsetzungspunkt, welcher dem Ende des Deltaprotokolls 438 entspricht,
bestimmt werden. Bei einer Ausführungsform
besteht jeder Einsetzungspunkt aus der Kombination einer Gruppennummer,
einer Erzeuger-ID und einer Folgenummer. Die Erzeuger-ID wiederum
besteht aus einer Kombination einer Endpunkt-ID und einer Zufallszahl als Erzeuger-ID.
Die Endpunkt-ID ist eine Kombination (zum Beispiel ein Rautenzeichen)
der Geräte-URL
und der Kontakt-URL des Endpunktes und ist ein einmaliger Identifikator
des Endpunktes. Jedes Mal, wenn ein Endpunkt einen geteilten Raum öffnet, wird
dem Endpunkt eine neue Zufallszahl als Erzeuger-ID zugewiesen. Die
Erzeuger-ID ist dazu gedacht, das Auftreten von Kollisionen während des
Einfügens
eines neuen Deltas in das Deltaprotokoll mit Deltas erzeugt durch
den gleichen Endpunkt zu vermeiden. Diese Kollisionen können in
Fällen
eines Systemcrashs oder einer Wiedereinladung in einen geteilten
Raum auftreten, was dazu führt,
daß der
Endpunkt seine interne Aufzeichnung vorausgehender Deltas, die er
erzeugt hatte, verliert.
-
Nachdem
die Erzeuger-ID bestimmt wurde, kann die Gruppennummer bestimmt
werden. Bei einer bestimmten Ausführungsform in der Diskussion
und wie oben dargelegt, sammelt das Deltaprotokoll 438 Deltas in
Ketten und Ketten in Gruppen. Eine Kette besteht aus Deltas erzeugt
durch den gleichen Erzeuger bis zu einer vorbestimmten maximalen
Zahl von Deltas. Zum Bestimmen der Gruppennummer bestimmt der Dynamikmanager 420 zuerst,
ob das neu durchgeführte
Delta zu der letzten gebildeten Kette hinzugefügt werden kann, d.h., ob die
Kette Deltas von dem Erzeuger enthält, und daß sich weniger als die maximale
Anzahl von Deltas bereits auf der Kette befindet. Wenn das Delta
zu dieser letzten Kette hinzugefügt
werden kann, ist die Gruppennummer die Nummer der Gruppe, welche
die letzte Kette enthält.
Wenn das Delta nicht hinzugefügt werden
kann, muß eine
neue Kette erzeugt werden.
-
Als
nächstes
muß eine
Bestimmung durchgeführt
werden, ob die neue Kette in der aktuellen Gruppe erzeugt werden
kann oder ob eine neue Gruppe erzeugt werden muß. Gemäß der Ausführungsform müssen innerhalb
jeder Gruppe die Ketten in ansteigender Reihenfolge nach der Erzeuger-ID
vorliegen. Weil sich der Einsetzungspunkt für das neue Delta am Ende des
Deltaprotokolls 438 befinden muß, muß die Erzeuger-ID für das neue
Delta mit der Erzeuger-ID der letzten Kette in dem Deltaprotokoll
verglichen werden. Wenn diese größer ist,
dann kann die neue Kette zur letzten Gruppe hinzugefügt werden,
und die Nummer dieser Gruppe ist die Gruppennummer für das Delta.
-
Ansonsten
muß eine
neue Gruppe erzeugt werden. Die neue Gruppe, und das neue Delta,
weisen eine Nummer auf, die um eins höher ist als die vorherige Gruppe.
Schließlich
wird die Folgenummer bestimmt. Das erste durch einen Erzeuger erzeugte
Delta hat eine Folgenummer „1". Jedes nachfolgend
erzeugte Delta hat eine Folgenummer, die um eins höher ist
als die des vorherigen Deltas.
-
Zusammengenommen
sind die Erzeugungs-ID und die Folgenummer eine Nummer, „Deltafolge" genannt. Die Gruppennummer
ist verknüpft
mit der Deltafolge zum Erzeugen des Einsetzungspunktes. Um das Indexieren
zu vereinfachen, werden die Gruppennummer und die Folge als separate
Attribute auf dem Delta gespeichert.
-
In
Schritt 308 wird der Einsetzungspunkt auf das Delta „gestempelt", indem der berechnete
Wert in das Delta-Attribut eingefügt wird, jedoch wird das Delta
zu diesem Zeitpunkt nicht automatisch in das Deltaprotokoll 438 eingefügt. Der
Einsetzungspunkt muß in
das Delta eingeschlossen sein, weil bestimmte Spezialkommandos wie
das Hinzufügen
eines Mitglieds zum geteilten Raum den Deltaeinsetzungspunkt verwenden.
Es wäre theoretisch
möglich,
das Delta zu diesem Zeitpunkt tatsächlich an der korrekten Stelle
im Deltaprotokoll 438 zu plazieren, jedoch ließe sich
dadurch das „Delta-Rückgängigmachen"-Kommando viel schwieriger
implementieren.
-
Nachdem
der Einsetzungspunkt gestempelt wurde, führt der Dynamikmanager 420 in
Schritt 310 die Kommandos in dem Delta aus (dieser Prozeß wird „Ausführen des
Deltas" genannt).
Zum Durchführen
dieses Schrittes iteriert der Dynamikmanager 420 über alle
Kommando-Elemente und öffnet
das Attribut, welches die bindbare URL der Vorrichtung enthält, welche
das Kommando ausführen
soll. Der Dynamikmanager 420 verbindet sich dann mit dieser
Vorrichtung – dieser
Prozeß nimmt
die URL und findet die Vorrichtung, welche mit dieser URL in Zusammenhang
steht. Nachdem der Dynamikmanager 420 die Vorrichtung lokalisiert
hat (zum Beispiel Vorrichtung 430), ruft er die Vorrichtung 430 auf,
das Kommando auszuführen.
Zusätzlich
zum Bereitstellen des Kommando-Elements, welches das Kommando beschreibt,
an die Vorrichtung 430, stellt der Dynamikmanager 420 auch
ein leeres Kommando-Rückgängigmachen-Element
an die Vorrichtung 430 bereit. Die Vorrichtung 430 kann
dieses Element verwenden, um alle Informationen zu speichern, welche
möglicherweise
im Anschluß zum
Rückgängigmachen
oder Umkehren der Ausführung
des Kommandos benötigt
wird. Wenn die Vorrichtung 430 Informationen zu dem Kommando-Rückgängigmachen-Element
hinzufügt,
wird das Element in dem Delta gespeichert. Aus Gründen der
Leistung verwendet, wenn die Vorrichtung 430 keine Informationen
in dem Rückgängigmachen-Element
speichert, der Dynamikmanager 420 dann einen leeren Kommentar
als Platzhalter für
das Rückgängigmachen-Element in dem Delta.
-
Die
beim Ausführen
eines Kommandos durchgeführten
Schritte sind abhängig
von der Vorrichtung, welche das Kommando ausführt, und dem Kommando, welches
ausgeführt
wird. Eine Vorrichtung 430 führt das Kommando aus und wendet
alle Änderungen
auf sein bleibendes Datenmodell 432 an. Die Vorrichtung 430 kann
auch „Empfehlungen" erzeugen, die sie
asynchron benachrichtigen, daß die Änderung
erfolgt ist. Häufig
fügt sie
Rückgängigmachen-Informationen zu
dem Kommando-Rückgängigmachen-Element
hinzu, wobei die Rückgängigmachen-Informationen
notwendig sein können,
wenn das Kommando in der Zukunft rückgängig gemacht werden muß. Jede
Vorrichtung 430 kann auch eine Zugangskontrollprüfung durchführen, um
sicherzustellen, daß der
Erzeuger des Deltas die Erlaubnis hat, dieses Kommando durchzuführen. Diese Prüfung erfolgt
auf jedem Endpunkt, bevor das Kommando ausgeführt wird. Wenn einer der Endpunkte
keine Erlaubnis hat, so kann die Vorrichtung 430 eine Ausnahme
zulassen, die wie unten beschrieben gehandhabt wird.
-
Außerdem kann
die Vorrichtung 430 ausführungsverschachtelte Deltas
erzeugen. Ein ausführungsverschachteltes
Delta wird während
der Ausführung
von Kommandos in einem anderen Delta erzeugt. Ausführungsverschachtelte
Deltas sind ähnlich
erzeugungsverschachtelten Deltas, außer daß sie erzeugt werden, während die
Kommandos in dem enthaltenden Delta ausgeführt werden, anstatt wenn das
enthaltende Delta erzeugt wird. Wenn erzeugungsverschachtelte Deltas
ausgeführt
werden, wie oben diskutiert, werden Kommandos und Rückgängigmachen-Informationen
zu dem enthaltenden Delta hinzugefügt. Jedoch werden, wenn ausführungsverschachtelte
Deltas ausgeführt
werden, die Kommandos, die sie enthalten, und sämtliche Rückgängigmachen-Informationen für diese
enthaltenen Kommandos in den Rückgängigmachen-Informationen
des enthaltenden Deltas gespeichert.
-
Erzeugungsverschachtelte
Deltas werden nur auf dem Endpunkt 400 erzeugt, welcher
das Delta erzeugt, und die Kommandos darin werden dann automatisch
auf allen Endpunkten ausgeführt,
welche das enthaltende Delta ausführen. Im Gegensatz dazu werden
ausführungsverschachtelte
Deltas üblicherweise
auf allen Endpunkten erzeugt, welche das enthaltende Delta ausführen. Die
Kommandos in ihnen werden nicht verbreitet, also müssen sie
möglicherweise
auf jedem Endpunkt erzeugt werden, welcher das enthaltende Delta ausführt. Das
Ausführen
des Deltas kann unterschiedliche Auswirkungen auf unterschiedliche
Endpunkte haben, zum Beispiel, aufgrund von Unterschieden in der
Rolle des Mitgliedes, welches das Delta ausführt. In diesen Fällen können die
Rückgängigmachen-Informationen
unterschiedlich sein und ausführungsverschachtelte Deltas
müssen
möglicherweise
nicht erzeugt werden oder sie können
unterschiedlich sein. Zugangskontrollprüfungen erfolgen in ausführungsverschachtelten
Deltas nicht, da die Prüfung
durch das enthaltende Delta ausreichend ist.
-
Wenn
ein Delta rückgängig gemacht
wird, macht der Dynamikmanager 420 sämtliche ausführungsverschachtelten
Deltas rückgängig, bevor
er das Kommando rückgängig macht,
welches das Erzeugen des ausführungsverschachtelten
Deltas veranlaßt
hat.
-
Ausnahmen,
welche während
der Kommandoausführung
auftreten, werden durch den Dynamikmanager 420 gehandhabt.
Die Ausnahmehandhabung in dem Fall, wenn das Delta auf dem Endpunkt 400 ausgeführt wird,
welcher es erzeugt hat, ist geradlinig. Die Ausnahme wird an das
Werkzeug 430 übermittelt,
welches versucht, das Delta zu übergeben.
Es ist unbedingt darauf zu achten, daß jegliche Änderungen, die bereits als Teil
dieses Deltas vorgenommen wurden, rückgängig gemacht werden. Um sicherzustellen,
daß diese Änderungen
rückgängig gemacht
werden, erzeugt der Dynamikmanager 420 eine „Transaktion" um die Ausführung jeden
Kommandos. Wenn eine Ausnahme während
der Ausführung
des Kommandos auftritt, dann wird die Transaktion um dieses Kommando
abgebrochen. Dieser letztgenannte Prozeß macht sämtliche Änderungen rückgängig, die als Ergebnis der
teilweisen Ausführung
des Kommandos erfolgt sind.
-
Danach
ruft der Dynamikmanager 420 andere geeignete Vorrichtungen
auf, um sämtliche
anderen Kommandos rückgängig zu
machen, die bereits als Teil des Deltas ausgeführt wurden. Diese Aufrufe erlauben den
Vorrichtungen das Rückgängigmachen
jeglicher Informationen, die nicht Teil des geteilten Raumes sind und
dementsprechend nicht automatisch rückgängig gemacht werden, wenn der
Dynamikmanager 420 die Transaktion abbricht, welche das
gesamte Delta enthält.
Zusätzlich
zu der Transaktion um die Ausführung
jeden Kommandos führt
der Dynamikmanager 420 jedes Delta innerhalb einer Transaktion
aus. Nachdem die Vorrichtungen aufgerufen wurden, jegliche erfolgreich
ausgeführten
Kommandos rückgängig zu
machen, bricht der Dynamikmanager 420 auch diese letztgenannte
Transaktion ab. Diese Transaktion stellt sicher, daß jegliche Änderungen
in dem geteilten Raum, die als Teil des Deltas erfolgt sind und
nicht korrekt rückgängig gemacht
wurden, automatisch rückgängig gemacht
werden. Wenn der Dynamikmanager 420 sichergestellt hat,
daß die
als Teil des Deltas, welches die Ausnahme aufwies, erfolgten Änderungen
rückgängig gemacht wurden,
sendet er den ursprünglichen
Fehler zurück
an das Werkzeug 430, welches versucht hat, das Delta zu übergeben.
-
Nach
der Ausführung
fügt der
Dynamikmanager 420 in Schritt 312 das neue Delta
in das Deltaprotokoll 438 ein. Dieser Schritt ist geradlinig,
da der Dynamikmanager 420 bereits in Schritt 308 den
korrekten Einsetzungspunkt für
das Delta bestimmt hat. Der Prozeß fährt dann über die Konnektoren 314 und 316 fort
mit Schritt 318.
-
Wie
zuvor beschrieben ist eine wichtige Eigenschaft eines Kollaborationssystems „Kausalität", welche erfordert,
daß, wenn
ein aktuelles Datenänderungskommando
empfangen von einem ersten Kollaborateur durch einen zweiten Kollaborateur
ausgeführt
wird, der zweite Kollaborateur bereits alle vorhergehenden Datenänderungskommandos
ausgeführt
hat, die der erste Kollaborateur schon ausgeführt hatte, als das aktuelle Datenänderungskommando
erzeugt wurde. Eine der durch den Dynamikmanager 420 bereitgestellten
Haupteigenschaften ist die „vorherige
Ausführung". Insbesondere stellt
der Dynamikmanager 420 sicher, daß ein Endpunkt kein Delta ausführt, bis
er alle Deltas ausgeführt
hat, die durch den Erzeuger des Deltas bereits ausgeführt worden
waren als das Delta erzeugt wurde. Zum Sicherstellen der vorherigen
Ausführung
werden in Schritt 318 Abhängigkeiten in jedem Delta gespeichert.
-
Deltaabhängigkeiten
beschreiben alle vorhergehenden Deltas, die auf dem Endpunkt ausgeführt wurden,
welcher das Delta erzeugt hat. Zum Beispiel ist die folgende Transaktion
in Betracht zu ziehen, die in fünf Schritten
stattfindet:
- 1) Endpunkt A erzeugt Delta A1.
- 2) Endpunkt A erzeugt Delta A2.
- 3) Nach Empfang von Delta A2 erzeugt Endpunkt B Delta B1.
- 4) Nach Empfang von Delta B1 erzeugen die Endpunkte A und B
gleichzeitig die Deltas A3 und B2.
- 5) Nach Empfang der Deltas A3 und B2 erzeugt der Endpunkt C
Delta C1.
-
In
dieser Situation ist für
jedes Delta, wie Delta A2, 2 die Folgenummer, und A ist als ein
Kurzschriftvermerk für
die Erzeugungs-ID wie oben beschrieben gedacht. Somit steht der
Vermerk A2 für
die Deltafolge. „Gleichzeitige" Erzeugung bedeutet,
daß der
Endpunkt A Delta A3 erzeugt, bevor er Delta B2 empfängt, und Endpunkt
B erzeugt Delta B2, bevor er Delta A3 empfangt. Die entstehenden
Deltas sollen „unabhängig" sein.
-
Eine
Möglichkeit
zum Angeben der Abhängigkeiten
wäre das
Stempeln jeden Deltas mit den Deltafolgen aller Deltas, die zuvor
ausgeführt
wurden. Wenn dies in dem oben angegebenen Beispiel erfolgt, wäre der Abhängigkeitssatz
auf jedem Delta wie in der folgenden Deltaliste in Klammern angegeben:
A1
{}
A2 {A1}
B1 {A1,A2}
A3 {A1,A2,B1}
B2 {A1,A2,B1}
C1
{A1,A2,B1,A3,B2}
-
Wenn
immer mehr Deltas erzeugt werden, wächst der Satz von Abhängigkeiten
kontinuierlich an. Um die Zahl der Abhängigkeiten zu verringern, werden
implizite Abhängigkeiten
eliminiert. Zum Beispiel ist Delta B1 abhängig von Delta A2 und Delta
A2 ist abhängig
von Delta A1. Daher ist die Abhängigkeit
von Delta B1 von Delta A1 bereits in der A2-Abhängigkeit von Delta B1 impliziert.
Die Eliminierung dieser impliziten Abhängigkeiten führt zu den
folgenden expliziten Abhängigkeiten
auf den Deltas:
A1 {}
A2 {A1}
B1 {A2}
A3 {B1}
B2
{B1}
C1 {A3,B2}
-
Als
eine weitere Optimierung kann eine implizite Abhängigkeit eines Deltas von einem
vorhergehenden Delta von dem gleichen Erzeuger angenommen werden.
Zum Beispiel kann angenommen werden, daß Delta A2 implizit von Delta
A1 abhängig
ist. Durch diese weitere Optimierung sind die entstehenden Abhängigkeiten
für diese
Deltas:
A1 {}
A2 {}
B1 {A2}
A3 {B1}
B2
{}
C1 {A3,B2}
-
Es
sei darauf hingewiesen, daß es
notwendig sein kann, daß ein
Delta eine Vielzahl von Abhängigkeiten
aufweist, wie im Fall unabhängiger
Deltas. Zum Beispiel ist in der letztgenannten Abhängigkeitsliste
Delta C1 abhängig
sowohl von Delta A3 als auch B2, weil jedoch keine Beziehung zwischen
diesen beiden Deltas besteht, muß Delta C1 explizit die Abhängigkeit
von ihnen beiden beinhalten.
-
Das
Pflegen einer Liste von Abhängigkeiten
für das
nächste
Delta erzeugt durch einen Endpunkt ist geradlinig. Der Dynamikmanager 420 enthält einen
Satz neuer Abhängigkeiten.
Jedes Mal, wenn ein neues Delta übergeben
oder assimiliert wird, wird dieser Satz durch das Entfernen jeglicher
Abhängigkeiten
des neuen Deltas und das anschließende Hinzufügen des
neuen Deltas aktualisiert. Wenn zum Beispiel ein weiterer Endpunkt,
D, in dem oben angegebenen Beispiel existiert, würde sein neuer Abhängigkeitssatz
nach dem Empfang von jedem der Deltas erzeugt durch die anderen
Endpunkte A, B und C oben wie Folgt erscheinen:
A1 {A1}
A2
{A2}
B1 {B1}
A3 {A3}
B2 {A3,B2}
C1 {C1}
-
Wenn
der Endpunkt D ein neues Delta erzeugt hat, nachdem Delta C1 empfangen
wurde, dann müßte Delta
C1 die einzige explizite Abhängigkeit
des neuen Deltas sein. Zu dem Zeitpunkt, an dem Abhängigkeiten zu
dem neuen Delta hinzugefügt
werden, erfolgt eine Prüfung
auf jegliche Abhängigkeit
von einem vorhergehenden Delta von dem gleichen Erzeuger, weil diese
Abhängigkeit
immer implizit ist.
-
Bevor
jedes Delta an andere Kollaborateure gesendet wird, muß es „gesichert" werden. Dies beinhaltet
das Verschlüsseln
und den Integritätsschutz
des Deltas. Weil diese Operationen relativ komplex und zeitaufwendig
sein können,
führt der
Dynamikmanager 420 diese Operationen asynchron durch (nicht
auf der Hauptleitung der Ausführung),
wenn keine Transaktionen auf der Datenbank des geteilten Raumes
stattfinden. Dies verhindert, daß die Verschlüsselung
andere Operationen im geteilten Raum stört. Zum asynchronen Sichern
eines Deltas ist es notwendig, zu diesem Zeitpunkt einige Sicherheitsinformationen
in dem Delta zu speichern. Diese Sicherheitsinformationen werden
später
durch den Sicherheitsmanager 414 verwendet, um das Delta
zu sichern. In Schritt 319 veranlaßt der Dynamikmanager 420 den
Sicherheitsmanager 414 zur Speicherung sämtlicher
Information, welche später
benötigt
werden, um das Delta zu verschlüsseln.
-
Die
asynchrone Verschlüsselung
und Weiterleitung des Deltas zu anderen Kollaborateuren („Verbreitung" genannt) wird eigentlich
durch eine Verbreiterkomponente 425 im Dynamikmanager 420 implementiert. Diese
Komponente 425 umfaßt
ein Verbreiteraufreihungselement 426 in dem XML-Dokument 440,
wo Deltas und andere Nachrichten, die zu verbreiten sind, aufgereiht
werden. Ein Element mit einem Attribut eingestellt auf die Folgenummer
des neuen Deltas wird in Schritt 320 zum Verbreiterelement 426 aufgereiht.
Das Aufreihen erzeugt ein Ereignis, welches dazu führt, daß der Dynamikmanager 420 asynchron
auf einem unterschiedlichen Pfad der Ausführung aufgerufen wird, um die
Verbreitung tatsächlich
durchzuführen.
Wenn der Dynamikmanager 420 später asynchron zurückgerufen
wird, ruft er wiederum die Verbreiterkomponente 425 auf, um
sämtliche
Deltas in der Schlange 426 zu verarbeiten. Der Verbreiter 425 nimmt
das Element aus der Aufreihung, liest das Folgenummer-Attribut, öffnet das
entsprechende Delta aus dem Deltaprotokoll und verarbeitet es. Nachdem
das Delta für
die asynchrone Verarbeitung aufgereiht wurde, wird die Transaktion
auf der Datenbank des geteilten Raumes, die bei der Erzeugung des
Deltas gestartet wurde, übergeben.
-
Bevor
es an andere Kollaborateure gesendet wird, wird jedes Delta durch
Verschlüsselung
und Integritätsschutz
gesichert. Die Verschlüsselung
verhindert, daß,
wer immer die Deltanachricht abfängt,
nützliche Informationen
erhält.
Der Integritätsschutz
ermöglicht
dem Dynamikmanager zu erkennen, wenn eine andere Partei das Delta
modifiziert. Beim Verarbeiten eines Deltas verwendet die Verbreiterkomponente 425 des
Dynamikmanagers 420 in Schritt 322 den Sicherheitsmanager 414 zum
Sichern des Deltas mit zuvor gespeicherten Informationen. Das Delta
wird in einem Zweiphasenprozeß gesichert.
Die erste Phase wird mit gesperrter Datenbank des geteilten Raumes
initiiert. Während
dieser Phase werden die relevanten Sicherheitsinformationen, wie
Schlüssel,
aus der Datenbank des geteilten Raumes ausgelesen. Während der
zweiten Phase, welche stattfindet, ohne daß die Datenbank des geteilten
Raumes gesperrt ist, wird das Delta tatsächlich gesichert.
-
Es
wird nur ein Teil des Deltas an andere Kollaborateure gesendet,
und nur dieser Teil wird gesichert. Sämtliche Informationen im lokalen
Deltaelement werden nicht verbreitet oder gesichert. Auch werden
sämtliche
Kommando-Rückgängigmachen-Informationen,
die nur für
den lokalen Endpunkt
400 relevant sind, nicht verbreitet
oder gesichert. Das Sichern eines Deltas hinterläßt das Deltaelement selbst,
welches die Gruppennummer, die Folgenummer und die Abhängigkeiten
unverschlüsselt
(jedoch integritätsgeschützt) enthält. Diese
Informationen werden möglicherweise
benötigt,
bevor das Delta entschlüsselt
werden kann, also müssen sie
unverschlüsselt
gesendet werden. Die Kommando-Elemente werden verschlüsselt und
als Inhalt des Sicherheitsprozesses gesendet. Ein lokales Deltaelement
weist auch ein Inhaltselement auf, welches der Sicherheitsmanager
414 verwenden
kann, um lokale Daten zu speichern, die für das Delta gespeichert werden
müssen.
Ein gesichertes Delta sieht wie Folgt aus:
-
Hier
ist Del das Deltaelement, mit Attributen wie unten beschrieben.
Das SE-Element ist das gesicherte Element mit einem einzigen Attribut,
bei welchem es sich um die für
das Delta verwendete Sicherheitsversion handelt. Das EC-Element
ist der verschlüsselte
Inhalt, der das Ergebnis der Verschlüsselung der Kommandos in dem
Delta ist. Das EC-Element enthält
eine base64-Codierung der verschlüsselten Kommandos (wenn die
verschlüsselten
Kommandos sehr groß sind,
wird ein binäres
Dokument anstelle eines binären
Attributs verwendet). Das IV-Element
ist ein Initialisierungsvektor verwendet im Verschlüsselungsalgorithmus, das
KID-Element ist
die Sicherheitsschlüssel-ID
und das KV-Element ist die Schlüsselversionsnummer.
Das Auth-Element enthält
das Echtheitszeichen, welches für
den Integritätsschutz
des Deltas verwendet wird. Das PTSig-Element ist eine base64-codierte
Signatur für
das Delta.
-
Nach
dem Sichern wird das Delta in Schritt 324 serialisiert.
Zum Beispiel werden die Daten bei einer Ausführungsform als WBXML serialisiert,
eine standardmäßige binäre Codierung
für XML.
Wenn das Delta binäre
Dokumente aufweist, so können
diese als eine MIME-Nachricht
gebündelt
werden.
-
Schließlich wird
in Schritt 326 das serialisierte Delta an eine ausgehende
Deltaschlange 408 in dem Kommunikationsmanager 406 weitergeleitet,
welcher das Delta an andere Endpunkte in dem geteilten Raum sendet.
Der Prozeß endet
dann in Schritt 328.
-
10A und 10B zusammengenommen
veranschaulichen die Schritte in einem Prozeß zum Empfangen eines Deltas
an einem Zielendpunkt 402 von einem Quellendpunkt 400.
Dieser Prozeß startet
in Schritt 1000 und fährt
fort mit Schritt 1002, wo an einem Zielendpunkt 402 in
dem geteilten Raum ein serialisiertes Delta durch den Kommunikationsmanager 410 in
diesem Endpunkt 402 empfangen wird. Der Kommunikationsmanager 410 lokalisiert
dann den korrekten geteilten Raum zum Handhaben des Deltas und ruft
den Dynamikmanager 422 in diesem geteilten Raum auf, das
empfangene Delta zu verarbeiten.
-
Der
Dynamikmanager 422 deserialisiert dann das Delta in Schritt 1004.
Dieser Prozeß wandelt
die Deltadaten zurück
in XML-Code, der in dem XML-Dokument 423 im Dynamikmanager 422 gespeichert
wird. An dieser Stelle kann der Dynamikmanager 422 erkennen,
daß dies
ein Deltaelement ist. Alle neuen eingehenden Deltas werden in einer
eingehenden Deltaschlange 434 im Dynamikmanager-XML-Dokument 423 plaziert.
Diese Schlange 434 dient als eine zeitweilige Aufbewahrungsstelle,
bis der Dynamikmanager 422 bereit ist, sie zu verarbeiten.
Häufig
wartet der Dynamikmanager 422, bis er alle Deltas von anderen
Quellen, wie einem Relaisserver, empfangen hat, bevor er mit dem
Verarbeiten der Deltas beginnt. Wenn der Dynamikmanager 422 bereit
ist, die Daten zu verarbeiten, wird das Delta aus der eingehenden
Deltaschlange 434 entfernt.
-
In
Schritt 1006 erfolgt eine Prüfung, ob sich der Endpunkt,
der das Delta gesendet hat, in einem „aktiven" Zustand befindet (Endpunktzustände werden
unten diskutiert). Das Delta wird in Schritt 1008 „auf Eis
gelegt", wenn sich
der Endpunkt, der es gesendet hat, nicht in einem aktiven Zustand
befindet. Dies ist erforderlich, weil das Delta, welches den Endpunkt
zu dem geteilten Raum hinzugefügt
hat, möglicherweise
noch nicht ausgeführt
wurde, und empfangene Deltas können
nicht verarbeitet werden, bis es ausgeführt wurde. Somit werden alle
Deltas empfangen von einem Endpunkt auf Eis gelegt, bis das Delta,
welches den Endpunkt erzeugt hat, erhalten wird. Ähnlich verarbeitet,
wenn ein Endpunkt, der die Deltas erzeugt hat, aus dem geteilten Raum „ausgeladen" wurde, das System
kein Delta von diesem Endpunkt, es sei denn, ein anderer Endpunkt, der
noch in dem geteilten Raum aktiv ist, hat dieses Delta auch ausgeführt. Auf
Eis gelegte Deltas werden in einem Element für auf Eis gelegte Deltas 428 unter
dem entsprechenden Erzeuger gespeichert, bis eine Entscheidung zum
Ausführen
des Deltas getroffen wird. Das Element für auf Eis gelegte Deltas 428 wird
periodisch eliminiert. Wenn die auf Eis gelegten Deltas nicht ausgeführt werden,
werden sie gelöscht,
wenn die Gruppe, in welcher sie enthalten sind, aus dem Element
für auf
Eis gelegte Deltas 428 eliminiert wird.
-
Wenn
das Delta nicht wie in Schritt 1006 bestimmt auf Eis gelegt
wird, ist der sendende Endpunkt bekannt und das Delta kann in Schritt 1010 durch
den Sicherheitsmanager 416 auf Integrität geprüft werden. Zu diesem Zeitpunkt
ist es wichtig zu verifizieren, daß das Delta nicht verfälscht wurde,
bevor mit dem Lesen der Abhängigkeiten
und anderer Informationen von dem Delta fortgefahren wird. Wenn
das Delta eine Integritätsprüfung nicht
besteht, wird es in Schritt 1014 verworfen und der Prozeß fährt über die
Konnektoren 1018 und 1022 fort, um in Schritt 1036 abgeschlossen
zu werden.
-
Wenn
das Delta die Integritätsprüfung in
Schritt 1012 besteht, fährt
der Prozeß über die
Konnektoren 1016 und 1020 mit Schritt 1024 fort,
wo ein Versuch unternommen wird, das Delta zu entschlüsseln. Es
ist möglich,
das Delta bei Schritt 1024 zu entschlüsseln, wenn der korrekte Schlüssel vorhanden
ist. Weil die Abhängigkeiten
des Deltas noch nicht geprüft
wurden, ist es möglich,
daß bestimmte
Schlüssel
für das
Delta fehlen. Wenn dies der Fall ist, wird das Delta später entschlüsselt. Der
Entschlüsselungsschritt
wandelt das SE-Element im verschlüsselten Delta zurück in die
Kommandos in dem Delta.
-
Als
nächstes
werden in Schritt 1026 die Abhängigkeiten des Deltas durch
den Dynamikmanager 422 abgerufen, indem er das Abhängigkeitsattribut
des Deltas prüft.
Da das Abhängigkeitsattribut
nicht verschlüsselt
ist, können
die Abhängigkeiten
auch dann abgerufen werden, wenn die Entschlüsselung in Schritt 1024 nicht
möglich
war. Die Abhängigkeiten
werden dann wie in 11A und 11B detaillierter
gezeigt assimiliert, welche zusammengenommen ein Flußdiagramm
bilden, welches die Schritte in dem Prozeß veranschaulicht.
-
Die
Abhängigkeitsverarbeitung
beginnt in Schritt 1100 und fährt fort mit Schritt 1102,
wo die Liste expliziter Abhängigkeiten
aus dem Attribut in dem Delta geöffnet
wird. Wenn dies nicht das erste Delta von einem Erzeuger ist, wird
das vorhergehende Delta von dem Erzeuger zum Beginn der Abhängigkeitsliste
hinzugefügt. In
Schritt 1104 erfolgt eine Bestimmung, ob alle Deltas, bei
denen es sich um Abhängigkeiten
handelt, verarbeitet wurden. Wenn dem so ist, fährt die Abhängigkeitsverarbeitung über die
Konnektoren 1116 und 1124 fort, um in Schritt 1130 abgeschlossen
zu werden.
-
Alternativ
dazu ruft, wenn in Schritt 1104 bestimmt wurde, daß nicht
alle Abhängigkeiten
verarbeitet wurden, der Dynamikmanager 422 in Schritt 1106 die
nächste
Abhängigkeit
von der Liste der Abhängigkeiten auf.
Für jedes
dieser Abhängigkeitsdeltas
erfolgt in Schritt 1108 eine Prüfung, um zu bestimmen, ob dieses Abhängigkeitsdelta
wie unten beschrieben assimiliert wurde. Wenn dieses Abhängigkeitsdelta
bereits assimiliert wurde, kehrt der Prozeß zu Schritt 1104 zurück, um zu
prüfen,
ob weitere Abhängigkeiten
verbleiben.
-
Wenn
eines der Deltas in dem Abhängigkeitssatz
nicht assimiliert wurde, dann erfolgt in Schritt 1110 eine
Bestimmung, ob das nächste
Delta auf Eis gelegt wurde. Wenn das Delta nicht auf Eis gelegt
wurde, fährt der
Prozeß über die
Konnektoren 1116 und 1124 fort, um in Schritt 1130 abgeschlossen
zu werden, weil das nächste
Delta fehlt. Alternativ dazu fährt
der Prozeß,
wenn das nächste
Delta wie in Schritt 1110 bestimmt auf Eis gelegt wurde, über die
Konnektoren 1114 und 1120 mit Schritt 1126 fort,
wo ein Versuch unternommen wird, das auf Eis gelegte Delta zu assimilieren.
Wenn die Versuche erfolgreich sind, wie in Schritt 1128 bestimmt, kehrt
der Prozeß über die
Konnektoren 1118 und 1112 zurück zu Schritt 1104,
um zu bestimmen, ob weitere Abhängigkeiten
zu verarbeiten sind. Alternativ dazu wird, wenn das auf Eis gelegte
Delta nicht assimiliert werden kann, wie in Schritt 1128 bestimmt,
der Prozeß in
Schritt 1130 abgeschlossen, weil die Abhängigkeit
fehlt.
-
Wenn
das neue Delta nicht assimiliert werden kann, weil einige seiner
Abhängigkeiten
nicht verarbeitet werden können,
wird es in ein Deltabehältnis 442 verschoben.
Das Deltabehältnis
ist eine XML-Datenstruktur in dem XML-Dokument 423 in Zusammenhang
mit dem Dynamikmanager 422. Es weist eine Struktur 1200 wie
in 12 gezeigt auf. Das Deltabehältnis 1200 umfaßt ein DelHldr-Element 1202,
welches das Deltabehältnis
darstellt. Dieses Element weist ein ActiveBlockNum-Attribut auf,
welches die Nummer des derzeit aktiven Blocks enthält. Das
DelHldr-Element 1202 wiederum umfaßt ein oder mehrere HldGrp-Elemente,
von denen jedes eine Gruppe gehaltener Deltas und Endpunktimpulse,
die alle auf die gleiche Abhängigkeit
warten, darstellt. Jedes dieser Elemente weist ein Dep-Attribut
auf, welches die Abhängigkeit
spezifiziert, auf die alle gehaltenen Deltas und Impulse warten.
Jedes HldGrp-Element umfaßt
ein oder mehrere LDel-Elemente, von denen jedes ein gehaltenes Delta
darstellt, und ein oder mehrere EptPul-Elemente, von denen jedes
einen gehaltenen Impuls darstellt. Das neue Delta wird in einem
HldGrp-Element des Deltabehältnisses 442 gespeichert,
welches dem fehlenden Abhängigkeitsdelta
entspricht.
-
Wenn
das fehlende Abhängigkeitsdelta
nicht auf Eis gelegt ist, wie in Schritt 1110 bestimmt,
dann versucht der Dynamikmanager 422, das Abhängigkeitsdelta
von anderen Endpunkten in dem geteilten Raum zu holen. Insbesondere
wird eine Holen-Anforderung an einen anderen Endpunkt gesendet,
bei einem Versuch, das Delta abzurufen. Zum Erhöhen der Effizienz können Holen-Anforderungen
für alle
Deltas gesammelt und mit einer Anforderung angefordert werden.
-
Da
die Zahl der Deltas, die von einem anderen Endpunkt zu holen sind,
groß sein
kann und daher das Holen über
einen signifikanten Zeitraum hinweg stattfinden kann, ist es notwendig
zu verhindern, daß ein
Endpunkt mehrfache Holen-Anforderungen für die gleichen Deltas ausgibt,
während
er noch die Deltas von einer vorhergehenden Anforderung empfängt. Mehrfaches
erneutes Holen wird durch Zuweisung einer Folgenummer zu jeder Holen-Anforderung
verhindert. Wenn die eingehende Holen-Anforderung eine Folgenummer
aufweist, die nicht hoch genug ist, dann sendet ein Endpunkt, der
die Anforderung empfängt,
die angeforderten Deltas nicht. Eine Holen-Beantworten-Folgenummer
ist für
jeden Endpunkt gespeichert und wird verwendet, wenn eine Holen-Anforderung
durch diesen Endpunkt empfangen wird. Außerdem ist eine Holen-Anforderung-Folgenummer
für jeden
Endpunkt gespeichert und wird verwendet, wenn dieser Endpunkt eine
Holen-Anforderung an einen anderen Endpunkt erzeugt. Diese Folgenummern
beginnen beide mit Null und werden auf folgende Art und Weise verwendet.
-
Der
Holen-Prozeß ist
in 13 veranschaulicht, welcher mit Schritt 1300 beginnt
und mit Schritt 1302 fortfährt, wo eine Holen-Anforderung
in einem ersten Endpunkt, zum Beispiel Endpunkt A, erzeugt wird
und in Schritt 1304 an einen anderen Endpunkt, zum Beispiel
Endpunkt B, gesendet wird. Wenn eine solche Holen-Anforderung erzeugt
wird, umfaßt
sie die Holen-Anforderung-Folgenummer. Wenn in Schritt 1306 eine
Holen-Anforderung empfangen wird, wird die Holen-Anforderung-Folge
in der Anforderung mit der gespeicherten Holen-Beantworten-Folgenummer im empfangenden
Endpunkt verglichen. Wenn die beiden Folgenummern gleich sind, dann
ist die Holen-Anforderung gültig,
und in Schritt 1308 werden die angeforderten Deltas zurück an den
Endpunkt A geleitet. Der empfangende Endpunkt erhöht dann
seinen gespeicherten Wert der Holen-Beantworten-Folge wie in Schritt 1310 dargelegt.
Als nächstes
sendet der empfangende Endpunkt in Schritt 1312 eine Holen-Folgenummer-Aktualisierungsnachricht,
die den Wert der Holen-Beantworten-Folgenummer enthält, an den
anfordernden Endpunkt. Wenn jedoch die Holen-Anforderung ungültig ist,
wie in Schritt 1306 bestimmt, dann werden die angeforderten
Deltas nicht gesendet. Statt dessen wird in Schritt 1312 nur
die Aktualisierungsnachricht gesendet.
-
Wenn
die Holen-Folge-Aktualisierungsnachricht am sendenden Endpunkt empfangen
wird, aktualisiert der sendende Endpunkt seine Holen-Anforderung-Folgenummer
wie in Schritt 1314 dargelegt. Insbesondere wenn die Holen-Beantworten-Folgenummer
in der empfangenen Nachricht größer ist
als die durch den sendenden Endpunkt verwendete aktuelle Holen-Anforderung-Folgenummer,
stellt der Endpunkt seine Holen-Anforderung-Folgenummer auf die
Folgenummer in der Aktualisierungsnachricht ein. Ansonsten ändert der
sendende Endpunkt seine Holen-Anforderung-Folgenummer nicht. Der
Prozeß endet
dann in Schritt 1316.
-
Folgendes
ist ein Beispiel der Verwendung dieser Folgenummern. Es wird angenommen,
daß zwei Endpunkte
A und B existieren, jeder mit internen gespeicherten Werten der
Holen-Anforderung-Folgenummern
und Holen-Beantworten-Folgenummern mit Werten von Null. Der Endpunkt
A realisiert, daß ihm
die Deltas 1–100
fehlen und er sendet eine Holen-Anforderung für diese Deltas an den Endpunkt
B. Diese Holen-Anforderung hat eine Holen-Anforderung-Folgenummer mit einem
Wert von Null. Der Endpunkt B empfangt die Holen-Anforderung, vergleicht
die Folgenummer darin mit seiner gespeicherten Holen-Beantworten-Folgenummer
(mit einem Wert von Null) und bestimmt, daß die Holen-Anforderung gültig ist.
Der Endpunkt B sendet dann die angeforderten Deltas an Endpunkt
A und erhöht
seine gespeicherte Holen-Beantworten-Folge
für den Endpunkt
A auf einen Wert von Eins. Der Endpunkt B sendet auch eine Holen-Folge-Aktualisierungsnachricht an
den Endpunkt A, welche eine Folgenummer von Eins trägt.
-
Angenommen
Endpunkt A empfangt die Deltas 1–20, entscheidet jedoch, die
Deltas 21–100
noch einmal anzufordern, auch wenn sich diese Deltas und die Holen-Folge-Aktualisierungsnachricht
noch in der Übertragung
befinden. Der Endpunkt A sendet eine weitere Anforderung mit einer
Holen-Anforderung-Folgenummer mit einem Wert von Null. Der Endpunkt
B empfangt die neue Holen-Anforderung von Endpunkt A und realisiert,
daß die
Anforderung ungültig
ist, weil die Holen-Anforderung-Folgenummer darin (mit einem Wert
von Null) niedriger ist als seine aktuelle Holen-Beantworten-Folgenummer
für den
Endpunkt A (mit einem Wert von Eins). Daher sendet der Endpunkt
B die Deltas 21–100
nicht noch einmal, sondern er sendet statt dessen eine weitere Holen-Folge-Aktualisierungsnachricht,
welche eine Aktualisierungsfolgenummer mit einem Wert von Eins trägt.
-
Der
Endpunkt A schließt
dann den Empfang der Deltas 21–100
ab und empfangt auch die erste Holen-Folge-Aktualisierungsnachricht.
Dementsprechend aktualisiert der Endpunkt A seine interne Holen-Anforderung-Folgenummer
auf einen Wert von Eins. Der Endpunkt A ignoriert die zweite Holen-Folge-Aktualisierungsnachricht,
weil der darin getragene Wert der Aktualisie rungsfolgenummer niedriger
als oder gleich seiner gespeicherten Holen-Anforderung-Folgenummer ist.
Dadurch werden die gleichen Deltas nicht zweimal gesendet.
-
Die
Holen-Anforderung- und Holen-Beantworten-Folgenummern sind in der
Datenstruktur eines Endpunktes gespeichert, die Teil des XML-Dokuments 423 ist.
Eine Beispiel-XML-Datenstruktur
zum Aufnehmen von Endpunktinformationen ist in 14A und 14B gezeigt,
die zusammengenommen eine veranschaulichende XML-Struktur 1400 zum
Speichern von Informationen in bezug auf die Endpunkte zeigen. Die
Struktur umfaßt
eine Reihe von XML-Elementen.
Das Epts-Element 1402 stellt die Sammlung von Endpunkten
dar. Dieses Element 1402 weist ein NDeps-Attribut auf,
welches die neuen Abhängigkeiten
enthält,
die auf dem nächsten
Delta eingestellt werden müssen,
welches dieser Endpunkt erzeugt. Das Epts-Element enthält ein oder mehrere
Ept-Elemente 1404, 1406, von denen jedes einen
einzelnen Endpunkt darstellt.
-
Jedes
Ept-Element 1404 weist eine Reihe von Attributen auf, einschließlich eines
ContactURL-Attributs, welches die Kontakt-URL des Endpunktes enthält. Ein
CreationId-Attribut
enthält
die Folge des Deltas, welches den Endpunkt erzeugt hat, oder die
Bemerkung „Erster", wenn dieser Endpunkt
den geteilten Raum erzeugt hat. Ein DeviceURL-Attribut enthält die Geräte-URL des
Endpunktes. Ein HGN-Attribut enthält die höchste Gruppennummer für diesen
Endpunkt, erklärt
durch einen Impuls oder durch Erzeugung eines Deltas. Das HIP-Attribut speichert
den höchsten
Einsetzungspunkt für
ein Delta erzeugt durch den Endpunkt. Ein OldCreationIds-Attribut
enthält
Folgen von Deltas, die zuvor diesen Endpunkt in den geteilten Raum
eingeladen hatten.
-
Ein
OutOfDateTime-Attribut ist eingestellt auf die Zeit, zu der das
erste lokale Delta seit der letzten Nachricht empfangen von dem
Endpunkt erzeugt wurde. Ein PendingLaggard-Attribut ist eingestellt, wenn der Endpunkt
ein Nachzügler
wie unten beschrieben ist. Das PurGrp-Attribut enthält die höchste Gruppe,
für die dieser
Endpunkt seine Bereitschaft zum Eliminieren erklärt hat. Ein Reqs-Attribut speichert
Deltas, die benötigt werden,
um enthaltene Deltas von dem Endpunkt zu assimilieren, und ein ReqSeq-Attribut
enthält
die Holen-Anforderung-Folgenummer,
die zu verwenden ist, wenn die nächste
Holen-Anforderung an dem Endpunkt empfangen wird. Ein RespSeq-Attribut
enthält
die letzte Holen-Beantworten-Folgenummer,
die an den Endpunkt gesendet wurde, nachdem auf eine seiner Holaktionen
reagiert wurde.
-
Das
SPG-Attribut speichert eine sekundäre Eliminierungsgruppe, die
verwendet wird, um zu bestimmen, was unter Randbedingungen, wie
wenn ein Endpunkt keine Deltas erzeugt hat, eliminiert wird. Ein
State-Attribut enthält
den Zustand des Endpunktes für
die Verwendung bei Eliminierungsentscheidungen, die unten diskutiert
werden. Das UID-Attribut enthält
die einmalige ID des Endpunktes. Bei einer Ausführungsform ist dies ein Rautenzeichen
des Wertes im ContactURL- und DeviceURL-Attribut.
-
Jedes
der Ept-Elemente, zum Beispiel das Element 1404, enthält ein oder
mehrere Erzeuger-Elemente 1408–1418, von denen jedes
einen Erzeuger darstellt, und ein PndgDels-Element 1420, welches als ein
Ursprung für
ausstehende Deltas verwendet wird. Jedes Creator-Element steht für einen Erzeuger. Jedes Mal, wenn
ein Endpunkt einen Raum wieder öffnet,
erzeugt er einen neuen Erzeuger zur Verwendung, wenn er Deltas erzeugt.
Dieser Erzeuger weist eine zufällige
ID auf, die verwendet wird, um im Falle eines Crashs oder eines
anderen Ereignisses, welches den Verlust von Informationen verursachen
kann, sicherzustellen, daß Delta-Folgen
einmalig sind. Jedes Creator-Element weist mehrere Attribute auf,
einschließlich
eines HIP-Attributs,
welches den Einsetzungspunkt des höchsten Deltas erzeugt durch
den Erzeuger enthält.
Ein LastUID-Attribut enthält
die letzte Folge verwendet beim Erzeugen einer einmaligen ID für diesen
Erzeuger. Ein PurgeGrp-Attribut speichert die Nummer einer Gruppe,
die, wenn sie eliminiert wird, zuläßt, daß der Erzeuger gelöscht wird.
Ein SubNum-Attribut enthält
die letzte Teil-Folgenummer verwendet auf einem identitätsgerichteten
oder asynchronen Delta erzeugt durch diesen Erzeuger wie unten beschrieben.
-
Das
PndgDels-Element (434, 4) ist der
Ursprung jedes ausstehenden Deltas. Wie bereits zuvor erwähnt, sind
ausstehenden Deltas Deltas, welche der Dynamikmanager assimilieren
möchte
oder nicht. Ausstehende Deltas treten nur auf, wenn Deltas empfangen
werden, bevor ein Endpunkt zu dem Raum hinzugefügt wird oder nachdem ein Endpunkt
entfernt wurde. Das PndgDels-Element 1420 enthält ein oder
mehrere LDel-Elemente 1422, von denen jedes ein Delta darstellt.
-
Zurückkehrend
zu 10A und 10B,
fährt,
nachdem der Dynamikmanager in Schritt 1026 versucht hat,
alle Abhängigkeiten
zu assimilieren, der Prozeß mit
Schritt 1028 fort, wo eine Bestimmung erfolgt, ob alle
Abhängigkeiten
assimiliert wurden. Wenn nicht, fährt der Prozeß mit Schritt 1030 fort,
wo das ursprüngliche
Delta gehalten wird. Der Prozeß wird
dann in Schritt 1036 abgeschlossen.
-
Wenn
alternativ dazu in Schritt 1028 bestimmt wird, daß alle Abhängigkeiten
assimiliert wurden, fährt der
Prozeß mit
Schritt 1032 fort, wo das neue Delta auch assimiliert wird.
Das Assimilieren eines Deltas besteht aus der Erzeugung einer Transaktion
in der Datenbank des geteilten Raumes und dem Verschieben des Deltas in
das Deltaprotokoll 444. Wie oben disku tiert, wurde jedes
Delta zuvor mit einer Gruppennummer und einer Folge gestempelt.
So beginnt der Prozeß des
Einfügens
eines Deltas in das Deltaprotokoll 444 mit der Bestimmung
des korrekten Gruppenelements in dem Deltaprotokoll 444.
Wenn die Gruppe nicht existiert, wird sie an dieser Stelle erzeugt.
Dann wird die Gruppe auf eine Kette geprüft, welche der ErzeugerID in
der Delta-Folge entspricht. Auch hier, wenn die Kette nicht existiert,
dann wird sie erzeugt. Das zu assimilierende Delta wird an das Ende
der Kette hinzugefügt.
-
Nachdem
ein Delta assimiliert wurde, wird es ausgeführt, bevor der Dynamikmanager 422 die
aktuelle Transaktion auf der Datenbank des geteilten Raumes übergibt.
Fehler, die während
der Deltaausführung
auftreten, werden durch Überspringen
oder Wiederholen von Kommandos, die ausgeführt worden sind, gehandhabt.
Außerdem
wird die Transaktion, die um die Deltaausführung herum gestartet wurde,
abgebrochen. Die Deltaausführungsfehler
werden gehandhabt, wenn jedes Delta ausgeführt wird und bevor die aktuelle
Transaktion übergeben
wird. Um das Überspringen
und Wiederholen einzuschränken,
versucht der Dynamikmanager 422, so viele Deltas wie möglich vor
deren Ausführung
zu assimilieren. Daher verfolgt das Deltaprotokoll 444,
wie viele Deltas assimiliert, jedoch nicht ausgeführt wurden.
Diese Zahl wird verwendet, um sicherzustellen, daß alle Deltas
ausgeführt
werden.
-
Nach
dem Assimilieren des Deltas, kann es nun möglich sein, weitere Deltas
zu assimilieren, welche von dem assimilierten Delta abhängig sind.
Diese Deltas werden „Abhängige" genannt. Diese letztgenannte Assimilierung
erfolgt in Schritt 1034. Speziell werden innerhalb des
Deltabehältnisses 442 Deltas
basierend auf dem Delta gruppiert, auf welches sie warten. Wann
immer also ein Delta assimiliert wird, erfolgt eine Prüfung zum
Bestimmen, ob es Deltas in dem Deltabehältnis 442 gibt, die
auf dieses Delta gewartet haben. Wenn solche Deltas existieren,
wird versucht, diese Deltas zu assimilieren. Während dieser letztgenannten
Assimilierung erfolgt eine Prüfung
zu den Abhängigkeiten
von diesen Deltas, und wenn sie nun alle assimiliert sind, können auch
die abhängigen
Deltas assimiliert werden. Die Deltaverarbeitung wird in Schritt 1036 abgeschlossen.
-
Der
Ausführungsprozeß ist in 15A und 15B detaillierter
veranschaulicht. Dieser Prozeß beginnt
mit Schritt 1500 und fährt
fort mit Schritt 1502, wo der Dynamikmanager 422 das
Deltaprotokoll 444 rückwärts abschreitet,
beginnend vom Ende des Deltaprotokolls, und sich zum Beginn des
Protokolls vorarbeitet. Insbesondere da das Protokoll in Ketten,
Gruppen und Blöcken
angeordnet ist, ist das Ende des Protokolls das letzte Delta in
der letzten Kette in der letzten Gruppe im letzten Block. Jedes
Delta in der letzten Kette wird geprüft, und dabei erfolgt eine
Bewegung in Richtung des Beginns der Kette. Wenn der Beginn der
letzten Kette erreicht ist, fährt
der Prozeß fort
mit dem letzten Delta in der vorletzten Kette und so weiter, bis
alle Deltas in der ersten Kette in der Gruppe geprüft wurde.
Dann fährt
der Prozeß fort
mit dem letzten Delta in der letzten Kette in der vorhergehenden
Gruppe. Wenn die erste Gruppe in einem Block erreicht ist, fährt der
Prozeß fort mit
dem letzten Delta der letzten Kette der letzten Gruppe in dem vorhergehenden
Block. Die Operation wird in dieser Art und Weise fortgesetzt, bis
alle neu assimilierten Deltas gefunden sind.
-
Wenn
ein gerade geprüftes
Delta nicht ausgeführt
wurde, kehrt der Prozeß wie
in Schritt 1504 bestimmt zu Schritt 1502 zurück, wo das
nächste
Delta geprüft
wird. Wenn jedoch das gerade geprüfte Delta wie in Schritt 1504 bestimmt
ausgeführt
wurde, prüft
der Dynamikmanager 422 in Schritt 1506, um zu
bestimmen, ob es mit einem der anderen assimilierten Deltas kollidiert.
Während
des zuvor beschriebenen Assimilierungsprozesses wird ein Satz der
zuvor erwähnten
Konfliktzeichenketten aller assimilierten Deltas aufgebaut. Die Konfliktprüfung erfolgt
durch Vergleichen der Konfliktzeichenkette des gerade geprüften Deltas
mit allen Konfliktzeichenketten im Konfliktzeichenkettensatz. Wenn
die Zeichenketten in einem Paar von Zeichenketten die gleichen sind
oder wenn eine der verglichenen Zeichenketten leer ist, dann kollidieren
die entsprechenden Deltas. Wenn es nicht zu einem Konflikt kommt,
kehrt der Prozeß zu
Schritt 1502 zurück,
wo das nächste
Delta geprüft
wird.
-
Wenn
es, wie in Schritt 1506 bestimmt, zu einem Konflikt kommt,
dann wiederholt der Dynamikmanager in Schritt 1508 das
Delta. Wie zuvor erwähnt,
muß der
Dynamikmanager 422 sicherstellen, daß unterschiedliche Endpunkte
konvergieren, indem sichergestellt wird, daß alle der Deltas in einer
konsistenten Reihenfolge in jedem Endpunkt ausgeführt werden.
Es besteht die Möglichkeit,
daß eines
der neu assimilierten Deltas an einer Stelle im Deltaprotokoll 444 vor
der Stelle eines unabhängigen
Deltas, welches bereits ausgeführt
wurde, assimiliert wurde. Wenn es zu einer solchen Situation kommt,
muß zum
Sicherstellen der Konvergenz das bereits ausgeführte Delta „wiederholt" werden, bevor die
assimilierten Deltas ausgeführt
werden, und dann wird es „übersprungen", nachdem die assimilierten
Deltas ausgeführt
worden sind.
-
Das
Wiederholen eines Deltas besteht aus der Iteration über die
Kommandos in dem Delta in umgekehrter Reihenfolge. Wenn jedes Kommando
gefunden ist, wird die Vorrichtung 436 aufgerufen, um die
Auswirkung des Kommandos rückgängig zu
machen. Die Vorrichtung 436 hat Zugang zum Kommando-Element und
dem Kommando-Rückgängigmachen-Element
in jedem Delta, welches die Vorrichtung zuvor erzeugt hat, als das
Delta das letzte Mal ausgeführt
wurde. Wenn während
der Wiederholung eines Kommandos in dem Delta ein Fehler auftritt,
versucht der Dynamikmanager 422, sämtliche Kommandos in diesem
Delta, welches bereits wiederholt worden war, erneut auszuführen, so
daß das
Delta im ausgeführten
Zustand verbleibt. Der Prozeß fährt dann
fort mit Schritt 1510, wo eine Bestimmung erfolgt, ob alle
neuen Deltas geprüft
wurden. Wenn nicht, kehrt der Prozeß zurück zu Schritt 1502,
um die Prüfung
von Deltas fortzusetzen.
-
Wenn
alle neuen Deltas wie in Schritt 1510 bestimmt geprüft wurden,
fährt der
Prozeß über die
Konnektoren 1512 und 1514 fort mit Schritt 1516,
wo der Überspringen-Prozeß beginnt.
In Schritt 1516 wird das Deltaprotokoll durchsucht und
jedes Delta noch einmal geprüft.
In Schritt 1518 erfolgt eine Bestimmung, ob das gerade
geprüfte
Delta wiederholt wurde. Wenn dem so ist, fährt der Prozeß mit Schritt 1520 fort.
Alternativ dazu, wenn das Delta nicht wiederholt wurde, entweder
weil es nicht zu einem Konflikt wie in Schritt 1506 bestimmt
kam, oder weil während
der Wiederholung ein Fehler aufgetreten ist, bestimmt der Dynamikmanager 422 in
Schritt 1522, ob es sich bei dem Delta um ein neues Delta
handelt. Wenn das Delta kein neues Delta ist, tut der Dynamikmanager 422 nichts
und der Prozeß fährt fort
mit Schritt 1528. Wenn jedoch der Dynamikmanager in Schritt 1522 bestimmt,
daß das
Delta ein neues Delta ist, dann wird in Schritt 1524 und 1526 das neue
Delta entschlüsselt
und ausgeführt.
Der Prozeß fährt dann
fort mit Schritt 1528.
-
Wenn
das Delta erfolgreich wiederholt wurde, wie in Schritt 1518 bestimmt,
dann beginnt der Dynamikmanager 422 in Schritt 1520 mit
einem Überspringen
oder einer erneuten Ausführung
aller Kommandos in dem Delta. Dieser Prozeß ist genau wie der Prozeß der Ausführung des
Deltas zuerst. Während
dieser Überspringen-Operation
findet der Dynamikmanager 422 alle neu assimilierten Deltas,
einschließlich
des Deltas, welches die Verarbeitung initiiert hat. Obwohl der Dynamikmanager
dieses letztgenannte Delta bereits auf Integrität geprüft hat, wäre es möglich, daß es zu dem Zeitpunkt wie oben
erläutert
nicht entschlüsselt
werden konnte. Wenn das Delta zuvor nicht entschlüsselt wurde,
dann wird es als Teil des Überspringen-Prozesses entschlüsselt. An
dieser Stelle sind alle Abhängigkeitsdeltas
ausgeführt
worden. Daher steht der zum Entschlüsseln des Deltas benötigte Schlüssel zur
Verfügung
und die Entschlüsselung
sollte erfolgreich sein.
-
Die
erneute Ausführung
der Kommandos in dem Delta erfolgt auf die gleiche Art und Weise
wie die oben beschriebene Ausführung
von Kommandos zum Ausführen
eines Deltas auf dem Endpunkt, welches es erzeugt hat. Jedoch ist
es im Falle eines Fehlers während
der Ausführung
nicht möglich,
dem Werkzeug, welches das Delta erzeugt hat, eine Ausnahme zuzuweisen,
weil sich das Werkzeug auf einem unterschiedlichen Gerät befindet.
Statt dessen wird, wenn solche Fehler auftreten, nach dem Wiederholen
jeglicher erfolgreich ausgeführter
Kommandos und dem Abbruch der Transaktionen, das Delta nur markiert,
daß es
eine Ausnahme bei der Ausführung
aufwies, und der Dynamikmanager fahrt mit dem Prozeß fort.
-
Ausnahmen
während
der Ausführung
von Deltas, welche neue Endpunkte zum Raum hinzufügen, werden
unterschiedlich behandelt. Wenn ein Endpunkt in dem Raum erfolgreich
den neuen Endpunkt hinzufügt,
ist es notwendig, daß der
Dynamikmanager den Endpunkt auf allen anderen Endpunkten in dem
geteilten Raum hinzufügt.
Dies kann in bestimmten Situationen ein Problem sein, zum Beispiel
wenn dem Einladenden des neuen Endpunktes die Zulassung für das Hinzufügen eines
Mitglieds unabhängig
von der Einladung entzogen wurde. Um diese Fälle zu handhaben, fährt der
Dynamikmanager nach einer Ausnahme mit dem Ausführen weiterer Kommandos in
einem Delta zum Hinzufügen
eines Endpunktes fort.
-
In
jedem Fall fährt
der Prozeß dann
mit Schritt 1528 fort, wo eine Bestimmung erfolgt, ob der Überspringen-Prozeß abgeschlossen
ist. Wenn nicht, kehrt der Prozeß zurück zum Durchsuchen des Deltaprotokolls
in Schritt 1516. Wenn die Überspringen-Operation abgeschlossen
ist, endet der Prozeß mit
Schritt 1530.
-
Die
oben beschriebenen Prozesse veranschaulichen das Erzeugen, Übertragen
und Empfangen normaler Deltas. Jedoch wurden gemäß der Grundlagen der Erfindung,
spezielle Deltas erzeugt, um mehrere spezielle Situationen zu handhaben.
Zu diesen letztgenannten Deltas zählen asynchrone Deltas, Identität-verbreitet-Deltas
und Prioritätsdeltas.
Asynchrone Deltas werden nicht als Teil des normalen Kommunikationsverkehrs
innerhalb eines geteilten Raumes gesendet. Statt dessen werden sie
für das Übertragen
sehr großer Dateien
verwendet, um zu verhindern, daß die
Deltas, welche diese enthalten, die Übertragung anderer Deltas in
dem geteilten Raum für
einen langen Zeitraum blockieren, sowie zum Unterstützen der Übertragung
asymmetrischer Dateien. Asynchrone Deltas weisen bestimmte Unterschiede
gegenüber
normalen Deltas auf. Der wichtigste dieser Unterschiede ist, daß keine
zukünftigen
Deltas von einem asynchronen Delta abhängig sein können. Daher können weitere
Deltas in dem geteilten Raum ausgeführt werden, bevor das asynchrone
Delta ankommt und asynchrone Deltas müssen nicht ausgeführt werden,
um die Konsistenz zu wahren. Außerdem holt
der Dynamikmanager keine fehlenden asynchronen Deltas von anderen
Endpunkten und somit ist ihre Bereitstellung nicht so zuverlässig wie
die normale Deltabereitstellung. Und schließlich ist es, weil keine Deltas von
einem asynchronen Delta abhängig
sind, nicht notwendig, asynchrone Deltas an alle Endpunkte in dem geteilten
Raum zu senden. Diese Eigenschaft macht das Übertragen asynchroner Deltas
an spezifische Endpunkte viel einfacher als dies bei normalen Deltas
der Fall ist und es ermöglicht
die Unterstützung
asymmetrischer Dateien.
-
Jedoch
weisen asynchrone Deltas Abhängigkeiten
auf, die es dem Dynamikmanager ermöglichen, die vorherige Ausführung zu
garantieren, d.h., wenn ein asynchrones Delta an einem entfernten
Endpunkt ausgeführt
wird, dann sind alle nichtasynchronen Deltas, die der Erzeuger zur
Erzeugungszeit des asynchronen Deltas ausgeführt hatte, auch auf dem entfernten
Endpunkt ausgeführt
worden. Asynchrone Deltas weisen auch einen gut definierten Einsetzungspunkt
im Deltaprotokoll auf und können
vor der Ausführung
von Deltas mit niedrigeren Deltaprotokoll-Einsetzungspunkten wiederholt
werden. Weitere Deltas mit einem höheren Deltaprotokoll-Einsetzungspunkt
werden vor der Ausführung
eines asynchronen Deltas wiederholt. Bei asynchronen Deltas kann
keine Ausführung
in der gleichen relativen Reihenfolge auf allen Endpunkten garantiert
werden und daher besteht im Falle asynchroner Deltas keine Konvergenz.
-
Asynchrone
Deltas können
mit anderen Deltas im geteilten Raum verschachtelt sein und sie
können mit
einer niedrigeren Priorität
gesendet werden. Zum Beispiel kann eine große Datei mit einer Kombination
aus normalen und asynchronen Deltas übertragen werden. Normale Deltas
werden verwendet, um einen Dateideskriptor zu senden und asynchrone
Deltas werden verwendet, um den Dateiinhalt zu senden. Ein GUID
wird verwendet, um Deskriptoren mit Inhalten am Ziel abzugleichen.
Das asynchrone Delta, welches den Dateiinhalt enthält, kann
gesendet werden, sobald die Datei hinzugefügt ist (symmetrische Dateien),
oder es kann nur gesendet werden, wenn ein entfernter Endpunkt die
Datei anfordert (asymmetrische Dateien). Die XML-Struktur eines
asynchronen Deltas ist die gleiche wie ein normales Delta, wie in 5 veranschaulicht,
außer
daß ein
Async-Attribut auf dem Del-Element eingestellt ist, wenn das Delta
asynchron ist.
-
Identitätsgerichtete
Deltas sind dazu ausgelegt, ungelesene Markierungen und andere Informationen zu
unterstützen,
die nur anderen Instanzen des geteilten Raumes für eine Identität bekannt
sein müssen.
Identitätsgerichtete
Deltas können
nur bei der lokalen Identität
adressiert werden. Diese Deltas werden nur an einen Teilsatz der
Endpunkte in dem geteilten Raum gesendet, wo dieser Teilsatz aus
den Endpunkten des Mitglieds besteht, welches das Delta erzeugt
hat. Wie bei asynchronen Deltas können keine anderen Deltas von einem
Identitätverbreitet-Delta
abhängig
sein, somit unterstützen
Identität-verbreitet-Deltas
die Konvergenz oder Zuverlässigkeit
nicht.
-
Der
Dynamikmanager 422 handhabt asynchrone und Identität-verbreitet-Deltas
als „Teil-Deltas". Anstatt der Identifizierung
durch eine Delta-Folge weisen Teil-Deltas eine Delta-„Teil-Folge" auf. Eine Teil-Folge ist
die Folge des letzten Deltas, welches durch den Erzeuger erzeugt
wurde, gefolgt von einer Teil-Nummer. Die Teil-Nummer wird jedes
Mal erhöht,
wenn ein neues Teil-Delta ausgeführt
wird. Wenn zum Beispiel der Erzeuger A ein Delta ausführt, dann
zwei Identität-verbreitet-Deltas,
dann ein anderes Delta und abschließend ein anderes Identität-verbreitet-Delta,
dann hätten
diese Deltas und Teil-Deltas die folgenden Folgen und Teil-Folgen:
A1,
A1.1, A1.2, A2, A2.1
-
Wie
normale Deltas werden Teil-Deltas immer am Ende des Deltaprotokolls
eingefügt
und weisen eine/n feste/n Gruppennummer und Einsetzungspunkt in
dem Deltaprotokoll auf. Im obigen Beispiel wird A1.1 immer nach
A1 und vor A2 eingefügt.
Es könnte
in der gleichen Gruppe vorliegen wie A1, in der gleichen Gruppe
wie A2 oder in einer Gruppe zwischen den beiden. Weil Teil-Deltas
möglicherweise
nicht an alle Endpunkte gesendet werden, gibt es eine viel höhere Wahrscheinlichkeit,
daß andere
Endpunkte Deltas erzeugen, die in bezug auf Teil-Deltas unabhängig sind. Dies erhöht die Wahrscheinlichkeit
enorm, daß ein
Teil-Delta wiederholt wird. Jedoch sendet wegen einer begrenzten
Zahl von Deltas pro Gruppe ein Endpunkt, welcher unabhängige Deltas
erzeugt, die Gruppennummer voraus, und dann kommen die unabhängigen Deltas
nach den Teil-Deltas. Dadurch wird die Anzahl der Wiederholungen
von Teil-Deltas eingeschränkt.
-
Abhängigkeiten
werden auf einem Teil-Delta in einer Art und Weise eingestellt,
die ähnlich
der eines normalen Deltas ist. Weil das Teil-Delta nicht an alle
Endpunkte gesendet wird, werden die Abhängigkeiten nicht von der neuen
Abhängigkeit
entfernt, welche eingestellt wurde, nachdem die Abhängigkeiten
auf einem Teil-Delta eingestellt wurden. In dem Beispiel oben, würden die
Deltas folgende Abhängigkeiten
aufweisen:
A1 {}
A1.1 {A1}
A1.2 {A1}
A2 {A1}
A2.1
{A2}
-
Es
sei darauf hingewiesen, daß,
weil sie sich alle auf vorhergehenden Deltas von diesem Endpunkt befinden,
diese Abhängigkeiten
nicht explizit auf den Deltas eingestellt sind. Weil Teil-Deltas
nicht an alle Endpunkte gesendet werden, können sie keine neuen Sicherheitsschlüs sel für den Raum
enthalten. Beim Sichern von Deltas sendet der Dynamikmanager keinen
erneuten Schlüssel
in einem Teil-Delta.
-
Eine
XML-Datei auf einem Identität-verbreitet-Delta
ist in 16 gezeigt. Dieses Delta 1600 umfaßt ein Kommando
und Rückgängigmachen-Informationen
für dieses
Kommando und ein ausführungsverschachteltes
Delta mit einem Kommando und Rückgängigmachen-Informationen für dieses
Kommando. Das IdDiss-Attribut 1602 des Del-Elements 1604 ist
eingestellt, wenn es sich bei dem Delta um ein Identität-verbreitet-Delta
handelt. Das SubSeq-Attribut 1606 des
Del-Elements 1604 enthält
eine Teil-Folge des Deltas.
-
Prioritätsdeltas
werden verwendet, um zwei Situationen zu adressieren, welche im
oben beschriebenen Delta-Verbreitungssystem auftreten. Die erste
Situation ist die, daß wenn
ein neuer Endpunkt in einen geteilten Raum eingeladen wird, dieser
den Inhalt eines Deltaprotokolls senden muß, welches alle vorhergehenden
Deltas enthält,
die in dem geteilten Raum erzeugt wurden, weil Deltas, die unabhängig mit
Deltas ausgeführt
wurden, welche der Einladende vor der Einladung ausgeführt hatte,
die Wiederholung dieser vorherigen Deltas verursachen könnten. Aus
diesem Grund benötigt
der neu eingeladene Endpunkt alle diese vorhergehenden Deltas. Der
Inhalt eines Deltaprotokolls ist häufig viel größer als
die tatsächlichen
Daten in dem geteilten Raum und die Übertragung solchen Inhalts
kann zu einer erheblichen Zeitverzögerung beim Starten eines neuen
Endpunktes führen.
-
Die
zweite Situation kann in einem geteilten Raum veranschaulicht werden,
in dem es zehn Endpunkte gibt. Ein Endpunkt geht offline und führt ein
Delta aus. Die übrigen
neun Endpunkte sind alle online, und jeder von ihnen führt einhundert
Deltas aus. Wenn der Offline-Endpunkt
wieder online kommt, empfangen alle anderen Endpunkte das Delta,
welches ausgeführt
wurde, als der Endpunkt offline war, und der (nun) Online-Endpunkt
empfängt
die Deltas, die erzeugt wurden, als dieser Endpunkt offline war.
Zum Erreichen von Konvergenz gibt es zwei Möglichkeiten. Wenn das Delta
von dem Endpunkt, welcher offline ist, nach den anderen Deltas kommt,
müßte der
Endpunkt, welcher offline gegangen ist, dieses Delta wiederholen,
die neunhundert Deltas von den anderen Endpunkten ausführen und
dann dieses Delta überspringen.
Keiner der anderen Endpunkte müßte eine
Wiederholung ausführen.
Wenn jedoch das Delta von dem Offline-Endpunkt zuerst in das Deltaprotokoll
kam, müßten die
anderen neun Endpunkte alle die neunhundert Deltas wiederholen, das
eine Delta ausführen
und dann die neunhundert Deltas überspringen.
Offensichtlich erfordert die erstgenannte Situation viel weniger
Arbeit, jedoch wäre
es, aufgrund der Art und Weise, in welcher Gruppennummern zugewiesen
werden, am wahrscheinlichsten, daß die letztgenannte Situation,
oder zumindest eine, die dieser gleicht, auftritt.
-
Beide
Situationen werden durch Prioritätsdeltas
adressiert, welche eine Möglichkeit
bereitstellen, die Reihenfolgebildung unabhängiger Deltas zu steuern. Diese
können
verwendet werden, um die erste Situation durch das Ordnen unabhängiger Deltas
so zu adressieren, daß Deltas,
die nicht von einem einladenden Delta abhängig sind, keine Wiederholung
verursachen und daher ist es nicht notwendig, das gesamte Deltaprotokoll an
einen neuen Eingeladenen zu senden. Ähnlich kann eine solche Ordnung
verwendet werden, um die Menge von Wiederholungen zu verringern,
um die zweite Situation zu adressieren. Prioritätsdeltas werden so verarbeitet,
daß ein
Delta unabhängig
von einem Prioritätsdelta
nach sämtlichen
Deltas eingeordnet wird, von denen das Prioritätsdelta abhängig ist. Zum Beispiel, wenn
unabhängig
voneinander A die Deltas A1 und A1 erzeugt, und A1 ein Prioritätsdelta
ist, und B B1 erzeugt, dann wird, weil A2 ein Prioritätsdelta
ist, B1 immer nach A1 eingeordnet. B1 kann vor oder nach A2 kommen.
-
Zum
Adressieren der oben genannten ersten Situation, weist jedes Mal,
wenn ein neuer Endpunkt zu dem geteilten Raum hinzugefügt wird,
das Delta, welches ihn hinzufügt,
die höchstmögliche Priorität auf. Somit muß keines
der vorhergehenden Deltas wiederholt werden. Zum Adressieren der
zweiten Situation machen Endpunkte, welche online sind und Deltas
erzeugen, periodisch eines der Deltas zu einem Prioritätsdelta.
In dem oben angegebenen Beispiel bedeutet dies, daß die neunhundert
Deltas erzeugt durch die neun Online-Endpunkte eine Reihe von Prioritätsdeltas
enthalten. Der Offline-Endpunkt erzeugt kein Prioritätsdelta,
so daß nur
sehr wenige der neunhundert Deltas wiederholt werden müssen und
sich der Arbeitsaufwand erheblich verringert.
-
Zum
Verhindern von Interferenz zwischen simultanen Prioritätsdeltas,
wird die Priorität
von einem Delta ignoriert, wenn es ein unabhängiges Delta mit einer höheren Priorität (oder
der gleichen Priorität,
jedoch einem niedrigeren Einsetzungspunkt) gibt. Diese Operation
ist von daher problematisch, daß wenn
es zwei unabhängige
Deltas gibt, welche einen neuen Endpunkt zu dem Raum hinzufügen, einer
der neu hinzugefügten Endpunkte
eine Wiederholung von Deltas durchführen muß, die er möglicherweise nicht besitzt.
Diese letztgenannte Situation wird adressiert, indem einer der neu
eingeladenen Endpunkte als „Synchronisationsverlust" markiert wird, und
er muß dadurch
erneut in den geteilten Raum eingeladen werden.
-
Prioritätsdeltas
werden implementiert, indem eine Strukturschicht zu dem Deltaprotokoll,
welches ein Delta-„Block" genannte wird, hinzugefügt wird.
Deltablöcke
sind der größte Abschnitt
in dem Deltaprotokoll. Blöcke
enthalten Gruppen, Gruppen enthalten Ketten und Ketten enthalten
Deltas. Eine Gruppe kann unter mehreren Blöcken aufgeteilt sein. Jeder
Block enthält
eine Reihe von Gruppen und jeder Block weist ein bestimmtes Delta
auf, welches das Prioritätsdelta
ist, welches verursacht hat, daß der
Block erzeugt wird. Wenn ein neues Prioritätsdelta ankommt, verursacht
es, daß ein
neuer Block erzeugt wird, solange dieser neue Block die erneute
Assimilierung eines anderen Deltas mit einer höheren Priorität verursacht.
Sämtliche
assimilierten unabhängigen
Deltas werden aus dem vorhergehenden Block entfernt und in den neuen
Block verschoben (dies erfordert ein Zurückkehren zur vorherigen Position
eines unabhängigen
Deltas und dann ein Überspringen
mit dem unabhängigen
Delta in der neuen Position). Diese unabhängigen Deltas können erkannt
werden, wenn Prioritätsdeltas
eine komplette Darstellung des Deltaprotokollzustandes enthalten.
Der Deltaprotokollzustand besteht aus einer Liste, welche die höchste Folge
empfangen von jedem Endpunkt darstellt. Es sei darauf hingewiesen,
daß es
möglich
ist, daß eine
Gruppe zwischen unterschiedlichen Blöcken aufgeteilt ist, damit diese
absolute Deltaordnung nach Gruppe und Folge nicht länger wahr
ist.
-
Unter
Bezugnahme auf die XML-Implementierung eines Deltaprotokolls wie
in 9A und 9B veranschaulicht,
werden Deltablöcke
durch das Einfügen
von einem von mehreren DelBlk-Elementen in das Deltaprotokoll implementiert.
Ein Block ist definiert als ein Satz von Deltas mit einem Blockdelta,
welches das Delta mit der höchsten
Priorität
in dem Block ist. Alle Deltas von denen das Blockdelta abhängig ist,
befinden sich in vorhergehenden Blöcken. Alle Deltas, die nicht
von dem Blockdelta abhängig
sind, befinden sich in seinem Block. Deltas, die von dem Blockdelta
abhängig
sind, können
in seinem Block oder in anschließenden Blöcken sein. Diese Anordnung
stellt sicher, daß alle
Deltas, die von dem Blockdelta unabhängig sind, nach allen Deltas,
von denen das Blockdelta abhängig
ist, assimiliert werden.
-
Ein
DelBlk-Element wie das Element 904 weist mehrere Attribute
auf, einschließlich
eines DelSeq-Attributs, welches eine Folgenummer des Prioritätsdeltas
für diesen
Block enthält.
Diese Folgenummer ist wie oben beschrieben konstruiert. Ein HighGrpNum-Attribut
enthält
die Nummer der höchsten
Gruppe in dem Block. Ein NoUndo-Attribut ist eingestellt, wenn Deltas
in diesem Block nicht durch einen Benutzer rückgängig gemacht werden können. Jedes
DelBlk-Element 904 weist
eines von mehreren DelGrp-Elementen enthalten darin auf. Diese DelGrp-Elemente stellen
die Delta-Gruppen dar.
-
Bei
dieser Implementierung kann das zuvor genannte Problem, welches
bei unabhängigen
Operationen zum Hinzufügen
eines Endpunkts auftreten kann, erkannt werden, wenn zwei Deltas
zum Hinzufügen
eines Endpunktes die gleiche Blocknummer aufweisen. In diesem Fall wird
ein neuer Endpunkt zum „Gewinner" erklärt und der
andere Endpunkt wird als „Synchronisationsverlust" erklärt.
-
Prioritätsdeltas
werden mit den in 17 veranschaulichten Schritten
verarbeitet. Wenn ein Prioritätsdelta
assimiliert werden soll, muß zuerst
eine Entscheidung getroffen werden, ob seine Priorität ignoriert
wird. Wie zuvor beschrieben wird die Priorität ignoriert, wenn ein unabhängiges Delta
mit einer höheren
Priorität
vorliegt. So beginnt der Prozeß in
Schritt 1700 und fährt
fort mit Schritt 1702, wo alle unabhängigen Deltas lokalisiert werden.
Jedes Prioritätsdelta
weist ein Attribut auf, welches den Zustand des Deltaprotokolls
auf dem Endpunkt, welches es erzeugt hat, beschreibt. Dieser letztgenannte
Zustand wird verglichen mit dem Zustand des Deltaprotokolls auf
dem Endpunkt, welcher das Delta assimiliert. Aus diesen Informationen
können
die unabhängigen
Deltas lokalisiert werden.
-
Dann
werden in Schritt 1704 die Prioritäten der unabhängigen Deltas
verglichen. Wenn, wie in Schritt 1706 bestimmt, keines
der lokalisierten unabhängigen
Deltas eine höhere
Priorität
hat, als das Prioritätsdelta, welches
assimiliert wird, dann wird die Priorität des neuen Deltas anerkannt.
In Schritt 1708 beginnt jedes Prioritätsdelta einen neuen Block im
Deltaprotokoll. Prioritätsdeltas
teilen das Deltaprotokoll in Blöcke,
so daß alle Deltas,
von denen das Prioritätsdelta
abhängig
ist, früher
in Blöcke
assimiliert werden als Deltas in dem Block des Prioritätsdeltas.
Dann werden in Schritt 1712 alle Deltas, die unabhängig von
dem Prioritätsdelta
sind, und Deltas, die von den Prioritätsdeltas abhängig sind,
in den gleichen Block oder einen späteren Block assimiliert.
-
Insbesondere
nachdem der neue Block erzeugt wurde, muß jedes Delta, welches vom
Prioritätsdelta unabhängig ist,
neu in seine neue Position im Deltaprotokoll assimiliert werden.
Während
der Wiederholungsphase ist es notwendig, diese Deltas in ihrer alten
Position zu wiederholen und sie dann in der neuen Position zu überspringen,
um die Konvergenz zu wahren. Der Prozeß wird dann in Schritt 1714 abgeschlossen.
-
Alternativ
dazu, wenn in Schritt 1706 ein Delta mit einer höheren Priorität lokalisiert
wurde, wird die Priorität
des gerade assimilierten Prioritätsdeltas
nicht anerkannt. In diesem Fall fährt der Prozeß mit Schritt 1710 fort,
wo das Delta in den bestehenden aktuellen Block assimiliert wird.
Der Prozeß wird
dann in Schritt 1714 abgeschlossen.
-
Um
zu verhindern, daß Deltaprotokolle
in jedem Endpunkt aufgrund des Hinzufügens neuer Deltas kontinuierlich
in der Größe anwachsen,
werden die Protokolle periodisch eliminiert. Um jedoch die vorzeitige Zerstörung von
Deltainformationen zu verhindern, ist der Eliminierungsprozeß ein Zwei-Schritt-Prozeß. Zuerst erklärt jeder
Endpunkt die Gruppe, zu deren Eliminierung er bereit ist (basierend
auf der höchsten
Gruppe in jedem Endpunkt). Dann eliminieren alle Endpunkte Deltas
in Gruppen ausgewählt
durch Vergleichen der Gruppen, zu deren Eliminierung sich die Endpunkte
bereit erklärt
haben. Dieser Prozeß ist
in 18 veranschaulicht.
-
Der
Prozeß beginnt
in Schritt 1800 und fährt
fort mit Schritt 1802. Insbesondere übertragen in Schritt 1802 alle
Endpunkte periodisch Eliminierungsinformationen in Übertragungen,
die Endpunktimpulse genannt werden. Jeder Impuls enthält Informationen
zum Identifizieren der höchsten
Gruppennummer für
diesen Endpunkt und Informationen zum Identifizieren einer Gruppe,
für welche
eine Entscheidung zu einer ausstehenden Eliminierung getroffen wurde.
Ferner weist jeder Endpunktimpuls Abhängigkeiten in der gleichen
Art und Weise auf, in der Deltas Abhängigkeiten aufweisen. Wenn
die Abhängigkeiten
von dem Endpunkt fehlen, welcher den Impuls empfangt, wird der Impuls
gehalten, genau wie ein Delta gehalten werden würde. In Schritt 1804 werden
die höchsten
Gruppennummern für
die Endpunkte verglichen. In Schritt 1806 wird eins weniger
als das Minimum der höchsten
Gruppennummern für
alle aktiven Endpunkt als die Gruppe identifiziert, welche zum Eliminieren
aussteht. Und schließlich
eliminiert dann in Schritt 1808 jeder Endpunkt bis zum
Minimum der ausstehenden Gruppen aller aktiven Endpunkte. Der Prozeß endet
dann in Schritt 1810.
-
In
einer ähnlichen
Art und Weise können
die Endpunkte selbst aus der Endpunkt-XML-Struktur eliminiert werden, in Abhängigkeit
davon, ob sie aktiv sind oder nicht. Jeder Endpunkt weist einen
Zustand auf, der im State-Attribut des EPT-Elements in der oben
diskutierten Endpunkt-XML-Struktur gespeichert ist. Das State-Attribut
kann jeden der folgenden Werte aufweisen:
-
Jeder
Endpunkt bewegt sich abhängig
von ausgewählten
Bedingungen zwischen definierten Zuständen. Ein Zustandsdiagramm
für die
verschiedenen Zustände
und die Übergänge zwischen
Zuständen
ist in 19 gezeigt. Zum Beispiel wechselt
ein Endpunkt in den Lokal-Zustand 1902,
wie durch den Pfeil 1912 veranschaulicht, wenn ein neuer
geteilter Raum erzeugt wird. Ein anderer Endpunkt als der lokale
Endpunkt wechselt in den Aktiv-Zustand 1904, wie durch
den Pfeil 1914 veranschaulicht, wenn ein AddMember-Delta (Einladung)
für diesen
Endpunkt ausgeführt
wird oder wenn ein AddDeviceForMember-Delta für diesen Endpunkt (geteilten
Raum holen) ausgeführt
wird. Ähnlich
wechselt ein Endpunkt in den Neu-Zustand 1906, wie angegeben
durch den Pfeil 1916, wenn ein Delta von dem zuvor unbekannten
Endpunkt empfangen wird.
-
Ein
Endpunkt wechselt vom Lokal-Zustand 1902 zum Aktiv-Zustand 1904,
wie angegeben durch den Pfeil 1918, wenn mit dem Serialisieren
eines Raumes für
einen unterschiedlichen Endpunkt begonnen wird. In diesem Fall wechselt
der lokale Endpunkt in den Aktiv-Zustand 1904. Ähnlich wechselt
ein Endpunkt vom Aktiv-Zustand 1904 zu einem Lokal-Zustand 1902,
wie angegeben durch den Pfeil 1920, wenn ein Raum auf einem
Endpunkt deserialisiert wird. In diesem Fall wechselt dieser Endpunkt
in den Lokal-Zustand 1902. Dieser letztgenannte Übergang
kann zustande kommen, wenn ein Konto erneut auf ein Gerät importiert
wird, auf dem es bereits vorher installiert war.
-
Ein
Endpunkt kann vom Aktiv-Zustand 1904 in den Neu-Zustand 1906 wechseln,
wie angegeben durch den Pfeil 1924, wenn ein Konto erneut
auf ein Gerät
importiert wird, auf dem es bereits vorher installiert war. Ein
Endpunkt kann von einem Aktiv-Zustand 1904 zu einem Trennung-Zustand 1908 wechseln,
wie angegeben durch den Pfeil 1930, wenn der aktive Endpunkt
durch den lokalen Endpunkt zu einem „Nachzügler" erklärt wird. Ein Nachzügler-Endpunkt
ist als ein Endpunkt definiert, von dem für einen bestimmten Zeitraum keine
Deltas assimiliert wurden. Die Zeitprüfung erfolgt üblicherweise
während
des oben erwähnten
Eliminierungserklärungsprozesses.
Dieser Übergang
kann auch stattfinden, wenn ein Delta von dem aktiven Endpunkt ausgeführt wird,
wobei der lokale Endpunkt informiert wird, daß der aktive Endpunkt den Raum
gelöscht
hat. Es kann ferner passieren, wenn ein Delta, welches den aktiven
Endpunkt aus dem Raum auslädt,
ausgeführt wird.
Und schließlich
kann dieser Übergang
erzeugt werden, wenn eine Trennen-Benachrichtigung durch den lokalen
Endpunkt empfangen wird, welche diesen darüber informiert, daß der aktive
Endpunkt nun getrennt ist.
-
Ein Übergang
vom Neu-Zustand 1906 zum Aktiv-Zustand 1904 findet
statt, wie angegeben durch den Pfeil 1923, wenn ein AddMember-Delta
(Einladung) für
diesen Endpunkt ausgeführt
wird oder wenn ein AddDeviceForMember-Delta (geteilten Raum holen)
ausgeführt
wird. Dieser Übergang
kann auch erfolgen, wenn ein AddEndpoint-Delta (Kontoimport) ausgeführt wird.
-
Ein Übergang
vom Neu-Zustand 1906 zum Trennung-Zustand 1908 kann
stattfinden, wie angegeben durch den Pfeil 1926, wenn ein
Delta von einem neuen Endpunkt empfangen wird, dessen Einsetzungspunkt als
ausstehend zum Eliminieren markiert wurde. Er kann auch stattfinden,
wenn der lokale Endpunkt den Einsetzungspunkt eines Deltas von dem
neuen Endpunkt als „ausstehend
zu Eliminieren" erklärt. Außerdem kann dieser Übergang
stattfinden, wenn eine Trennen-Benachrichtigung durch den lokalen
Endpunkt empfangen wird, welche ihn informiert, daß der neue
Endpunkt nun getrennt ist.
-
Ein Übergang
vom Neu-Zustand 1906 zum Getrennt-Zustand 1910 kann
stattfinden, wie angegeben durch den Pfeil 1938, wenn ein
Delta von einem neuen Endpunkt empfangen wird, dessen Einsetzungspunkt eliminiert
wurde. Er kann auch stattfinden, wenn der Einsetzungspunkt eines
Deltas empfangen durch den lokalen Endpunkt von dem neuen Endpunkt
durch den lokalen Endpunkt eliminiert wurde.
-
Ein Übergang
vom Trennung-Zustand 1908 zum Aktiv-Zustand 1904,
wie angegeben durch den Pfeil 1932, kann stattfinden, wenn
ein AddMember-Delta (Einladung) ausgeführt wird oder wenn ein AddDeviceForMember-Delta
(geteilten Raum holen) ausgeführt
wird. Ein solcher Übergang
kann auch stattfinden, wenn ein AddEndpoint-Delta (Kontoimport)
ausgeführt
wird.
-
Ein Übergang
vom Trennung-Zustand 1908 zum Neu-Zustand 1906 kann
stattfinden, wie angegeben durch den Pfeil 1926, wenn ein
Konto erneut auf ein Gerät
importiert wird, auf dem es bereits zuvor installiert war. Ein Übergang
vom Trennung-Zustand 1908 zu Getrennt-Zustand 1910 kann
stattfinden, wie angegeben durch den Pfeil 1934, wenn der
Einsetzungspunkt eines Deltas empfangen durch den lokalen Endpunkt
von dem in Trennung befindlichen Endpunkt durch den lokalen Endpunkt
eliminiert wird. Ein Übergang
vom Getrennt-Zustand 1910 zum Aktiv-Zustand 1904 kann
stattfinden, wie angegeben durch den Pfeil 1922, wenn der lokale
Endpunkt ein AddMember-Delta (Einladung) oder ein AddDeviceForMember-Delta
(geteilten Raum holen) oder ein AddEndpoint-Delta (Kontoimport)
ausführt.
-
Ein Übergang
vom Getrennt-Zustand 1910 zu einem Neu-Zustand 1906 kann
stattfinden, wie angegeben durch den Pfeil 1936, wenn ein
Konto erneut auf ein Gerät
importiert wird, auf dem es bereits zuvor installiert war.
-
Eine
Softwareimplementierung der oben beschriebenen Ausführungsform
kann eine Reihe von Computeranweisungen entweder fest auf einem
greifbaren Medium, wie einem computerlesbaren Medium, zum Beispiel
eine Diskette, eine CD-ROM, einen ROM-Speicher oder eine Festplatte,
oder übertragbar
auf ein Computersystem über
ein Modem oder ein anderes Schnittstellengerät über ein Medium umfassen. Das
Medium kann entweder ein greifbares Medium sein, einschließlich, jedoch
nicht darauf beschränkt,
optische oder analoge Kommunikationsleitungen, oder es kann mit
drahtlosen Techniken implementiert sein, einschließlich, jedoch
nicht darauf beschränkt,
Mikrowellen-, Infrarot- oder andere Übertragungstechniken. Es kann
auch das Internet sein. Die Reihe von Computeranweisungen umschließt die gesamte
oder einen Teil der zuvor hierin hinsichtlich der Erfindung beschriebenen
Funktionalität.
Dem Fachmann auf dem Gebiet wird klar sein, daß solche Computeranweisungen
in einer Reihe von Programmiersprachen geschrieben sein können, für die Verwendung
mit vielen Computerarchitekturen oder Betriebssystemen. Ferner können solche
Anweisungen unter Verwendung jeder gegenwärtigen oder zukünftigen
Speichertechnologie gespeichert werden, einschließlich, jedoch
nicht darauf beschränkt,
Halbleiter-, magnetische, optische oder andere Speichergeräte, oder übertragen
mittels jeder gegenwärtigen
oder zukünftigen
Kommunikationstechnologie, einschließlich, jedoch nicht darauf
beschränkt,
optische, Infrarot-, Mikrowellen- oder andere Übertragungstechnologien. Es
wird erwägt, daß ein solches
Computerprogrammprodukt als ein entfernbares Medium mit beiliegender
gedruckter oder elektronischer Dokumentation vertrieben werden kann,
z.B. eingeschweißte
Software, vorinstalliert auf einem Computersystem, z.B. auf dem
System-ROM oder der Festplatte, oder von einem Server oder einer
elektronischen Anschlagtafel über
ein Netz, z.B. das Internet oder das World Wide Web.
-
Obwohl
eine exemplarische Ausführungsform
der Erfindung offenbart wurde, dürfte
dem Fachmann auf dem Gebiet klar sein, daß verschiedene Änderungen
und Modifikationen vorgenommen werden können, welche einige der Vorteile
der Erfindung erreichen, ohne sich vom Gedanken und dem Umfang der
Erfindung zu entfernen.