-
Die
Erfindung betrifft Telekonferenzsysteme. Insbesondere bezieht sich
die Erfindung auf Mechanismen zum Austauschen von Daten zwischen
einer Mehrzahl von Teilnehmern in einem elektronischen Konferenzsystem.
-
Ein
sich zunehmend entwickelndes Gebiet bei der Vernetzung von Computern
ist das Gebiet der elektronischen Konferenzen. Konferenzen bieten
die Möglichkeit,
ein elektronisches On-Line-"Treffen" zwischen einer Vielzahl
von Benutzern an einem Computersystem an einer Vielzahl von Orten
durchzuführen.
Benutzer an unterschiedlichsten Stellen können miteinander kommunizieren,
als ob sie im gleichen Raum wären.
Unter Verwendung solcher Anwendungsprogramme haben moderne Kommunikationssysteme
die Möglichkeit
geschaffen, Treffen durchzuführen,
bei denen sämtliche
Benutzer über ihre
individuellen Computersysteme teilnehmen und sich Daten, Graphik,
Text und andere Informationsarten teilen. Benutzer können miteinander
kommunizieren, indem sie sich Daten in Form von graphischen Abbildungen,
Text oder anderen Anmerkungen oder anderen auf einem Display des
Computersystems darstellbaren Informationen teilen. Dies findet
analog zu einem Treffen statt, bei dem die Teilnehmer sich gegenübersitzen
und Informationen einander auf einer weißen oder schwarzen Tafel darstellen
und wobei andere Teilnehmer Anmerkungen hinzufügen oder löschen können oder die Tafel andere Weise
modifizieren können.
Es ist darüber
hinaus zu erwarten, daß in
dem Maße,
in dem die Bandbreite von Kommunikationsmedien verbessert wird und Kompressionsstandards
für graphische
Daten robuster werden, Videodaten unter einer Vielzahl von miteinander
verbundenen Benutzern während
solcher Fernkonferenzen ebenfalls geteilt werden.
-
Eines
der Erfordernisse eines elektronischen Konferenzsystems ist die
Notwendigkeit, die gleichen Daten auf den Displays sämtlicher
an der Konferenz teilnehmender Benutzer zu reproduzieren. Solche Systeme
implementieren typischerweise diese Fähigkeit auf unterschiedlichste
Weise. Der gebräuchlichste
Weg ist das Client/Server-Modell, bei dem ein einziger verbundener
Knoten als "Server" der anderen Knoten
des Systems agiert, und die restlichen in der Konferenz miteinander
verbundenen Knoten als Slaves oder Clients des Server-Prozesses
agieren. Folglich empfängt
jeder dieser Clients überwiegend Daten
von der Zentralmaschine, um sein Display zu aktualisieren. Solche
Systeme sind jedoch vollständig
abhängig
von den Diensten, die von dem Server zur Verfügung gestellt werden, und dem
Durchsatz des Kommunikationsmediums. Offensichtlich leiden Systeme,
in denen die Clients mehr oder weniger als Displays und Eingabeeinrichtungen
für Benutzeranforderungen
dienen, an schweren Leistungsproblemen infolge der sich ergebenen
Aktualisierung von Daten von dem Server, welche typischerweise seriell von
dem Server behandelt werden.
-
Eine
andere bekannte Lösung
zur Aufrechterhaltung der Synchronität sämtlicher Teilnehmer-Displays
in einem Konferenzsystem stützt
sich auf ein verteiltes Client/Server-System. Bei einer verteilten
Client/Server-Lösung
wird eine geteilte Objekt-Struktur auf dem Server gehalten und Clients werden über Änderungen
der verteilten Informationen durch Warnsignale oder Dämonen (demons)
informiert. Der Nachteil dieser Lösung ist, ähnlich wie bei der zentralisierten
Client/Server-Lösung,
das Angewiesen-Sein auf die Architektur selbst. Dies schließt eine
Datenkonferenz-Anbindung ein, welche in der Lage sein muß, verschiedene
Benutzer über eine
Telefonleitung von Punkt zu Punkt ohne das Erfordernis eines Zugriffs
auf einen zentralen gemeinsamen Server zu verbinden.
-
Bei
der Client/Server-Lösung
leidet darüberhinaus
die Leistungsfähigkeit
in hohem Maße
dadurch, daß Anforderungen
zum Hinzufügen
oder Löschen
von Objekten, wie beispielsweise Anmerkungen, graphischen Abbildungen
oder anderen Informationen auf einem Teilnehmer-Display, vollständig von
der Kommunikation von dem Server abhängig sind. Somit leidet die
Echtzeit-Leistungsfähigkeit
bei bekannten Client/Server-Modellen, da die Genehmi gung zum Einwirken
auf und manipulieren von Objekten auf einem Teilnehmer-Display vollständig abhängig ist
von einem gesamten Satz abhängiger
Variablen, wie beispielsweise der Anzahl der beim Server anhängigen Anforderungen,
dem Durchsatz des Kommunikationsmediums, der Anzahl der verbundenen
Teilnehmer usw.
-
Eine
weitere bekannte Lösung
zur Aufrechterhaltung der Synchronizität einer Mehrzahl von Teilnehmern
in einem Konferenzsystem ist die Verwendung eines verteilten objekt-orientierten
Systems. Dies ist eine verallgemeinerte Lösung, welche sich, bei einer
bekannten Lösung,
auf Erweiterungen der SmallTalk-Sprache
selbst stützt.
Bei diesem bekannten System senden "lokale" Objekte Nachrichten zu "Stellvertreter"-Objekten, welche
lokale Repräsentanten
für Objekte
in dem "geteilten" Objektraum sind.
Die Stellvertreter-Objekte kommunizieren mit den realen Objekten über einen
RPC-Mechanismus (Remote Procedure Call – Fern-Prozeduraufruf). RPC
ist ein Protokoll, das das Verfahren regelt, mit welchem eine Anwendung
Prozesse auf anderen Knoten aktiviert und die Ergebnisse zurückgewinnt. Solch
ein herkömmlicher
Mechanismus wird von Sun Microsystems, Inc., definiert und in RFC-1057
beschrieben, was einen Standard für eine Initiierung und Erneuerung
von Prozessen auf fernen oder verteilten Computersystemen schafft.
-
Das
Problem bei dieser Lösung
liegt in seiner Allgemeingültigkeit,
welche eine extensive Unterstützung
bei der Teilung beliebiger Objekte erfordert, während keine Annahmen über das
Verhalten der Objekte gemacht werden. Dies hat zwei Nachteile. Zuerst
wird ein komplexes "SmallTalk-System" benötigt, um
die Verteilung von Objekten allgemein zu unterstützten. Zweitens ist das Konkurrenzproblem
für ein
beliebiges Objekt schwierig, weil mehrere Teilnehmer unterschiedliche
Objekte in ihren Systemen haben können und solche unterschiedlichen
Objekte möglicherweise
nicht in der Lage sind, zu den restlichen Benutzern kommuniziert
oder übertragen
zu werden.
-
Das
U.S.-Patent Nr. 4,953,159 offenbart ein Konferenzsystem, bei welchem Änderungen
an einer Datei (z. B. einem Dokument), welche in einem Datenterminal
eines Konferenzteilnehmers gespeichert ist und welche der Konferenzteilnehmer
auf das Display des Datenterminals bringt, automatisch an sämtliche
Konferenzteilnehmer zur Anzeige auf ihren jeweiligen Terminals über eine
Datenbrücke
verteilt wird, welche Datenpakete aus dem Terminal des Konferenzteilnehmers
empfängt
und die Datenpakete an die Terminals der anderen Konferenzteilnehmer sendet.
Jedoch fehlt es bei dem System an einem Steuermechanismus, der sich
mit gleichzeitigen Änderungen
an einem Dokument durch mehrere Teilnehmer befaßt. Darüber hinaus wird bei dem bekannten
System sämtlichen Änderungen
einer Datei eine gleiche Priorität
gewährt
und es werden sämtliche Änderungen
an die mit der Datenbrücke
verbundenen Konferenzteilnehmerterminals übermittelt, wenn sie empfangen
werden, selbst dann, wenn das System infolge anderer Verarbeitungsanforderungen über geringe
Ressourcen verfügt
oder wenn die Änderung
eine Änderung
geringer Priorität
ist.
-
Das
U.S.-Patent Nr. 4,707,831 offenbart ein Datenübertragungssystem, bei dem
Sprachpaketen eine größere Priorität gegeben
wird als Datenpaketen, so daß die Übertragung
von Datenpaketen unterbrochen wird, wenn ein Sprachpaket gesendet
werden soll. Jedoch lehrt das System des U.S.-Patents Nr. 4,707,831
nicht das Synchronisieren der Teilnehmer innerhalb eines Konferenzsystems.
-
Ein
weiterer Nachteil bekannter Datenkonferenzsysteme liegt in ihrer
Fähigkeit
zum Unterstützen der Übertragung
sehr großer
Informationsblöcke.
Typischerweise stützen
sich solche Systeme auf Punkt-Zu-Punkt-Kommunikationsschemen, bei
welchen einzelne Knoten, wie beispielsweise der Server in dem Client/Server-Modell,
die Informationen von einem einzelnen Knoten zu dem Server und dann von
dem Server zu den restlichen Teilnehmersystemen übertragen muß. Außerdem verbraucht
die Übertragung
sehr großer
Datenblöcke,
wie beispielsweise Dateien, und/oder Abbildungen oder andere Daten,
einen großen
Teil der Ressourcen in dem System und der Bandbreite des Kommunikationsmediums.
Folglich leiden bekannte Konferenzsysteme an schweren Leistungseinbußen, die
von der Datenmenge verursacht werden, welche innerhalb des Systems
während
einer Telekonferenz übertragen werden
können.
-
Die
Erfindung bezieht sich auf ein Verfahren und eine Einrichtung zur
Kommunikation zwischen Teilnehmern in einem elektronischen Konferenzsystem.
Es wird ein Verfahren angegeben zum Übertragen von Datenblöcken großer Objekte
zwischen einer Mehrzahl von Teilnehmern während einer elektronischen
Konferenz in einem elektronischen Konferenzsystem, in dem sich die
Mehrzahl von Teilnehmern während
der elektronischen Konferenz Daten teilen, das die folgenden Schritte
aufweist:
- a) Empfangen einer asynchronen Anforderung nach
Daten großer
Objekte;
- b) Anordnen der Anforderung in einer Anforderungswarteschlange;
- c) Empfangen einer asynchronen Anforderung zum Umpriorisieren
der Anforderungswarteschlange;
- d) Bestimmen der Fähigkeit
eines Transportmediums;
- e) Partitionierung der Daten großer Objekte in Datenblöcke, wobei
die Größe der Datenblöcke variabel
ist und der Fähigkeit
des Transportmediums angepaßt
wird;
- f) Übertragen
der angeforderten Daten großer
Objekte zu jedem der Teilnehmer über
das Transportmedium;
- g) Entfernen der Anforderung aus der Anforderungswarteschlange
bei Abschluß des
Sendens der angeforderten Daten der großen Objekte.
-
Die
Erfindung schafft ein Datenkonferenzsystem, bei dem die Echtzeit-Leistungsfähigkeit
der einzelnen Teilnehmer des Datenkonferenzsystems nicht an Leistungsproblemen
infolge des Durchsatzes des Mediums leidet.
-
Es
wird ein verbessertes Datenkonferenzsystem geschaffen, welches es
den Benutzern gestattet, in der Konferenz von ihren einzelnen Systemen
eine Antwort mehr oder weniger in Echtzeit zu erhalten.
-
Die
Erfindung überwindet
die Nachteile der bekannten Client/Server-Modelle, die für bestimmte Konferenzanwendungen
zur Verfügung
gestellt werden.
-
Die
Erfindung schafft ein System, welches die Konkurrenz unter einer
Mehrzahl von Teilnehmern in einer Konferenzanwendung ermöglicht,
welches jedoch nicht die Echtzeit-Leistungsfähigkeit verringert.
-
Die
Erfindung schafft die Möglichkeit
zum Übertragen
sehr großer
Datenblöcke,
ohne die Echtzeit-Leistung für
Benutzer in einem Konferenzanwendungsprogramm zu beeinträchtigen.
-
Im
folgenden wird die Erfindung anhand von in der Zeichnung dargestellten
Ausführungsbeispielen
näher beschrieben.
-
1a veranschaulicht
eine Topologie eines Systems, in welchem verschiedene Teilnehmer
in einem Konferenzsystem miteinander verbunden werden können.
-
1b veranschaulicht
ein Blockschaltbild einer in einem Teinehmer eines Konferenzsystems enthaltenen
Schaltung.
-
2 ist
eine Blockdarstellung der verschiedenen Steuerprozeduren, welche
in einem Teilnehmer einer Konferenz vorhanden sind.
-
3 ist
eine Blockdarstellung der in einem implementierten Ausführungsbeispiel
der Erfindung verwendeten Klassen.
-
4 veranschaulicht
die Arten von Anmerkungen, welche auf einem Benutzer-Display des
einzelnen Teilnehmers in verschiedenen Implementierungen des bevorzugten
Ausführungsbeispiels
ausgeführt
werden können.
-
5 veranschaulicht
die Objekt-Hierarchie, die in bestimmten Ausführungsbeispielen der Erfindung
verwendet wird.
-
6a und 6b veranschaulichen
Verfahrensablaufdiagramme eines Prozesses, der bei Erfassung eines
Ereignisses ausgeführt
wird, das die Erschaffung/Löschung/Modifikation
von Objekten während
einer elektronischen Konferenz erfordert wobei der Prozeß in einem
Ausführungsbeispiel
der Erfindung von einer Ereignisschleife des Objektmanagers ausgeführt werden
kann.
-
7a bis 7e veranschaulichen
von einem Entscheider und einem Teilnehmer in einem Konferenzsystem
aufrechtgehaltene Objektstrukturen zu verschiedenen Zeitpunkten,
wenn ein Teilnehmer Aktionen in seinem lokalen System ausführt.
-
8 veranschaulicht
ein Verfahren, das für die
verzögerte Übertragung
sehr großer
binärer
Daten-Objekte in bestimmten Ausführungsbeispielen der
Erfindung verwendet wird.
-
9 veranschaulicht
ein Verfahrensablaufdiagramm einer Datenobjektanforderung, die in
einem Ausführungsbeispiel
der Erfindung verwendet wird.
-
10 veranschaulicht
die Bestimmung eines Transport-Qualifizierers, der zum Übertragen
der Daten großer
Objekte in einem Ausführungsbeispiel der
Erfindung verwendet wird.
-
11 veranschaulicht
ein Verfahrensablaufdiagramm eines Prozesses, der zum Bestimmen der
Notwendigkeit einer partiellen Anforderung von Daten großer Objekte
in einem Ausführungsbeispiel der
Erfindung verwendet wird.
-
12a bis 12c veranschaulichen
verschiedene Stufen der Vervollständigung der Übertragung
von Daten sehr großer
Objekte in einem Ausführungsbeispiel
der Erfindung.
-
13 veranschaulicht
die Architektur eines Hintergrund-Übertragungs-Managers.
-
14 und 15 veranschaulichen
die Verarbeitungslogik für
die Teilnehmer-Verbindungs/Trennungslogik.
-
16 veranschaulicht
einen Übertragungswarteschlangeneintrag.
-
17 veranschaulicht
ein Beispiel des Übertragungsanforderungs-Umpriorisierungsprozesses.
-
18 veranschaulicht
ein Beispiel der Klar-zum-Senden-Verarbeitung
eines Übertragungswarteschlangeneintrags.
-
19 und 20 veranschaulichen
die Anforderungsverarbeitungslogik der Erfindung.
-
Die
Erfindung bezieht sich auf ein Verfahren und eine Einrichtung zur
Kommunikation zwischen Teilnehmern in einem elektronischen Konferenzsystem.
Obwohl die Erfindung unter Bezugnahme auf spezielle Signalnamen,
Formate, Zeitintervalle und andere spezielle Informationen beschrieben
wird, dienen diese nur Zwecken der Veranschaulichung und sind nicht
im Sinne einer Einschränkung
der Erfindung zu verstehen. Für
den Fachmann ist es klar, daß viele
Abwandlungen gemacht werden können, ohne
von dem Wesen und Umfang der Erfindung abzuweichen.
-
Wie
in 1a gezeigt ist, kann ein Kommunikationssystem
eine Mehrzahl von Teilnehmern 11 bis 14 aufweisen,
die alle an ein Kommunikationsmedium 20 gekoppelt sind.
In bestimmten Ausführunsbeispielen
der Erfindung hat jeder an das Medium 20 gekoppelte einzelne
Teilnehmer äquivalente
Möglichkeiten,
um die Kommunikation zwischen den Teilnehmern zu ermöglichen.
Das implementierte Konferenzsystem verwendet eine verteilte Lösung, bei
der jeder Teilnehmer (11 bis 14) lokale Kopien
der Konferenzstruktur ("Treffen" genannt) aufrecht
hält, wobei die
Kopien miteinander übereinstimmen
sollen. Darüber
hinaus dient in einem Ausführungsbeispiel
der Erfindung einer der Teilnehmer 13 als Entscheider, der
Anfordungen zum Hinzufügen
von Objekten zu unterschiedlichen Strukturen innerhalb jedes Teilnehmers gestattet,
um die Konsistenz unter den auf den Systemen jedes Teilnehmers angezeigten
Objekten aufrechtzuerhalten. Das in den verschiedenen Ausführungsbeispielen
der Erfindung verwendete System benutzt eine verteilte Architektur,
bei der jeder Teilnehmer (11 bis 14) lokale Kopien
sämtlicher
in der elektronischen Konferenz verwendeter Objekte aufrecht hält. Somit
werden Displays, Texte, Graphik und andere auf den Displays der
Teilnehmer des Computersystems angezeigte Informationen in Datenstrukturen
dargestellt, die in lokalen Speichern jedes der Systeme und/oder
in mit den Systemen gekoppelten Medien-Geräten gehalten werden. Folglich stellt
das vorliegende System eine Hybride der Client/Server-Architektur
dar, bei der anstelle der Aufrechterhaltung zentraler Kopien sämtlicher
Objekte in dem elektronischen Konferenzsystem jeder Teilnehmer eine
lokale Kopie der Daten hält,
so daß Änderungen
der Daten mehr oder weniger sofort erfolgen. Die Struktur eines
Teilnehmers, der mit dem Kommunikationsmedium 20 gemäß 1a gekoppelt
sein kann, ist in 1b veranschaulicht.
-
Im
folgenden wird auf 1b Bezug genommen, in der ein
System 100 gezeigt ist, das bei einem Ausführungsbeispiel
eines erfindungsgemäßen Teilnehmers
(z.B. 11 gemäß 1a)
implementiert ist. System 100 weist einen Bus 101 oder
eine andere Kommunikationseinrichtung zum Austauschen von Informationen
und eine mit dem Bus 101 gekoppelte Verarbeitungseinrichtung 102 zum
Verarbeiten von Informationen auf. System 100 weist ferner
einen mit dem Bus 101 gekoppelten Speicher mit wahlfreiem Zugriff 104 (RAM)
oder eine andere flüchtige
Speichereinrichtung (im folgenden als Hauptspeicher bezeichnet)
zum Speichern von Informationen und durch den Prozessor 102 auszuführenden
Instruktionen auf. Der Hauptspeicher 104 kann außerdem während der
Ausführung
von Instruktionen durch den Prozessor 102 zum Speichern
temporärer
Variablen oder anderer Zwischeninformationen verwendet werden. Das
System 100 weist darüber
hinaus einen mit dem Bus 101 gekoppelten Nur-Lese-Speicher 106 (ROM) und/oder
eine andere statische Speichereinrichtung zum Speichern statischer
Informationen und von Instruktionen für den Prozessor 102 und
eine Datenspeichereinrichtung 107, wie beispielsweise eine magnetische
oder optische Platte und das ihr zugeordnete Plattenlaufwerk, auf.
Die Datenspeichereinrichtung 107 ist mit dem Bus 101 zum
Speichern von Informationen und Instruktionen gekoppelt. Das System 100 kann
ferner mit einer Anzeigeeinrichtung 121, wie beispielsweise
einer Kathodenstrahlröhre (CRT)
oder einer Flüssigkristallanzeige
(LCD) verbunden sein, die zum Anzeigen von Informationen mit dem
Bus 101 gekoppelt ist. Ein alphanumerisches Eingabegerät 121,
welches alphanumerische und andere Tasten einschließt, kann
außerdem
mit dem Bus 101 zum Übermitteln
von Informationen und Befehlsselektionen an den Prozessor 102 gekoppelt sein.
Ein zusätzliches
Benutzereingabegerät
ist die Cursor-Steuereinrichtung 123, beispielsweise eine Maus,
ein Trackball, ein Stift oder die Cursor-Tasten auf einer Tastatur,
die mit dem Bus 101 gekoppelt ist zum Senden von Richtungsinformationen
und Befehlsselektionen an den Prozessor 102 und zum Steuern
der Cursor-Bewegung auf dem Display 121. Eine andere Einrichtung,
welche mit dem Bus 101 gekoppelt sein kann, ist eine Hard-Copy-Einrichtung 124,
welche zum Drucken von Instruktionen, Daten oder anderen Informationen
auf einem Medium, wie beispielsweise Papier, einen Film oder eine ähnliche Medienart,
verwendet werden kann. Bei dem beschriebenen Ausführungsbeispiel
ist ferner eine Kommunikationseinrichtung 125 mit dem Bus 101 gekoppelt,
welche zum Kommunizieren mit anderen Teilnehmern verwendet wird.
Diese Kommunikationseinrichtung kann eine beliebige Anzahl kommerziell
verfügbarer
Peripherieeinrichtungen für
Netzwerke enthalten, wie beispielsweise solche, die zum Koppeln
an ein Ethernet- oder Token-Ring-Kommunikationsmedium verwendet
werden. Zu beachten ist, daß sämtliche
oder ein Teil der Komponenten des Systems 100 und der zugeordneten
Hardware in verschiedenen Ausführungsbeispielen
verwendet werden können.
-
Bei
einem Ausführungsbeispiel
ist das System 100 ein IBM-kompatibler Personalcomputer. Der Prozessor 102 kann
ein 80×86-kompatibler Mikroprozessor,
wie beispielsweise der 80386, der 80486 oder der Pentium-Mikroprozessor,
sein, der von der Intel Corporation, Inc., in Santa Clara, Kalifornien, hergestellt
wird.
-
Zu
beachten ist, daß die
folgende Erörterung verschiedener
Ausführungsbeispiele
speziell auf eine Reihe von Routinen Bezug nimmt, welche in einer
Objekt-orientierten höheren
Programmiersprache geschrieben sind (z.B. in Microsoft C/C++, erhältlich von
Microsoft Inc., Redmond, BA). Diese Serie von Routinen wird kompiliert,
verbunden und dann während
der Laufzeit im Objektcode im System 100 abgearbeitet.
Für den
Fachmann ist es jedoch klar, daß die
folgenden Verfahren und Einrichtungen in speziellen Hardware-Einrichtungen,
wie beispielsweisen diskreten Logikbauelemente, hochintegrierten
Schaltungen (LSI's),
anwendungsspezifischen integrierten Schaltungen (ASIC's) oder anderer spezieller
Hardware, implementiert werden können.
-
Software-Organisation
eines Teilnehmers
-
Während der
Konferenzlaufzeit ist innerhalb jedes Teilnehmers eine Reihe von
Software-Prozeduren abarbeitbar angeordnet, welche in einer in 2 dargestellten
Weise organisiert sind. 2 veranschaulicht ein allgemeines
Blockdiagramm der Organisation des Prozesses innerhalb eines einzelnen
Teilnehmers bei einem Ausführungsbeispiel
der Erfindung. Die Software-Organisation 200 innerhalb eines
einzelnen Teilnehmers weist einen Mehr-Punkt-Prozeß 240 auf,
welcher für
die direkte Kommunikation über
das Kommunikationsmedium 260 verantwortlich ist, so daß mit anderen
Teilnehmern 250 kommuniziert werden kann. Dieser Prozeß stellt
sämtliche
Low-Level-Kommunikationsfunktionen zur Verfügung, welche ein direktes Zugreifen
auf das Kommunikationsmedium 260 gestatten. In verschiedenen
Ausführungsbeispielen
der Erfindung kann das Kommunikationsmedium 260 eines der
verschiedenen Netzwerk-Standardmedien sein, beispielsweise ein lokales
Netzwerk (LAN) vom Ethernet-, Token-Ring- oder von einem anderen Typ.
-
Das
Kommunikationsmedium 260 kann außerdem ein Telefonnetzwerk
mit einer Modem-Verbindung oder ein anderes Datenkommunikationsmedium
sein. Die Mehr-Punkt-Funktion 240 stellt folglich sämtliche
notwendige Funktionen, wie die Paketbildung und die Beantwortung
von über
das Kommunikationsmedium 260 empfangenen Kommunikationen,
zur Verfügung.
Die nächsthöhere Ebene
in der Software-Organisation 200 eines einzelnen Teilnehmers
ist der Konferenzmanager 230, welcher alle erforderlichen
Ausführungsfunktionen
zur Kommunikation mit den Kommunikationsfunktionen 240 der
unteren Ebene und den von dem Bedienerschnittstellen-Prozeß 210 und
dem Objektmanager 220 zur Verfügung gestellten Funktionen
höherer
Ordnung liefert. Der Konferenzmanager 230 steuert den Objektmanager 220 über eine
Serie von Rückrufen
zu Kommandos in dem Konferenzsystem, welche ausgeführt werden
sollen. Der Konferenzmanager 230 führt darüber hinaus die Rückrufe in
den Objektmanager 220 entsprechend den von dem Kommunikationsprozeß 240 empfangenen
Nachrichten aus und lenkt die Erschaffung, Löschung von Objekten oder andere
Aktionen an Objekten in dem System. Wie unten näher beschrieben werden wird,
werden Objekte innerhalb des Systems, wie beispielsweise Anmerkungen,
Seiten, Kommandos, unter Verwendung eines Objekt-orientierten Systems
behandelt, wobei Hierarchien der Objekte definiert werden.
-
Die
Kommunikation vom Objektmanager 220 zum Konferenzmanager 230 erfolgt über Nachrichten,
welche zu dem Mehr-Punkt-Verbindungsmanager 240 weitergeleitet
werden, um Objekte zu erschaffen, für eine Entscheidung (Arbitration)
zwischen dem Entscheider und dem Teilnehmer und zur Kommunikation
mit anderen Teilnehmern in der Konferenz. Darüber hinaus lenkt der Konferenzmanager 230 den
Bedienerschnittstellenprozeß 210 über Zeiger,
um verschiedene Dinge auf dem Display zur Anzeige zu bringen. Ergebnisse
aus der Anzeige der Bedienerschnittstellenfunktionen werden zurück zum Konferenzmanager 230 über Nachrichten
geleitet.
-
Der
Objektmanager 220 ist ein Prozeß, welcher während der
Laufzeit dafür
verantwortlich ist, sich über
die während
einer Konferenz zwischen dem Teilnehmer und anderen Teilnehmern
im System verwendeten verschiedenen Objekte auf dem laufenden zu
halten. Der Objektmanager koordiniert die Treffen zwischen den Teilnehmern.
Der Objektmanager verfolgt sämtliche
Objekte, die während
des Treffens erschaffen wurden, einschließlich anderen Teilnehmern,
den verschiedenen während
der Konferenz angezeigten Dingen und anderen Objekten. Zusätzlich wird
der Objektmanager verwendet, um den Status des Treffens aufrechtzuerhalten
und sämtliche anderen
Teilnehmer mit dem aktuellen Teilnehmer synchron zu halten. Der
Inhalt eines Treffens kann gesichert und von einem Massenspeicher
(z.B. 107 gemäß 1b)
zurückgewonnen
werden, wenn eine Konferenz verlassen bzw. in, die Konferenz eingetreten
wird. Außerdem
tauscht der Objektmanager Inhalte von Treffen mit anderen Objektmanagern
in anderen Teilnehmern aus, um die Kopien der Treffen synchron zu
halten.
-
Jeder
Objektmanager 220 hält
seine eigene lokale Kopie des Treffens, welche ggf. der Bedienerschnittstelle 210 zur
Verfügung
gestellt wird. Der Objektmanager 220 informiert die Bedienerschnittstelle 210 über Änderungen
von anderen Teilnehmern des Treffens. Die Bedienerschnittstellen-Schicht 210 kann
dann die Anzeige in der angewiesenen Weise einstellen. Die Bedienerschnittstelle 210 informiert darüber hinaus
den Objektmanager über Änderungen,
die der Benutzer bei dem aktuellen Treffen durchzuführen wünscht. Der
Objektmanager 220 synchronisiert dann die Änderungen
mit sämtlichen anderen
an dem Treffen teilnehmenden Objektmanagern. Der Objektmanager steuert
die Bedienerschnittstelle über
Nachrichten; in der gleichen Weise lenkt die Bedienerschnittstelle
den Objektmanager, um bestimmte Aktionen an Objekten entsprechend den
unter Steuerung der Bedienerschnittstelle 210 auf dem Display
vorgenommenen Einstellungen auszuführen. Einen kurzen Überblick
der Struktur von Objekten in einem Ausführungsbeispiel der Erfindung
wird in 3 veranschaulicht.
-
Objektklassifizierungsstruktur
-
3 veranschaulicht
eine allgemene Klassifizierung der Objekte höherer Ordnung, welche in einem
Ausführungsbeispiel
der Erfindung verwendet werden. In diesem Ausführungsbeispiel weist die Objektmanager-Klasse 300 die
breiteste Klassifizierung der Objekte innerhalb des Systems auf.
Grundsätzlich
gibt es innerhalb der Objektmanager-Klasse zwei allgemeine Bereiche,
die öffentlichen
Treffen 310 und die privaten Treffen 320. Der
Objektmanager hält
die Informationen, die der Benutzer in seinen privaten Raum eingegeben
hat, in der Objektklasse der privaten Treffen 320, welche
von der Objektklasse der öffentlichen
Treffen 310 unterschieden wird. Jede wird als separate
Struktur von Objekten innerhalb der Treffen-Klasse gehalten. Folglich
kann während
eines in der Klasse 310 der öffentlichen Treffen gespeicherten öffentlichen
Treffens ein Benutzer in ähnlicher
Weise private Informationen 320 speichern, die ebenfalls
dem gleichen Treffen zugeordnet werden sollen.
-
Zusätzlich hält der Objektmanager 220 Informationen über den
Benutzer in Klassifizierung 330 und den Entscheider 340,
von welchem es nur einen während
einer beliebigen elektronischen Konferenz gibt, und die anderen
Teilnehmer des Treffens in einer Teilnehmer-Klassifizierung 350.
Alle diese Klassen sind Mitglieder der Objektmanager-Klasse. Der Objektmanager 300 verfolgt
die Teilnehmer in dem Treffen, so daß, wenn neue Teilnehmer in
das Treffen eintreten, die Treffen-Kopien der neuen Teilnehmer in Synchronisation
mit denen sämtlicher
anderer Teilnehmer gebracht werden. Wenn Teilnehmer das Treffen
verlassen, wird sichergestellt, daß sämtliche Beiträge der Benutzer
geteilt sind, bevor der Teilnehmer das Treffen verläßt.
-
Einer
der Teilnehmer des Treffens ist als Entscheider (Arbitrator) bekannt.
Dieser wir in der Entscheider-Klasse 340 repräsentiert.
Der Entscheider löst
Konflikte zwischen den Benutzern, wenn Fragen der Steuerung von
Eigenschaften des Treffens auftreten. Der Entscheider bestimmt,
welcher Teilnehmer eine Anmerkung steuert, wieviele Seiten im aktuellen
Treffen existieren usw. Er hält
darüber
hinaus eine Master-Kopie des Treffens, zu der sich sämtliche
anderen Teilnehmer synchronisieren. Die Objektmanager innerhalb
jedes Teilnehmers koordinieren, wo der Entscheider sich befindet
und weisen einen neuen Entscheider zu, wenn der zugewiesene Entscheider
das Treffen verläßt, oder
wenn es von anderen Konferenzereignissen vorgegeben wird. Andere Konferenzereignisse
sind beispielsweise das Öffnen/Verschmelzen
einer Treffen-Datei, in welcher der die Treffen-Datei öffnende/verschmelzende
Teilnehmer vor dem Öffnen/Verschmelzen
der Datei der Entscheider geworden war. Bei einer Implementierung der
Erfindung wird dem Benutzer, der als erster ein Treffen startet,
die Entscheider-Funktionen zugewiesen.
-
Eine
sehr grobe Näherung
der Arten von Objekten, welche auf einem Teilnehmer-Display vorhanden
sein können,
ist in 4 veranschaulicht. Grundsätzlich hat ein Benutzer einen
Treffen-Bereich 400 auf
seinem Display, in welchen verschiedene Informationen eingegeben
werden können.
Typischerweise weist jedes Treffen eine Serie von Seiten auf, wobei
die Seiten analog einer einzigen weißen Tafel oder gemeinsamen
Display-Flächen
sind, auf welche Benutzer in einem Raum zugreifen könnten. In
analoger Weise verwendet ein Ausführungsbeispiel der Erfindung
die Notebook-Metapher, welche in Wirklichkeit ein "Notebook" ist, das sich eine
Mehrzahl von Teilnehmer des Treffens teilen, und in welches jeder
Teilnehmer Informationen eingeben kann. Der gemeinsame oder geteilte
Bereich bzw. das Notebook weist eine Vielzahl von Seiten 410 auf,
auf welchen Anmerkungen gemacht werden können. Die Benutzer können nach
Belieben Seiten erschaffen oder löschen, die bestimmten Bedingungen
unterworfen sind. Bei einem Ausführungsbeispiel
der Erfindung gibt es zumindest vier Arten von Anmerkungen auf den
Seiten. Die ersten drei dieser Arten sind in 4 veranschaulicht.
Beispielsweise kann eine Seite 410 eine Zeichnungs-Anmerkung 411 enthalten,
welche typischerweise eine von einem einzigen Benutzer erschaffene
objekt-orientierte Zeichnung ist. Solche objektorientierten Zeichnungen
wie 411 weisen eine Beschreibung aus Punktpositionen und dazwischenliegenden
Segmenten auf. Anmerkungen können
außerdem
graphische Anmerkungen 412 sein, welche grundsätzlich Bitmap-Darstellungen graphischer
Abbildungsdaten sind. Es können
außerdem
Text-Anmerkungen 413 auf eine Seite gesetzt werden. Text-Anmerkungen
können
beliebig vom Benutzer ausgewählt
sein und dem Benutzer gestatten, die Schriftart, die Punktgröße, den
Fond und andere Formatinformationen auszuwählen, wie es typisch für bekannte
Implementierungen ist. Eine andere Anmerkung ist die OLE-Anmerkung,
die ein Objekt-Verbindungs- und ein Einbettungs-Protokoll (OLE – object
linking and embedding) der Microsoft Corporation in Edmont, Washington,
verwendet. OLE-Anmerkungen können
auf andere "Objekte" Bezug nehmen, die
von anderen Anwendungsprogrammen erschaffen und/oder gehalten werden
und welche mit Hilfe von OLE entweder verbunden oder eingebettet
werden können.
Jede dieser Anmerkungen wird als Objekt unter einer "Anmerkungs"-Klassifikation gespeichert,
welche Objekten in der Seiten-Klassifikation zugeordnet ist. 5 veranschaulicht
die Klassifizierung für
Objekte, die in einem Ausführungsbeispiel der
Erfindung verwendet werden.
-
Die
Gesamtstruktur der Objektklassen ist in 5 veranschaulicht. 5 enthält das Treffen-Objekt,
Benutzer-, Entscheider-, Teilnehmer- und Anmerkungs-Objekte, welche
anhand der 3 und 4 oben erörtert und
veranschaulicht wurden. In
-
5 sind
Beziehungen durch eine mit einem Punkt versehene breite Linie veranschaulicht, wobei
Vererbungs-Beziehungen durch eine Pfeilspitze dargestellt sind,
bei der die Richtung der Vererbung der Orientierung der Pfeilspitze
folgt. Zusätzlich kann
jede der in der Figur veranschaulichten Beziehungen mehrfache Beziehungen
anzeigen. Wenn eine Beziehung n:1 ist, heißt das, daß es n der Sub-Klassen-Objekte
unter dem Elternobjekt geben kann. Beispielsweise hat der CObjectManager 501 (Objekt-Manager),
wie es anhand von 3 veranschaulicht und erörtert wurde,
zwei CCMeeting-Objektklassen (Treffen-Objektklassen): das "öffentliche" Treffen und das "private" Treffen. Zusätzlich sind der CCMeeting-Objektklasse 506 Teilnehmer-.
Objekte CCParticipant 509 zugeordnet, wie sie als 350 in 3 gezeigt
sind. Darüber
hinaus nimmt die CCMeeting-Objektklassifizierung 506 Bezug
auf das CCPage-Objekt 508 (Seiten-Objekt). Die CCPage-Klassifizierung
wird verwendet zum Definieren sämtlicher
Seiten eines speziellen Treffens (Meeting). Unter der CCPage-Klassifizierung 508 gibt
es die Anmerkungs-Klassifizierungen (unter der Klasse CCAnnotation 532),
welche mit ihren verschiedenen Vererbungs-Beziehungen in dem unteren
Abschnitt der Darstellung gezeigt sind. Folglich kann die CCAnnotation-Klassifizierung 532 Objekte
enthalten, die sämtliche
Beziehungen der Anmerkungs-Objekte erben, wobei die Anmerkungs-Objekte
für Text-Anmerkungen
in Klasse CCTextAnnotation 521 enthalten sind, für die Darstellung
von Graphik oder Bitmap-Anmerkungen (wie beispielsweise 412 in 4)
in CCGraphicAnnotation 522 und für die Bezugnahme auf Zeichnungs-Anmerkungen
(wie beispielsweise 411 in 4) in der
CCDrawAnnotation-Klasse 523). Eine andere Anmerkung, die
in einem Ausführungsbeispiel
der Erfindung verwendet werden kann, ist die CCOLEAnnotation-Klasse 520,
welche Teil der COLEDocument-Klassifizierung 503 zum Ausführen einer
Objekt-Verbindung und -Einbettung mit Hilfe des von Microsoft erhältlichen
OLE-Protokolls ist. Anmerkungen können somit Bezugnahmen sein
auf "Objekte", die von anderen Anwendungsprogrammen
erschaffen und/oder gehalten werden und welche mit Hilfe von OLE
entweder verbunden oder eingebettet sein können.
-
Es
sind andere Klassifizierungen vom Objekt-Manager, Klassifizierung 501,
erhältlich,
wie beispielsweise die Klassifizierung CCPerson 512, welche
eine Klassifizierung CCPassword 510 zum Zuordnen von Benutzer-Passworten
zu Personen-Objekten zugeordnet ist. Außerdem hat jede Person eine
zugeordnete Klasse CCAddress 513 und eine Klasse CCPhone 514 zum
Definieren von Netzwerk-Teilnehmeradressen und/oder Zugriffstelefonnummern.
-
Schließlich enthält der verbleibende
Satz von in 5 gezeigten Objektklassen die
Objekt-Klassifizierung CCCachableBLOB 515 (Cache-speicherbares
großes
binäres
Objekt) und die Klasse CCBLOB 516 (BLOB – binary
large object – großes binäres Objekt),
welche eine Beziehung hat zu und Charakteristiken erbt von der Anmerkungs-Objektklassifizierung 532 und
der CCCachableBLOB-Objektklassifizierung 515. Die CCBLOB 516 wird
zum Darstellen sehr großer
Objekte in verschiedenen Ausführungsbeispielen
der Erfindung verwendet. Verschiedene Ausführungsbeispiele der Erfindung
erlauben sehr große
binäre
Objekte, die als Binary Large Objects oder BLOBs bekannt sind, und welche
von einem beliebigen Datentyp sein können. Diese sehr großen binären Objekte
können
ebenfalls geteilt und unter den Benutzern verteilt sein. Darüberhinaus
ist bei verschiedenen Ausführungsbeispielen
der Erfindung eine Übertragung
solcher Objekte nur gestattet bei Anforderung von speziellen Benutzern
und/oder wenn der Verkehr auf dem Medium es erlaubt. Auf diese Weise
wird das Kommunikationsmedium nicht mit der Aufgabe der Übertragung
dieser sehr großen
binären
Objekte belastet, soweit dies nicht unbedingt erforderlich ist.
Sehr große
binäre Objekte
oder BLOBs können
zur Darstellung eines beliebigen Informationstyps verwendet werden;
in bestimmten Ausführungsbeispielen
jedoch können sie
nur verwendet werden zum Darstellen großer Bitmap-Dateien oder anderer
graphischer Abbildungsdaten, wie beispielsweise komprimierter Trickfilme
oder Audioinformationen (beispielsweise dargestellt in MPED(Motion
Picture Experts Group)-Format oder im JPED(Joint Photographers Experts Group)-Format). In alternativen
Ausführunsbeispielen
wird angenommen, daß andere
binäre
Daten, einschließlich
ausführbarer
Programmdaten, mit Hilfe dieser Techniken übertragen werden können.
-
Überblick über die
Arbeitsweise der aufgeschobenen Synchronisation
-
Wie
bereits erörtert
wurde, hält
jeder der Konferenzteilnehmer seine eigenen den aktuellen Zustand
des Displays des geteilten Notebooks betreffenden Daten für sämtliche
Benutzer in der Konferenz. Auf diese Weise ist kein einzelner Teilnehmer für die Anzeige
seiner eigenen Informationen abhängig
von einem Zugriff auf einen zentralen Server. Jedoch hält ein spezieller
als "Entscheider" bekannter Teilnehmer
der Konferenz eine "offizielle" Version eines Treffens
(Meetings). Alle anderen Teilnehmer müssen ihre Versionen synchron
mit der offiziellen Kopie des Entscheiders halten. Ein zweiter Teilnehmer
kann Entscheider werden entweder, wenn er es selbst anfordert, oder,
wenn der aktuelle Entscheider die Teilnahme an der Konferenz zu
beenden wünscht.
In diesem Fall werden auch sämtliche
anderen Teilnehmer über
die Änderung
informiert, und ein neuer Entscheider kann seine Funktion aufnehmen.
In einem Ausführungsbeispiel
der Erfindung ist der Entscheider einer Konferenz der ursprüngliche Teilnehmer,
der das Treffen begann.
-
Der
Entscheider agiert außerdem
als zentrales System, bei welchem Anmerkungen in der offiziellen
Kopie der Treffen-Struktur bestätigt
werden. Obwohl Benutzer Änderungen
an ihren eigenen lokalen Kopien der Treffen-Struktur in Echtzeit
vornehmen können,
ohne von dem Entscheider ermächtigt zu
sein, muß der
Entscheider eine abschließende Entscheidung über die
Position bestimmter Anmerkungen fällen, damit das Treffen in
sämtlichen
Teilnehmern übereinstimmend
gehalten wird. Daß es
einem einzelnen Teilnehmer gestattet ist, seine Treffen-Struktur
ohne Autorisierung durch den Entscheider zu modifizieren, und die
spätere
Synchronisation der Treffen-Struktur mit den anderen Teilnehmern
der Konferenz wird im folgenden als aufgeschobene Synchronisation
bezeichnet.
-
Jedem
Seiten- und Anmerkungs-Klassenobjekt der Treffen-Struktur ist eine Variable zugeordnet, die
anzeigt, ob die Seite oder Anmerkung mit anderen Teilnehmern der
Konferenz synchronisiert worden ist. Diese Variable ist als "Blockiert"-Flag bekannt, und
dieses Flag wird auf "wahr" gesetzt, bis das
Seiten- oder Anmerkungs-Objekt mit anderen Teilnehmern synchonisiert
worden ist. Zusätzlich
hält und
gewährt
der Entscheider Objekt-Indizes auf neue Objekte, wenn diese von
einem bestimmten Teilnehmer geschaffen und/oder modifiziert worden
sind, wodurch das gesamte Treffen unter sämtlichen Teilnehmern synchron
gehalten wird. Der Teilnehmer, der dann die Hinzufügung und/oder
Modifikation von Objekten anfordert, empfängt Nachrichten von dem Entscheider,
die einen neuen Objekt-Index anzeigen, so daß der Teilnehmer seine lokale
Treffen-Struktur aktualisieren kann, um den restlichen Teilnehmern des
Treffens zu entsprechen. Zusätzlich
wird das Blockiert-Flag dann auf "falsch" geändert,
um anzuzeigen, daß die
fraglichen Objekte jetzt synchronisiert sind und keine weitere Kommunikation
mit dem Entscheider gegenwärtig
ausgeführt
zu werden braucht.
-
Beispielsweise
kann ein Teilnehmer beschließen,
eine Anmerkung zu einer existierenden Seite hinzuzufügen. Der
Bedienerschnittstellenprozeß 210 erfaßt diese
Anforderung und sendet eine Nachricht zum Objekt-Manager 220,
um die Anmerkung hinzuzufügen.
Dann wird vom Objekt-Manager 220 des anfordernden Teilnehmers
eine Anforderung zum Objekt-Manager des Entscheiders gesendet. Außerdem fügt der Objekt-Manager
seiner lokalen Treffen-Strukur ein Objekt hinzu, bei dem das Flag anzeigt,
daß die
Anmerkung "blockiert" ist bzw. daß das Objekt
nicht mit anderen Teilnehmern des Treffens synchonisiert worden
ist. Außerdem
hat der Teilnehmer bei seiner Kommunikation mit dem Entscheider
seinen Teilnehmer-Index und eine Anforderung nach einem Objekt-Index
dem Entscheider angezeigt. Dann kann der Benutzer des Teilnehmers
die Arbeit an der Anmerkung fortsetzen, bis der Objekt-Index von
dem Entscheider zurückgegeben
wird. Sobald der Objekt-Index empfangen worden ist, kann der Teilnehmer
seine Treffen-Struktur aktualisieren, um dem vom Entscheiden empfangenen
Index zu entsprechen. Eine detailliertere Erörterung dessen wird unter Bezugnahme
auf die 6a bis 7e diskutiert.
-
Details des Prozesses
der aufgeschobenen Synchronisation
-
Die 6a und 6b veranschaulichen detailliert
einen Prozeß 600,
welcher bei der Erfassung einer Anforderung zum Ausführen eines
eine Synchronisation mit anderen Teilnehmern eines Treffens erfordernden
Kommandos innerhalb der Ereignisschleife des Konferenz-Managers
ausgeführt wird.
Folglich kann in den Prozeß 600 eingetreten werden
bei Erfassung einer Erschaffung eines neuen Objekts, einer Modifikation
eines existierenden Objekts oder der Löschung eines Objekts von der
Bedienerschnittstelle 210. Der Prozeß 600 startet am Prozeßeintrittspunkt 601.
Dann wird festgestellt, ob das Kommando ein Kommando ist, welches
eine aufgeschobene Entscheidung erfordert (Schritt 602).
Wenn dies nicht der Fall ist, dann wird die aktuelle Operation mit
der normalen Kommunikation und der ggf. vorhandenen zugeordneten
Verzögerung
zwischen dem aktuellen Teilnehmer und irgendwelchen anderen Teilnehmern
der Konferenz ausgeführt
(Schritt 613). Der Prozeß 600 endet am Prozeßaustrittpunkt.
-
Wenn
jedoch das Kommando eine aufgeschobene Entscheidung erfordert, daß heißt, die Zeitanforderungen
für die
Synchonisierung des Treffens entspannt sind und der Benutzer irgendwel che Modifikationen
an der lokalen Treffen-Struktur ohne die von der Synchonisierung
mit anderen Teilnehmern hervorgerufene Verzögerung vornehmen kann, so wird
der Prozeß am
Schritt 603 forgesetzt. Im Schritt 603 wird festgestellt,
ob das aktuelle Kommando die Änderung
eines Objekts bewirken soll, welches bereits "blockiert" ist. Ein Objekt ist nur dann als "blockiert" gekennzeichnet,
wenn festgestellt worden ist, daß das Objekt zuvor modifiziert,
gelöscht oder
hinzugefügt
und noch nicht mit anderen Teilnehmern der Konferenz synchonisiert
worden ist. Dieses Flag wird, wie bereits erörtert wurde, nur bei Erfassung
einer Änderung,
aber vor der Zuweisung eines Objekt-Index durch den Entscheider
gesetzt. Wenn das Objekt nicht blockiert ist (zum Beispiel wenn
dies eine anfängliche
Aktion an dem Objekt ist), dann wird im Schritt 604 festgestellt,
ob die Anforderung sich auf ein Löschen des Objekts richtet.
Die Löschung
erfordert eine spezielle Serie von Schritten, da der Besitz von
sämtlichen
Objekten, die gelöscht
werden sollen, vor irgendeiner Löschung
erlangt werden muß.
Dieser Prozeß erfordert
außerdem
die Kommunikation mit anderen Teilnehmern in der Konferenz, wie
es in 6b gezeigt ist. Zunächst wird
im Schritt 614 festgestellt, ob der Besitz des Objekts
erlangt worden ist. Dies schließt
den Besitz sämtlicher
Objekte und Unter-Objekte ein. Wenn dies nicht der Fall ist, dann
wird ein solcher Besitz von den jeweiligen Besitzern der Objekte
im Schritt 615 angefordert. Wenn der Besitz gewährt worden
ist, wie dies im Schritt 616 erfaßt worden ist, oder der Besitz
des Objekts bereits erlangt worden ist, wie es im Schritt 614 erfaßt worden
ist, dann kann der Prozeß zurückkehren
zum Schritt 605, der in 6a veranschaulicht ist.
Wenn der Besitz nicht gewährt
wird, dann mißlingt die
Löschung,
wie es im Schritt 617 angezeigt ist, und der Prozeß kehrt
zum Prozeßaustrittspunkt 620 zurück.
-
Am
Schritt 605 wurde nun festgestellt, daß das Objekt nicht zuvor "blockiert" worden ist, daß heißt zuvor
synchonisiert worden ist, und daß jetzt einige Arten von Änderungen
an dem Objekt auftreten. Wenn dies auftritt, muß eine Anforderung zum Anfordern
eines Objekt-Index für
das Objekt gesendet werden, damit der Teilnehmer mit sämtlichen
anderen Teilnehmern synchronisiert werden kann. Jedoch kann der
Benutzer selbst vor dem Empfang des Objekt-Index von dem Entscheider
fortfahren, Änderungen
und andere Operationen auszuführen.
Die Änderungen
sind folglich nur lokal bis zur späteren Synchronisation der Treffen-Struktur
des anfordernden Teilnehmers mit anderen Teilnehmern. Im Schritt 606 werden
die von dem Benutzer angeforderten Änderungen nur lokal ausgeführt, wobei
alle Änderungen an
der Treffen-Struktur ausgeführt
werden, welche zulässig
sind, und in Schritt 607 werden die Änderungen als blockiert angezeigt.
Dann kann dieser Sub-Prozeß innerhalb
der Ereignisschleife am Prozeßaustrittspunkt 620 verlassen
werden.
-
Für blockierte
Objekte, für
welche Kommandos empfangen worden sind, wird der Prozeß 600 durch
die anfänglichen
Schritte 601, 602 und 603 fortgesetzt.
Wenn das Objekt als "blockiert" erfaßt worden
ist, dann ist eine Anforderung nach einem Objekt-Index an den Entscheider
gesendet worden; wenn jedoch noch keine Antwort empfangen worden ist,
fährt der
Prozeß am
Schritt 609 fort. Schritt 609 erfaßt, ob die
den Objekt-Index
enthaltende Antwort von dem Entscheider empfangen worden ist. Wenn dies
nicht der Fall ist, wird der Prozeß mit den Schritten 606, 607 und 620 fortgesetzt,
wie es bereits erörtert
wurde. Das heißt,
die Änderungen
werden weiterhin lokal ausgeführt
und irgendwelche Änderungen als
blockiert angezeigt, bis die Synchronisation mit dem Entscheider
und somit mit den anderen Teilnehmern eingetreten ist.
-
Wenn
jedoch eine Antwort von dem Entscheider empfangen worden ist, dann
wird am Schritt 610 der Objekt-Index empfangen. Dann kann
der Teilnehmer seine lokale Treffen-Struktur im Schritt 611 aktualisieren,
um den Teilnehmer synchron mit dem Entscheider (und somit mit den
anderen Teilnehmern des Tref fens) zu machen. Darüber hinaus wird die Bedienerschnittstellen-Schicht 210 (Human
Interface (HI) Layer) über
dieses Ereignis informiert, damit der Teilnehmer sein Display aktualisieren
kann. Wenn beispielsweise eine Seite von dem Teilnehmer hinzugefügt worden
ist, welcher der lokale Teilnehmer Seite 4 zugewiesen hat, aber
der Entscheider nun Seite 5 zuweist, so erfaßt die Bedienerschnittstellenschicht 210 diese Änderung
und aktualisiert die Anzeige entsprechend, um die Seite visuell
auf Seite 5 zu bringen. Beispielsweise kann in der auf der Anzeige
gezeigten Notebook-Metapher ein neuer Seiten-"Anhänger" (page tap) für die Seite
mit Hilfe bekannter Benutzerschnittstellen-Kommandos erstellt werden, um einen
neuen mit "Seite
5" gekennzeichneten
Seiten-Anhänger
der lokal erschaffenen Seite zuzuordnen. Nachdem dann seine eigene
lokale Treffen-Struktur und Anzeige im Schritt 611 modifiziert
worden sind, sendet der Teilnehmer die gegebenenfalls vorhandenen
blockierten Änderungen,
d.h. geänderte
Seiten oder Anmerkungen, zu den anderen Teilnehmern der Konferenz
aus (Schritt 612), wie sie von den Teilnehmern angefordert
werden. Folglich ist keiner der anderen Teilnehmer mit dem aktuellen
Teilnehmer bis zu diesem Zeitpunkt synchron. Sobald dies ausgeführt ist,
können
die anderen Teilnehmer der Konferenz ebenfalls ihre eigenen lokalen Treffen-Strukturen und zugeordneten
Anzeigen mit den geeigneten Seiten und Anmerkungen aktualisieren,
um synchron mit dem die Änderungen
ausführenden
Teilnehmer zu sein. Schließlich
kann die aktuelle Operation mit normaler Kommunikation im Schritt 613 ausgeführt werden,
womit sämtliche
Teilnehmer der Konferenz synchron gemacht werden. Der Prozeß endet
am Prozeßaustrittspunkt 620.
-
Eine
einfache Veranschaulichung einer lokalen Treffen-Struktur und einer Treffen-Struktur
eines Entscheiders läßt sich
anhand der 7a bis 7e vornehmen,
die die Hinzufügung
eines Objekts während
verschiedener Schritte des in den 6a und 6b veranschaulichten
Prozesses 600 zeigen. Beispielsweise kann zum in 7a dargestellten Zeitpunkt
t1 ein einzelner Teilnehmer drei Elemente 701 bis 703 in
seiner Treffen-Struktur haben, die in einer hierarchischen Weise
miteinander verbunden sind (z.B. eine Liste von Anmerkungen oder
eine Liste von Seiten). In gleicher Weise kann ein Entscheider-Teilnehmer
ebenfalls drei Objekte 711 bis 713 in seiner Treffen-Struktur
haben, wobei sämtliche
Objekte in beiden Teilnehmern nicht blockiert sind. Zu einem zweiten
in 7b dargestellten Zeitpunkt t2 kann
der Teilnehmer ein zusätzliches
Objekt O4 704, wie beispielsweise
eine Seite oder Anmerkung, erschaffen, um es zu seiner lokalen Treffen-Struktur hinzuzufügen. Gleichzeitig
kann der Entscheider eine Anforderung von einem zweiten Teilnehmer
zum Hinzufügen
eines Objekts O'4 714 zu seiner Treffen-Struktur
infolge eines Anforderung-zum-Hinzufügen-Kommandos empfangen. Dann haben nachfolgend
zum Zeitpunkt t3 der Entscheider und der
Teilnehmer jeweils innerhalb ihrer lokalen Treffen-Strukturen ein
unterschiedliches Objekt, das den gleichen Objekt-Index 4 hat. Beispielsweise
hat der Teilnehmer das Objekt 704 als viertes Objekt in
seiner Treffen-Struktur
und der Entscheider hat das Objekt 714 als viertes Objekt
in seiner Treffen-Struktur. Dann sendet zu einem nachfolgenden Zeitpunkt
t4 der Teilnehmer eine Anforderung an den
Entscheider, die das Hinzufügen
eines zusätzlichen
Objekts zu der von dem Entscheider gehaltenen "offiziellen" Objekt-Struktur anfordert. Dies ist
als Block 715 in 7b dargestellt.
Weil sämtliche
Anforderungen von jedem der Teilnehmer der Konferenz bei dem Entscheider
aneinandergereiht werden, ist die Anforderung zum Hinzufügen des
Objekts 715 von dem ersten Teilnehmer später angekommen
als die Anforderung für
das Objekt 714. Somit wird diesem Objekt ein Objekt-Index
5 zugewiesen. Der Entscheider sendet dann den Index 5 zu dem anfordernden
Teilnehmer zurück,
damit dieser dort dem Objekt zugeordnet wird. Der Entscheider sendet
dann eine Antwort zurück,
die anzeigt, daß dem
Objekt 704 anstelle der 4 der Objekt-Index 5 zugewiesen
werden soll. Ein anderer Teilnehmer sendet dann ein neues Objekt
O'4 705 zurück, das
in die Objektliste des lokalen Teilnehmers eingefügt werden
soll. Somit können
zu einem nachfolgenden in 7e dargestellten
Zeitpunkt t5 sowohl die Treffen-Struktur
des Entscheiders als auch die Treffen-Struktur des Original-Teilnehmers vollständig miteinander
und anderen Teilnehmern in der Konferenz synchronisiert werden.
D.h., sämtliche Objekte
in der Treffen-Struktur des Teilnehmers und der Treffen-Struktur
des Entscheiders sind gleich und in der gleichen Reihenfolge.
-
Folglich
bringt die aufgeschobene Synchronisation von Objekten für Teilnehmer
in einer elektronischen Konferenz substantielle Vorteile gegenüber dem
bekannten Client-Server-Modell,
weil zeitliche Anforderungen zwischen Client und Server gemindert
werden. Weil die vollständige
Konsistenz zwischen den Teilnehmern aufgeschoben wird, können die
lokalen Teilnehmer solche CPU-intensiven Operationen, wie die Modifikation
und Erzeugung von Anmerkungen in Echtzeit, ohne die Verzögerung aufgrund
der Koordination solcher Operationen mit dem Server ausführen. Ein
weiterer Vorteil der aufgeschobenen Synchronisation von Objekten
gegenüber dem
bekannten Client-Server-Modell ist der, daß die Synchronisation von Objekten
für sämtliche
Teilnehmer ohne die Verwendung einer zentralen Datenverwahrung,
wie sie bei dem Client-Server-Modell üblich ist, erfolgt. Dies ist
ein wesentlicher Vorteil, weil das Computerkonferenzsystem zwischen
Personalcomputern verwendet werden kann, wo ein Netzwerk-Client-Server-Modell
nicht verfügbar
oder praktikabel ist. Der lokale Teilnehmer führt sämtliche dieser Änderungen
auf seinem lokalen Display und in seiner Treffen-Struktur aus, und
Aktualisierungen werden nur bei Empfang einer Antwort von dem einen
Objekt-Index zuweisenden Entscheider koordiniert. Folglich hat die
Erfindung wesentliche Vorteile gegenüber bekannten Systemen, welche
eine vollständige
Synchronisation zu sämtlichen
Zeitpunkten zwischen sämtlichen
Teilnehmern der Konferenz erfordern und somit eine wesentliche Verzögerung für eine Synchronisation
und eine Antwortverzögerung in
der Benutzerschnittstelle zu dem System auf sich laden.
-
Übertragung von Daten großer Objekte
-
Eine
Objektdatenart, welche zwischen Teilnehmern in einer elektronischen
Konferenz übertragen
werden kann, ist als großes
binäres
Objekt oder "BLOB" (Binary Large Object)
bekannt. Ein BLOB ist ein Objekt, welches normalerweise nicht während eines
vollständigen
Leer-Zyklus des Teilnehmers und des Transportmediums übertragen
werden kann. Folglich muß ein
solches Objekt in kleinere Abschnitte oder Pakete zerteilt und in
verschiedenen Leer-Zyklen von einer Hintergrund-Task übertragen
werden. BLOBs weisen typischerweise Elemente, wie beispielsweise
sehr große
Graphiken, OLE-Anmerkungen oder zu übertragene Dateien auf. In
anderen Ausführungsbeispielen
der Erfindung können
solche BLOBs Voll-Bewegungs-Videoobjekte, wie beispielsweise MTEG-
oder JPEG-Dateien, und/oder Audiodaten enthalten. Mit Hilfe der
beschriebenen Verfahren und Einrichtungen werden die BLOB-Daten
in Paketen übertragen,
wobei die Größe jedes
dieser Pakete dynamisch der Fähigkeit
und Kapazität
des Transportmediums angepaßt
wird, welche sich dynamisch in dem Maße ändert, wie sich die Verbindung zwischen
den Teilnehmern ändert.
Wenn sich folglich die Geschwindigkeit des Transportmediums der
Verbindung zwischen zwei Teilnehmern ändert, wird die Größe der übertragenen
Pakete von dem Sender geändert.
Dies erfolgt dynamisch während
der Übertragungszeit,
um die effektivste Verwendung des Transportmediums während der Übertragung
von BLOBs zu ermöglichen.
Zusätzlich
werden BLOB-Übertragungsanforderungen
in Warteschlangen eingereiht, so daß BLOBs höherer Priorität vor BLOBs
geringerer Priorität übertragen
werden können.
Auf diese Weise wird, wenn ein Teilnehmer, der eine erste Seite mit
BLOB-Daten gesehen hat, umschaltet auf eine zweite ebenfalls BLOB-Daten
enthaltende Seite, die zweite Seite, welche zu der aktuell zu sehenden
Seite wird, innerhalb des Senders umpriorisiert, damit das BLOB
vor dem BLOB der ersten Seite übertragen
werden. Dies erfolgt mit Hilfe einer Umpriorisierungsanforderung
von dem Anforderer. Dann wird die Warteschlange der hinausgehenden Übertragung von
dem Sender umarrangiert, um die gewünschte Änderung der Übertragungspriorität zu bewirken.
Die Details dieses Mechanismus werden im folgenden erörtert.
-
Zunächst müssen während einer
typischen elektronischen Konferenz BLOB-Daten nicht notwendigerweise
bei ihrer Erschaffung innerhalb eines lokalen Teilnehmers zu anderen
Teilnehmern übertragen
werden. Mit anderen Worten, die Übertragung von
Daten für
ein BLOB kann aufgeschoben werden bis zu einem späteren Zeitpunkt,
zu welchem das Transportmedium frei ist und der lokale Teilnehmer etwas
freie Verarbeitungszeit hat. Folglich können während der Erschaffung eines
BLOB ferne Teilnehmer darüber
informiert werden, daß die
BLOB-Daten nicht innerhalb des zu erschaffenden BLOBs enthalten
sind, und daß die
fernen Teilnehmer nur das Objekt ohne irgendwelche Daten in ihren
lokalen Treffen-Strukturen erschaffen. Während späterer Leer-Perioden entweder des lokalen Teilnehmers und/oder
der fernen Teilnehmer können
die BLOB-Daten selbst, die in dem BLOB-Objekt der Treffen-Struktur
der fernen Teilnehmer enthalten sein sollen, hinzugefügt werden.
Ein typischer Ablauf von Aktionen, welche während einer BLOB-Erschaffung und Übertragung
ausgeführt
werden, wird anhand von 8 erläutert.
-
8 veranschaulicht
die Reihenfolge der von einem lokalen und einem fernen Teilnehmer
einer Konferenz unternommenen Schritte. Beispielsweise kann in einem
ersten Schritt 801 ein lokaler Teilnehmer ein ein BLOB-enthaltendes
Objekt zu seiner lokalen Treffen-Struktur hinzufügen. Der in dem lokalen Teilnehmer
enthaltende Objekt-Manager 230 benachrichtigt dann sämtliche
fernen Teilnehmer, daß sie
ebenfalls ein Objekt für
ein BLOB in ihren lokalen Treffen-Strukturen schaffen sollen (Schritt 802).
Dies wird selbstverständlich
nach der erforderlichen, oben anhand des aufgeschobenen Synchronisationsprozesses
beschriebenen Synchronisation einschließlich der Bestimmung des Objekt-Index
und anderer relevanter Informationen für ein Objekt ausgeführt. Dann
legt jeder der fernen Teilnehmer individuell asynchrone Anforderungen
nach BLOB-Daten an den lokalen Teilnehmer an (Schritt 803).
Der lokale Teilnehmer verarbeitet dann in Schritt 805 die
Anforderungen nach BLOB-Daten, indem er die Anforderungen in eine
BLOB-Anforderungswarteschlange einreiht und später die Daten während freier
Zeiten zur Verfügung
stellt. Im Anschluß an
die asynchronen Anforderungen von verschiedenen Teilnehmern nach BLOB-Daten
in Schritt 803 können
die fernen Teilnehmer darüber
hinaus Umpriorisierungen früherer Anforderungen
nach BLOB-Daten anlegen (Schritt 804). Mit anderen Worten,
wenn ein ferner Teilnehmer zunächst
BLOB1 angefordert hat und dann später nachfolgend BLOB2 anfordert,
können
die beiden Anforderungen so umpriorisiert werden, daß BLOB2 eine
höhere
Priorität
für den
fernen Teilnehmer einnimmt als BLOB1. Wenn der ferne Teilnehmer
von einer das erste BLOB1 enthaltenden Seite zu einer das zweite
BLOB2 enthaltenden Seite umschaltet, wird der lokale Teilnehmer
auf diese Weise dann die BLOB-Anforderungen für den speziellen Teilnehmer umordnen.
-
Wie
bereits erörtert,
verarbeitet der lokale Teilnehmer die Anforderungen nach den BLOB-Daten
im Schritt 805. Dies wird detaillierter anhand von 9 erörtert. Der
lokale Teilnehmer sendet dann zu jedem der entfernten Teilnehmer
die angeforderten BLOB-Datenpakete (Schritt 806). Wie unten
näher erörtert werden
wird, werden die BLOB-Datenpakete entsprechend dem Transportmedium
zwischen den zwei Teilnehmern gesendet. Wenn der ferne Teilnehmer
mit einem Transportmedium hoher Kapazität und hoher Geschwindigkeit,
wie beispielsweise einem Ethernet, verbunden ist, dann wird die
Größe der Datenpakete
wesentlich größer gewählt, als
wenn der Teilnehmer über
ein Modem und eine Telefonleitung verbunden ist. Wenn der lokale
Teilnehmer die BLOB-Datenpakete im Schritt 806 sendet,
empfängt jeder
der fernen Teilnehmer die BLOB-Daten und fügt die BLOB-Datenpakete der
existierenden BLOB-Datenstruktur hinzu. Nach Abschluß der Übertragung sämtlicher
BLOB-Datenpakete der angeforderten BLOB entfernen die lokalen Teilnehmer
die BLOB-Anforderung aus der Anforderungs-Warteschlange im Schritt 807.
Der Bedienerschnittstellenprozeß des
fernen Teilnehmers wird informiert, um die Anzeige des zuvor unvollständigen ein
BLOB enthaltenen Objekts zu aktualisieren. Im folgenden werden einige
der Prozeßschritte
näher erläutert.
-
Prozeß 900 gemäß 9 enthält eine
Reihe von Schritten, welche von einem lokalen Teilnehmer bei Empfang
einer von einem fernen Teilnehmer übertragenen Anforderung nach
BLOB-Daten ausgeführt
werden. Im Schritt 901 wird in einen Prozeßeintrittspunkt
eingetreten. D.h., mehrere neue Anforderungen und Umpriorisierungsanforderungen
können von
mehreren Teilnehmern asynchron empfangen werden. Dann wird im Schritt 902 der
Transportqualifizierer für
die neue Anforderung oder für
eine Umpriorisierungsanforderung bestimmt. D.h., es wird festgestellt,
ob das Transportmedium für
den fernen Teilnehmer entweder ein Hochgeschwindigkeitstransportmedium
oder ein Transportmedium niedriger Geschwindigkeit ist. Die Bestimmung
der Fähigkeit
des Mediums (hohe oder niedrige Geschwindigkeit) wird bei der Betrachtung
der Kombination von Anforderungen von mehrerern Teilnehmern als
eine Qualifikation verwendet. Wie unten näher erörtert werden wird, wird während der Übertragung
eines BLOB für jedes
BLOB in der Übertragungswarteschlange
eine Größe (SIZE)
und ein Offset (OFFSET) für
jeden Übertragungswarteschlangeneintrag
gehalten, so daß auf
das letzte Datum in dem BLOB, welches übertragen wurde, Bezug genommen
werden kann. Mehrere Anforderungen können in einem Warteschlangeneintrag
kombiniert werden, und in gleicher Weise mehrere einfach Warteschlangeneinträge umpriorisierende
Umpriorisierungsanforderungen. Folglich ist bei einer anfänglichen
Anforderung nach BLOB- Daten
das Offset gleich Null, d.h. auf den Anfang des BLOB gesetzt, und
die Größe ist gleich
der vollen Länge
des BLOB gesetzt. Detailliertere Schritte zum Bestimmen des Transportqualifizierers
werden unter Bezugnahme auf den Proßez 1000 gemäß 10 beschrieben.
Ein Beispiel des Umpriorisierungsprozesses wird in Verbindung mit 17 beschrieben.
-
Sobald
der Transportqualifizierer bestimmt worden ist, wird im Schritt 903 festgestellt,
ob eine existierende Anforderung nach anhängigen Daten den Empfang einer
Umpriorisierungsanforderung von einer ursprünglichen Anforderung nach BLOB-Daten
anzeigt. Wenn es eine Anforderung nach anhängigen Daten ist, dann wird
im Schritt 904 festgestellt, ob eine partielle Anforderung
erforderlich ist, d.h., wenn andere ferne Teilnehmer die gleichen BLOB-Daten
anfordern, welche bereits angefordert worden sind und deren Übertragung
bereits begonnen wurde, so können
die neuen anfordernden Teilnehmer die BLOB-Daten von dem Zeitpunkt
an, zu welchem die Anforderung ausgeführt wurde, empfangen, aber
sie fordern außerdem
die Daten an, welche bis zu diesem Zeitpunkt übertragen wurden. Somit werden
redundante Übertragungen
von Daten eliminiert, indem nahezu gleichzeitige Anforderungen von mehreren
fernen Teilnehmern kombiniert werden. In Fällen, in denen eine einer ursprünglichen
Anforderung zugeordnete Übertragung
noch nicht gestartet wurde, werden die nachfolgend anfordernden
Teilnehmer mehr oder weniger zu der Verteilungsliste des ursprünglichen Übertragungswarteschlangeneintrags
hinzugefügt.
Andernfalls, wenn die Übertragung
begonnen hat, wird zusätzlich
zu dem obigen ein weiterer Übertragungswarteschlangeneintrag hinzugefügt, um die
bereits übertragenen
Daten zu berücksichtigen.
Wenn jedoch keine anhängigen
Anforderungen nach den aktuellen BLOB-Daten existieren, dann wird
ein neuer Übertragungswarteschlangeneintrag
in die Übertragungswarteschlange
des Teilnehmers im Schritt 905 eingegeben, um die BLOB-Übertragung
auf dem laufenden zu halten. Wie zuvor erörtert wurde, hält der Warteschlangeneintrag
ein OFFSET und ein SIZE (Größe), um
die Übertragung
für einzelne
Anforderungen zu verfolgen. Bei Abschluß entweder des Schritts 904 oder des
Schritts 905 wird die Datenanforderungsverarbeitung im
Schritt 906 abgeschlossen, wonach eine tatsächliche
Daten-BLOB-Übertragung
im Hintergrund auftritt (d.h. während
freier Verarbeitungszeit), und der Prozeß 900 kehrt zu der
normalen Ereignisschleife der Ausführungsroutine des lokalen Teilnehmers
zurück.
-
Eine
detailliertere Beschreibung der im Schritt 902 gemäß 9 vorgenommenen
Prozeßschritte
wird anhand von 10 gegeben. Prozeß 1000 dient
zum Bestimmen des Transportqualifizierers. Der Transportqualifizierer
wird verwendet bei der Handhabung der Kombination mehrerer Anforderungen.
D. h., Anforderungen von über
ein Hochgeschwindigkeitsmedium miteinander verbundenen Empfängern werden
nicht kombiniert mit Anforderungen von über ein Medium geringer Geschwindigkeit verbundenen
Empfängern
und umgekehrt. Dies wird dynamisch bei jeder Anforderung nach einer Übertragung
eines BLOB-Pakets während
freier Verarbeitungszeit ausgeführt.
Somit wird der Transportqualifizierer für einen bestimmten Teilnehmer
verwendet, um dem Transportmedium höherer oder geringerer Kapazität zu gestatten,
angepaßt
zu werden. Zu beachten ist, daß der
Transportqualifizierer irgendeine Anzahl von Niveaus des Transportdurchsatzes
spezifizieren kann. Die Erfindung ist nicht nur auf ein hohes und
ein niedriges Niveau begrenzt. Beispielsweise können die Transportniveaus so
spezifiziert werden, daß eine
Einteilung in 4800-baud-Modems, 9600-baud-Modems, ISDN-Verbindungen,
schnelle und langsame Netzwerkverbindungen usw. entsteht.
-
Der
Prozeß 1000 startet
an einem typischen Prozeßeintrittspunkt 1001.
Dann wird im Schritt 1002 festgestellt, ob eine Hochgeschwindigkeitstransportmöglichkeit
zwischen dem lokalen und dem anfordernden Teilnehmer verfügbar ist.
Wenn dies der Fall ist, dann wird im Schritt 1003 der Hochgeschwindigkeitsqualifizierer
verwendet. Wenn jedoch der ferne und der lokale Teilnehmer über ein
Transportmedium geringer Geschwindigkeit miteinander gekoppelt sind,
wie dies im Schritt 1002 festgestellt wird, dann wird im
Schritt 1004 ein Niedriggeschwindigkeitstransportqualifizierer
verwendet. Im Schritt 1005 ist die Bestimmung des Transportqualifizierers
beendet und der begleitende Prozeß kann fortgesetzt werden.
-
Der
Prozeß der
aufgeschobenen Übertragung,
welcher unter Bezugnahme auf Schritt 904 gemäß 9 erörtert wurde,
wird im folgenden unter Bezugnahme auf den Prozeß 1100 gemäß 11 diskutiert.
Beispielsweise wurde im Schritt 1101, einem typischen Prozeßeintrittspunkt
von einer Ereignisschleife eines ausführenden Prozesses, bereits festgestellt,
daß eine
existierende Anforderung für die
speziellen BLOB-Daten anhängig
ist. Wenn eine Anforderung für
den aktuellen Teilnehmer 1102 bereits anhängig ist,
dann wird diese als Umpriorisierungsanforderung für den gegebenen
Teilnehmer angesehen, und die existierende BLOB-Anforderung in der Übertragungswarteschlange
wird im Schritt 1107 umpriorisiert. Folglich wird jede
andere BLOB-Anforderung
für den
bestimmten Teilnehmer umpriorisiert. Dann ist der Prozeß im Schritt 1106 abgeschlossen und
der Prozeß 1100 kehrt
vom Prozeßaustrittspunkt zurück.
-
Wenn
jedoch für
diesen speziellen Teilnehmer keine Anforderung anhängig war,
wie dies unter Bezugnahme auf den Teilnehmer-Index für den anfordernden
Teilnehmer, welcher dem Element in der Übertragungswarteschlange zugeordnet
ist, erfaßt wurde,
dann wird im Schritt 1103 der anfordernde Teilnehmer zu
der Verteilungsliste für
den existierenden Übertragungswarteschlangeneintrag
hinzugefügt.
Folglich kann der Teilnehmer-Index zu dem existierenden Übertragungswarteschlangeneintrag
hinzugefügt
werden. Es kann ein entsprechender Eintrag für eine partielle Anforderung
für jeden
Teilnehmer in der Verteilungsliste existieren, aber dies ist nicht
erforderlich. Anforderungen von mehreren Teilnehmern können vor
Beginn der zugeordneten Datenübertragung
empfangen worden sein, und so existiert nur der einzige Übertragungswarteschlangeneintrag.
Sobald die Datenübertragung
beginnt, bewirken zusätzliche
Anforderungen von neuen Teilnehmern ein Kombinieren mit dem existierenden
Eintrag und das Hinzufügen
eines partiellen Eintrags für den
zu diesem Zeitpunkt abgeschlossenen Teil der Datenübertragung.
Wenn folglich die Datenübertragung
bereits für
das spezielle BLOB, wie es in seinem Übertragungswarteschlangeneintrag
spezifiziert ist, begonnen hat, was im Schritt 1104 festgestellt wird,
dann muß eine
partielle Anforderung für
den verbleibenden Teil des BLOB in den Übertragungswarteschlangeneintrag
hinzugefügt
werden. Dies wird im Schritt 1105 ausgeführt. D.
h., sämtliche
dem BLOB zugeordnete und zuvor zu den anderen fernen Teilnehmern übertragene
Daten müssen
für den
aktuellen anfordernden Teilnehmer nach Abschluß der gegenwärtigen Übertragung übertragen
werden. Dies ist so, damit dieser Teilnehmer auch sein BLOB in Übereinstimmung
mit den anderen Teilnehmern der Konferenz bringen kann. Wenn jedoch
die Datenübertragung
für diesen
Eintrag noch nicht begonnen hat, werden die anfordernden Teilnehmer
zu dem existierenden Übertragungswarteschlangeneintrag in
den Schritten 1103 und 1104 hinzugefügt; dann wird
am Schritt 1106, dem Prozeßaustrittspunkt fortgefahren.
Im Schritt 1105 wird eine zusätzliche partielle Anforderung
nach dem Abschnitt eines existierenden zuvor übertragenen Übertragungseintrags der Übertragungswarteschlange
hinzugefügt.
Die zusätzliche
partielle Anforderung wird unter Bezugnahme auf 12 näher erläutert.
-
Die
Vorbereitung partieller Anforderungen werden unter Bezugnahme auf
die 12a bis 12c beschrieben.
Beispielsweise können
zwei Teilnehmer B und C die Übertragung
eines BLOB von 38.000 Bytes von einem lokalen Teilnehmer anfordern.
In diesem Fall wird das OFFSET anfänglich für die zwei Teilnehmer auf Null
gesetzt und die Größe der verbleibenden Übertragung
ist gleich 38.000. Eine gewisse Zeitdauer später, z. B. zum Zeitpunkt t1 gemäß 12a (zu einem Zeitpunkt, zu dem die Daten übertragung
begonnen hat) ist das Übertragungs-OFFSET
gleich 2000 und die verbleibende Übertragungsgröße gleich
36.000, was anzeigt, daß 2000
Bytes Daten übertragen
worden sind. Dies ist durch die Abschnitte 1201 und 1202 der
grafischen Darstellung des BLOB's 1200 gezeigt.
Zu diesem Zeitpunkt fordert ein dritter Teilnehmer D, die Übertragung
der gleichen BLOB-Daten von dem lokalen Teilnehmer an. In diesem
Fall wird der Teilnehmer D zu der Verteilungsliste (des existierenden
BLOB-Warteschlangeneintrags mit dem OFFSET 2000 und der Größe (SIZE)
36.000) hinzugefügt,
und ein nachfolgendes partielles (Anforderungs-) Übertragungswarteschlangen-Element
wird zur Übertragungswarteschlange
an einer Position nach dem aktuellen Übertragungswarteschlangeneintrag
(für OFFSET
Null und SIZE 2000) hinzugefügt. Somit wird zu einem nachfolgenden
Zeitpunkt t2 (dargestellt in 12b) der Teilnehmer D zu der existierenden Übertragungseintrag-Verteilungsliste
hinzugefügt
und die Übertragung
von dem Übertragungs-OFFSET 2000 und
mit der verbleibenden Übertragungsgröße 36.000,
die in dem BLOB-Übertragungswarteschlangeneintrag
angezeigt ist, fortgesetzt. Dies ist grafisch in 12b durch den aktuellen Abschnitt der Übertragung 1211 und
den verbleibenden Abschnitt 1212 dargestellt. Schließlich wird
bei Abschluß der Übertragung
des in 12b dargestellten Elements ein
anderer Warteschlangeneintrag referenziert zum Übertragen nur eines Abschnitts
des BLOB's, da die
Anforderung des Teilnehmers D mitten in der anfänglichen Übertragung zu den Teilnehmern
B und C empfangen wurde. An dieser Stelle hat der nächste Übertragungseintrag zum
Zeitpunkt t3 (veranschaulicht in 12c) ein Übertragungs-OFFSET
von Null (was den Beginn der Datei anzeigt) und eine verbleibende Übertragungsgröße von 2000
(was anzeigt, daß die
ersten 2000 Bytes des BLOB für
eine Übertragung
zum Teilnehmer D angefordert wurden). Dies wird grafisch veranschaulicht
durch das vollständige
BLOB 1220 und den Abschnitt 1221, welcher von
diesem Warteschlangeneintragung zur Übertragung zum Teilnehmer D
angefordert wird. Sobald diese partielle Übertragung abgeschlossen ist,
haben alle Teilnehmer B, C und D das vollständige BLOB empfangen, wobei redundante Übertragungen
der durch 1202 und 1212 dargestellten Datenabschnitte
vermieden wurde. Folglich empfängt
der Teilnehmer D nur den Abschnitt, welcher bis zu dem Zeitpunkt übertragen
worden ist, zu welchen dessen eigene Anforderung ausgeführt wurde;
d. h. den durch den Bereich 1221 gemäß 12c dargestellten
Abschnitt. Die Übertragung
der Daten für
den in 12c dargestellten partiellen
Abschnitt erfolgt vom Ende des partiellen Abschnitts zu dessen Anfang,
so daß das
BLOB in dem Speicher des anfordernden Teilnehmers zusammenhängend gehalten
werden kann. Bei Abschluß des Empfangs
des partiellen Abschnitts benachrichtigt der Teilnehmer D dann seine
Bedienerschnittstelle, damit diese die Anzeige der Anmerkung, die
das zuvor unvollständie
BLOB-Objekt enthält,
aktualisieren kann. Somit ist bei Abschluß der durch den in 12c gezeigten Übertragungseintrag
angezeigten Übertragung
die Übertragung
des BLOB zu sämtlichen
Teilnehmern B, C und D vollständig.
Die Übertragung
zu den Teilnehmern B und C ist vollständig nach Abschluß der dem
ursprünglichen
Warteschlangeneintrag zugeordneten Übertragung. Die Übertragung
zum Teilnehmer D ist zu einem späteren
Zeitpunkt vollständig,
wenn der der partiellen Anforderung zugeordnete Warteschlangeneintrag
vollständig ist.
-
Während der Übertragungen
solcher BLOB-Daten können
der entfernte Teilnehmer und der lokale Teilnehmer über solche
Operationen mit Hilfe eines fortschreitenden Balkens oder eines
anderen Benutzerschnittstellenmerkmals unter Steuerung durch die
Bedienerschnittstelle 210 des Teilnehmers während der
Leerzeiten des Teilnehmers informiert werden. Somit kann der Benutzer über die
zwischenzeitlichen Übertragungen
von Daten zum Zwecke einer geeigneten Systemrückkopplung informiert werden.
-
Zu
beachten ist, daß der
BLOB-Datenübertragungsmechanismus
ein Klar-zum-Senden- oder CTS-Protokoll (CTS – Clear-To-Send) verwendet, wobei
dann, wenn die Übertragung
von einem speziellen Übertragungswarteschlangeneintrag
zugeordneten Daten nicht fortgesetzt werden kann, weil ein Empfänger nicht
bereit-zum-Senden
ist, nachfolgende Übertragungswarteschlangeneinträge, die
keinen Empfänger
enthalten, der nicht Klar-zum-Senden ist, für eine Übertragung in Betracht gezogen
werden. Dies wird ausgeführt,
um das volle Potential des Transportmediums während Leerzeiten der einzelnen
Teilnehmern zu maximieren. Das Klar-zum-Senden-Protokoll der Erfindung wird
detaillierter anhand von 18 beschrieben.
-
Im
folgenden wird auf 13 Bezug genommen, in der ein
Architekturdiagramm die Komponenten des Hintergrund-Übertragungs-Managers
(BTM – Background
Transfer Manager) der Erfindung veranschaulicht. Die Übertragung
großer
Daten-Objekte wird durch den BTM gesteuert. Der BTM besteht aus sechs
Hauptabschnitten: 1) Teilnehmer-Verbindungs/Trennungs-Steuerlogik 1312,
2) Anforderungs-Verarbeitungslogik 1314, 3) Datenübertragungsverarbeitungslogik 1316,
4) eine Klar-zum-Senden-Liste 1318, 5) eine Liste 1320 der hinausgehenden Übertragungen
und 6) eine Liste 1322 der hereinkommenden Übertragungen.
Die Logikkomponente 1312 wird anhand der 14 und 15 beschrieben.
Die Logikkomponenten 1314 und 1316 werden in Verbindung
mit den 16 bis 20 beschrieben.
Die Klar-zum-Senden-Liste 1318 wird verwendet, um den Klar-zum-Senden-Status
der Anforderungen zu halten. Dieses Protokoll wird in Verbindung
mit 18 beschrieben. Die Liste 1322 der hereinkommenden Übertragungen
wird verwendet, um solche Einträge
aufzuzeichnen, für
welche BLOB-Datenanforderungen an ferne Benutzer angelegt worden
sind. Der BTM verwendet diese Liste, wenn der Prozeß fordert
festzustellen, ob eine neue Anforderung oder eine Umpriorisierungsanforderung
gesendet werden soll. Die Liste 1320 der hinausgehenden Übertragungen
wird verwendet, die Prioritäten
der hinausgehenden BLOB-Datenübertragungen
zu halten. Die Teilnehmer-Verbindungs/Verarbeitungslogik 1312 betrifft
die Reinitialisierung einer Teilnehmerverbindung und ein Löschen (flushing) von
teilnehmerspezifischen Informationen bei der Meldung einer Abkopplung
eines Teilnehmers. Im folgenden wird auf die 14 und 15 Bezug
genommen, in denen Ablaufdiagramme diese Verarbeitung der Verbindung
und Trennung dargestellt sind.
-
In 14 wird
die Meldung einer Teilnehmerverbindung am Block 1410 empfangen.
Der neu verbundene Teilnehmer wird zu der Klar-zum-Senden-Liste 1318 hinzugefügt (Block 1420).
In Abhängigkeit
von der Charakteristik des Tranportmediums wird der Teilnehmer qualifiziert
für eine
Hochgeschwindigkeitsübertragung
mit einer entsprechenden optimalen Paketgröße (Blöcke 1428 und 1430)
oder qualifiziert für
eine Übertragung
geringerer Geschwindigkeit mit einer entsprechenden optimalen Paketgröße (Blöcke 1434 und 1436).
-
In 15 wird
im Block 1510 die Meldung einer Teilnehmer-Abkopplung oder -Trennung
empfangen. Die optimale Pakektgröße wird
erneut berechnet im Block 1520. Der Teilnehmer wird aus
der Klar-zum-Senden-Liste entfernt (Block 1522). Der Teilnehmer
wird aus sämtlichen
Verteilungslisten für sämtliche Übertragungswarteschlangeneinträge entfernt
(Block 1524). Übertragungswarteschlangeneinträge, für welche
der Teilnehmer der einzige Empfänger
war, werden im Block 1526 entfernt.
-
Zum
Zeitpunkt der Verbindung/Abkopplung eines Teilnehmers werden optimale Übertragungsgrößen bestimmt
für jede
benutzte Ebene des Transportdurchsatzes (hohe oder niedrige Geschwindigkeit).
Diese Größen bleiben
zwischen den Teilnehmer-Verbindungs- und -Trennungs-Ereignissen
konstant. Anders gesagt, nur Teilnehmer-Verbindungs- und -Trennungs-Ereignisse
beeinflussen die optimale Übertragungsgröße. Zu beachten
ist, daß die
optimale Übertragungsgröße nicht
eine maximale übertragbare
Paketgröße ist.
Sie ist die optmiale Größe, die
gehandhabt werden kann, um eine Partitionierung des Paketes zu verhindern.
Unter Verwendung dieser Paketgröße oder
einer geringeren nehmen die Pakete den schnellsten Pfad durch die
Verarbeitungslogik sowohl am sendenden als auch am empfangenden
Ende.
-
Im
folgenden wird wieder auf 13 Bezug genommen.
Die Anforderungs-Verarbeitungslogik 1314 wird sowohl in
sendenden als auch in empfangenden Systemen verwendet. Sowohl die
Anforderungs-Verarbeitungslogik 1314 als auch die Datenübertragungslogik 1316 verwenden
eine Übertragungswarteschlange
zum Verfolgen des Status der BLOB-Anforderungen und BLOB-Daten.
In 16 veranschaulicht ein Architekturdiagramm die
Struktur eines einzelnen Hintergrund-Übertragungs-Manager-Übertragungswarteschlangeneintrags 1610.
Der Übertragswarteschlangeneintrag 1610 weist
eine Referenz zu einem einzelnen BLOB-Objekts 1612 auf,
die das von dem Übertragungswarteschlangeneintrag
verfolgte BLOB-Objekt repräsentiert.
Ein Nächste-Übertragung-OFFSET 1614 und
eine verbleibende Übertragungsgröße 1616 werden
verwendet, um das Voranschreiten der Übertragung von BLOB-Daten zu
verfolgen. Die Empfängerliste 1618 ist
eine Liste von Teilnehmern, die das spezielle durch die Referenz 1612 identifizierte
BLOB empfangen sollen. Der vorhergehende Übertragungswarteschlangeneintrag 1620 und
der nächste Übertragungswarteschlangeneintrag 1622 werden
verwendet, um BLOB-Anforderungen miteinander in der Übertragungswarteschlange
zu verbinden.
-
In 19 ist
die Anforderungsverarbeitungslogik 1110 für einen
anfordernden Teilnehmer veranschaulicht. 20 veranschaulicht
die Anforderungsverarbeitungslogik 2010 für einen
BLOB-Urheber. Ein BLOB-Urheber von BLOB-Daten sendet eine BLOB-Objekt-Struktur ohne
ihre entsprechenden Daten zu anderen Teilnehmern. Diese anderen
Teilnehmer werden als "Anforderer" in bezug auf diese BLOB-Daten
bezeichnet. Wie in 19 gezeigt ist, überprüft ein Anforderer
von BLOB-Daten zunächst die
Liste 1322 der hereinkommenden Übertragungen, um festzustellen,
ob ein spezielles BLOB bereits in der Liste 1322 ist (Entscheidungsblock 1312). Wenn
dies der Fall ist, wird eine Umpriorisierungsanforderung an den
BLOB-Urheber gesendet, wodurch die Priorität der existierenden Anforderung
nach BLOB-Daten
erhöht
wird (Verarbeitungsblock 1922). Wenn das BLOB nicht bereits
in der Liste 1322 der hereinkommenden Übertragungen ist, fügt der BLOB-Anforderer
einen Übertragungswarteschlangeneintrag
der Liste 1322 der hereinkommenden Übertragungen hinzu (Verarbeitungsblock 1918)
und sendet eine neue Anforderung nach BLOB-Daten an den BLOB-Urheber
(Verarbeitungsblock 1920). Die Anforderungsverarbeitungslogik
für einen
BLOB-Anforderer endet dann an dem Rückkehrpunkt 1924.
-
Wie
in 20 gezeigt ist, verarbeitet der BLOB-Urheber dann
diese Anforderung und fügt
entweder einen neuen hinausgehenden Übertragungswarteschlangeneintrag
hinzu (Verarbeitungsblock 2018), umpriorisiert einen existierenden
Warteschlangeneintrag (Verarbeitungsblock 2026) oder kombiniert
die Anforderung mit einem existierenden Eintrag (Verarbeitungsblock 1434),
um die Übertragung
der BLOB-Daten zu verfolgen. Es tritt keine BLOB-Datenübertragung
im Ergebnis dieser Verarbeitung auf.
-
17 veranschaulicht
ein Beispiel einer Übertragungswarteschlangenumpriorisierung.
Wie dort gezeigt ist, werden BLOB-Anforderungen zu der Übertragungswarteschlange
in der empfangenen Reihenfolge hinzugefügt (Schritte 1720 und 1730), bis
eine Umpriorisierungsanforderung empfangen wird (Schritt 1740).
Am Schritt 1740 wird die Anforderung 1 vor die Anforderung
2 bewegt. Nachfolgende Anforderungen werden zu der Übertragungswarteschlange
hinzugefügt
(Schritt 1750), bis eine andere Umpriorisierungsanforderung
empfangen wird (Schritt 1760). In diesem Fall wird die
Anforderung 3 vor sowohl die Anforderung 1 als auch die Anforderung
2 bewegt. Wenn eine andere Umpriorisierungsanforderung empfangen
wird, wird die betroffene Anforderung (Anforderung 1 im Schritt 1770)
vor die anderen Anforderungen in der Übertragungswarteschlange bewegt.
-
Es
wird wieder auf 13 Bezug genommen. Die Übertragungsverarbeitungslogik 1316 wird während der
Verarbeitungs leerzeit verwendet. Zu diesem Zeitpunkt überprüft der BTM
die Warteschlange der aktuellen hinausgehenden Übertragungen nach Einträgen, die
eine Datenübertragung
erfordern. Für
diese Einträge überprüft der BTM
wiederholt, ob der Transport klar-zum-Senden eines Pakets von optimaler
Größe (wie
zuvor bestimmt) zu den Empfängern,
die in dem Übertragungswarteschlangeneintrag
aufgelistet sind, ist und sendet die Pakete, wenn klar-zum-Senden.
Die Klar-zum-Senden-Liste 1318 wird verwendet, um den Klar-zum-Senden-Status
von Paketen von BLOB-Daten zu verfolgen. Wenn sie nicht klar-zum-Senden
ist, werden die Empfänger
als nicht klar-zum-Senden (NCTS) markiert, und der BTM fährt mit
dem nächsten Übertragungswarteschlangeneintrag
fort, dessen Empfängerliste
keinen Empfänger
enthält,
der nicht klar-zum-Senden ist, und wiederholt den Paketsendungsprozeß. Dieser
Prozeß wird
fortgesetzt, bis entweder sämtliche BTM-Einträge verarbeitet
worden sind oder sämtliche
Teilnehmer als Nicht klar-zum-Senden markiert sind. An diesem Punkt
wird der Nicht-klar-zum-Senden-Status sämtlicher Teilnehmer gelöscht, um
die nächste
Leerzeit-Verarbeitung vorzubereiten.
-
18 veranschaulicht
ein Beispiel der Klar-zum-Senden-Verarbeitung
nach der Erfindung. Bei diesem Beispiel repräsentiert jede Zelle bzw. jeder
Kasten einen Übertragungswarteschlangeneintrag.
Die Nummern in den jeweiligen Zellen repräsentieren eine Eintragsnummer,
die allein für
Identifizierungszwecke verwendet wird. Die Buchstaben in jeder Zelle
repräsentieren
die Empfänger,
die dem Übertragungs-Warteschlangeneintrag
entsprechen. Im Anfangszustand dieses Beispiels (Schritt 1810) wird
jeder Übertragungswarteschlangeneintrag
(Zelle) initialisiert und jeder Empfänger ist anfänglich klar-zum-Senden (A-OK, B-OK
und C-OK). Im Schritt 1820 werden Pakete zum Eintrag 1
gesendet, bis der Empfänger
B nicht mehr länger
klar-zum-Senden
ist (d.h. Nicht-klar-zum-Senden – NCTS). In diesem Fall verschiebt
die Datenübertragungsverarbeitungslogik 1316 die
Datenübertragungsoperation
zum Eintrag 2 (Schritt 1830). Im Schritt 1830 werden
die Pakete vom Eintrag 2 gesendet, bis der Empfänger B nicht mehr länger klar-zum-Senden
ist. Im Schritt 1840 wird der Eintrag 3 übersprungen,
weil Teilnehmer B, welcher ein Empfänger des Eintrags 3 ist, nicht klar-zum-Senden
ist. Im Schritt 1850 werden Pakete vom Eintrag 4 gesendet,
bis Empfänger
A nicht mehr länger
klar-zum-Senden ist. Weil sämtliche
Einträge in
der Übertragungswarteschlange
im Schritt 1860 nicht klar-zum-Senden sind, endet die Datenübertragungsverarbeitung
und die Verarbeitung kehrt zur Hauptschleife zurück. Dieser Prozeß wird während jeder
Leerzeit wiederholt.
-
Somit
wurden schließlich
ein verbessertes Verfahren zur Übertragung
sehr großer
Daten-Objekte und die aufgeschobene Synchronisation von Teilnehmern
während
einer Konferenz beschrieben.