-
TECHNISCHES GEBIET
-
Dieses Dokument bezieht sich auf Systeme und Techniken für die Verwaltung und das Anzeigen der Cursorpositionen für Benutzer, die gemeinschaftlich ein elektronisches Dokument auf einem gehosteten Serversystem bearbeiten.
-
HINTERGRUND
-
Cloudbasierte oder gehostete Berechnungen im Allgemeinen involvieren das Ausführen von Anwendungen über einen Webbrowser und das Erlangen von Informationen für die Anwendung von einem Fernserversystem oder -Dienst. Cloud-Computersysteme bietet echte Vorteile gegenüber der herkömmlichen Desktop-Software, beispielsweise die Zugriffsmöglichkeit auf Dokumente auf unterschiedlichen Computern und an unterschiedlichen Standorten. Anwendungen zur Steigerung der Produktivität in Büros sind eine Art von Anwendung, wie sie gegenwärtig über die Cloud bereitgestellt werden. Zum Beispiel können Benutzer ihre Webbrowser einsetzen, um Textverarbeitungen und Tabellenkalkulationen zu bearbeiten, die auf einem gehosteten Serversystem gespeichert sind, können auf Anwendungen für die Unternehmensressourcenplannung (enterprise resource planning; ERP) zugreifen, können Fotos bearbeiten und können die meisten anderen Tätigkeiten vornehmen, welche sie zuvor mit Desktop-Anwendungen durchführen konnten.
-
In einem gehosteten System kann es Benutzern auch möglich sein, auf dasselbe Dokument gleichzeitig zuzugreifen. Zum Beispiel kann das Serversystem ein Master-Dokument pflegen und kann Veränderungen am Dokument an diverse Client-Rechengeräte kommunizieren, welche auf das Dokument über das Internet zugreifen. Dieses gemeinschaftliche Bearbeiten kann eine verbesserte Nutzererfahrung über Systeme hinweg ermöglichen, in denen jeder Benutzer eine Reihe Bearbeitungen an einem Dokument vornimmt und es dann an einen anderen Benutzer weiterleitet, wenn keine Feedbackschleife existiert, um Bearbeitungen von einem Benutzer zu korrigieren, wenn ein anderer Benutzer weiß, dass die Bearbeitungen unratsam sind.
-
ZUSAMMENFASSUNG
-
Dieses Dokument beschreibt Systeme und Techniken, die verwendet werden können, um Benutzern eines gehosteten Textverarbeitungssystem, welche ein Dokument zur selben Zeit geöffnet haben und es gleichzeitig bearbeiten, Informationen anzuzeigen (wobei "gleichzeitig" die Möglichkeit anzeigt, einander überschneidende Bearbeitung in einer gemeinsamen Sitzung vorzunehmen und keine buchstäbliche Gleichzeitigkeit voraussetzt). Wie hier beschrieben, kann das Client-Gerät jedes Benutzers dem Serversystem häufig Veränderungen, oder Abänderungen, mitteilen, die der bestimmte Benutzer kürzlich an seiner Version des Dokuments vorgenommen hat. Diese Mitteilungen, welche in der Größenordnung von mehreren Mitteilungen pro Sekunde erfolgen können, wenn der Benutzer Abänderungen vornimmt (z.B. tippt), können von Daten begleitet werden, die dem Serversystem mitteilen, wo sich der Cursor des Benutzers im Dokument befindet (z.B. zwischen welchen Zeichen in einer Zeichenfolge, die den Inhalt des Dokuments widerspiegelt). Das Serversystem kann die Abänderungen mit anderen Abänderungen abgleichen, die es von anderen Benutzern empfangen hat (z.B. ob sie miteinander interferieren) und kann aktualisierte koordinierte Abänderungsinformationen an alle Client-Geräte schicken, welche die korrespondierenden Abänderungen nicht selbst vorgenommen haben, und kann mit diesen Daten die Daten verschicken, welche die Position der Cursor der anderen Benutzer anzeigen.
-
Diese Merkmale können, in bestimmten Implementierungen, einen oder mehrere Vorteile mit sich bringen. Zum Beispiel kann ein browserbasiertes Dokument mehreren Benutzern angezeigt und von diesen in einer gemeinschaftlichen Bearbeitungssitzung bearbeitet werden. Jeder der Benutzer kann visuell verankert sein, indem sie einen Cursor sehen können, der die Bearbeitungsposition eines jeden anderen Benutzers anzeigt. Als Ergebnis kann der bestimmte Benutzer veranlasst werden, eine Bearbeitung im selben Bereich wie die anderen Benutzer zu vermeiden, um so Kollisionen in eingefügten Bearbeitungen zu vermeiden.
-
In einer Implementierung wird ein computerimplementiertes, gemeinschaftliches Bearbeitungsverfahren offenbart. Das Verfahren umfasst das Empfangen von Eingaben eines Benutzers einer browserbasierten Dokumentbearbeitungsanwendung in ein Dokument, das von der Anwendung angezeigt wird; das Identifizieren einer gegenwärtigen Cursor-Position im Dokument eines ersten Benutzers, der die Anwendung ausführt; das Empfangen, durch ein zentrales Serversystem, von Daten, die Veränderungen am Dokument widerspiegeln, die von einem oder mehreren, sich vom ersten Benutzer unterscheidenden Benutzern vorgenommen wurden und die gegenwärtigen Cursor-Positionen des einen oder der mehreren Benutzer; das Aktualisieren eines Dokumentenmodells, das auf einem Rechengerät gespeichert ist, welches die browserbasierte Anwendung ausführt und das Übermitteln wenigstens eines Teils des Modells an den Browser; und das Übermitteln der gegenwärtigen Cursor-Positionen für einen oder mehrere Benutzer an den Browser. Das Verfahren kann außerdem das Empfangen aktualisierter Informationen bezüglich der gegenwärtigen Positionen der Cursors eines oder mehrerer Benutzer des Dokuments und das Übermitteln der gegenwärtigen Cursor-Positionen eines oder mehrerer Benutzer umfassen. Des Weiteren kann das Verfahren das Übertragen von Daten an das zentrale Serversystem beinhalten, welche die vom ersten Benutzer vorgenommenen Veränderungen am Dokument beschreiben und das Identifizieren einer gegenwärtigen Cursor-Position für den ersten Benutzer im Dokument.
-
In einigen Aspekten umfasst das Verfahren das Übertragen von Daten, die Veränderungen im Dokument beschreiben, sowie das Identifizieren einer gegenwärtigen Cursor-Position des ersten Benutzers, häufiger als ein Mal pro Sekunde während Perioden von aktiver Bearbeitungsaktivität durch den ersten Benutzer. Das Verfahren kann außerdem das Ermitteln umfassen, wann der erste Benutzer aktiv ein Dokument bearbeitet, das Starten eines Timers, wenn der erste Benutzer die Bearbeitung des Dokuments beginnt und das Übertragen der aufgelaufenen Daten aus des Benutzers Bearbeitungsaktivität, wenn der Timer abläuft. Des Weiteren kann das Verfahren das Setzen des Timers auf eine Zeitspanne von weniger als 500 Millisekunden beinhalten und kann außerdem das Setzen des Timers auf eine Zeitspanne gleich oder weniger als 250 Millisekunden umfassen. Zusätzlich kann das Verfahren das Übertragen von Daten umfassen, die Veränderungen im Dokument beschreiben, sowie das Identifizieren einer gegenwärtigen Cursor-Position des ersten Benutzers, häufiger als ein Mal pro Sekunde während Perioden von aktiver Bearbeitungsaktivität durch den ersten Benutzer.
-
In einer weiteren Implementierung wird ein computerimplementiertes gemeinschaftliches Bearbeitungssystem offenbart und umfasst eine Schnittstelle für das Empfangen von Kommunikation von einer Vielzahl von Client-Geräten, welche elektronische Dokumente unter Verwendung von Webbrowsern bearbeiten, einschließlich Informationen, welche die Cursor-Standorte in einem Dokument, in dem ein bestimmter Benutzer aktiv ist, anzeigen; ein aktiver Modell-Manager, um andere Benutzer als den bestimmten Benutzer zu identifizieren, welche in dem elektronischen Dokument aktiv sind; und Kollaborationslogik, um den sich vom bestimmten Benutzer unterscheidende Benutzer Informationen zur Verfügung zu stellen, welche Veränderungen widerspiegeln, die an einem Modell des elektronischen Dokuments und an Cursor-Standorten des bestimmten Benutzers im Dokument vorgenommen wurden.
-
Die Details einer oder mehrerer Ausführungsformen sind in den nachstehenden beigelegten Zeichnungen und der Beschreibung dargelegt. Andere Eigenschaften und Vorteile werden aus der Beschreibung und den Zeichnungen, und aus den Ansprüchen ersichtlich.
-
BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein schematisches Diagramm eines Systems für die Koordinierung von Cursor-Positionen in einer gemeinschaftlichen Dokumentenbearbeitungssituation.
-
2A und 2B sind Blockdiagramme, in denen die Komponenten einer implementierten Modell-Präsentation-Steuerung bei einer Tabellenanwendung gezeigt werden.
-
2C ist das Blockdiagramm eines Systems, bei dem die kollaborative Bearbeitung eines Dokuments durch mehrere Benutzer und über ein gehostetes Serversystem ermöglicht wird.
-
3 ist ein Flussdiagramm eines exemplarischen Prozesses für die Koordinierung simultaner Veränderungen an einem elektronischen Dokument.
-
4 ist ein Swimlane-Diagramm eines exemplarischen Prozesses für die Koordination simultaner Veränderungen an einem elektronischen Dokument
-
5A zeigt einen Beispiels-Screenshot eines Textverarbeitungsprogramms, das eine gemeinschaftliche Bearbeitungssitzung implementiert.
-
5B zeigt einen Screenshot eines Tabellenkalkulationsdokuments, das gemeinschaftlich von mehreren Benutzern bearbeitet wird.
-
6 stellt ein Beispiel eines Computergeräts und eines mobilen Computergeräts dar, die verwendet werden können, um die hierin beschriebenen Techniken zu implementieren.
-
Gleichnamige Referenzsymbole in den verschiedenen Zeichnungen bezeichnen gleichartige Elemente.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Dieses Dokument beschreibt Systeme und Techniken für die Koordinierung simultaner Bearbeitung eines elektronischen Dokuments durch mehrere unterschiedliche Benutzer, die sich voneinander entfernt befinden, und von einem Serversystem, dass die Interaktion über das Internet hostet. Somit können die hier besprochenen Techniken eine gute Nutzererfahrung während der Bearbeitung eines Rich-Text-Dokuments (d.h. eines Dokuments, das Formatierung, Bilder und andere Inhalte beinhalten kann, die über schlichten Text hinausgehen) in einer Cloud oder einer gehosteten Computer-Umgebung bieten. Wie hier besprochen, können Veränderungen, welche verschiedene Benutzer an einem Dokument vornehmen, als Abänderungen an ein zentrales Serversystem kommuniziert werden, das als Schiedsrichter fungiert, wenn die Abänderungen mit zeitlich überschneidenden Veränderungen anderer Benutzer interferieren und das die Abänderungen an die Benutzer weiterleitet, die nicht die Urheber der bestimmten Abänderung oder der fraglichen Gruppe von Abänderungen sind. Diese Verbreitung von Abänderungen kann sehr häufig erfolgen, wenn ein Benutzer Veränderungen am Dokument vornimmt, etwa in der Größenordnung von einmal alle paar Sekunden, einmal pro Sekunde oder mehrere Male pro Sekunde. Außerdem können die Abänderungsinformationen von Informationen des ersten Benutzers begleitet werden, welche dieses Benutzers gegenwärtige Cursor-Position im Dokument anzeigt und von Informationen, welche den Benutzer identifizieren. Als Resultat können die Computergeräte der anderen Benutzer, wenn sie diese Informationen empfangen, einen Cursor für den ersten Benutzer erzeugen (obgleich in einer Farbe oder Form die sich von ihrem eigenen Cursor unterscheidet) und können außerdem ein Tag oder einen Merker anzeigen, die des ersten Benutzers Name oder Bezeichnung zeigt. Um visuelle Interferenzen zu minimieren, wird dieser Merker möglicherweise nur dann angezeigt, wenn der Fernnutzer, der mit dem Cursor korrespondiert, aktiv bearbeitet (z.B. in den letzten paar Sekunden getippt hat) oder wenn der lokale Benutzer mit seinem Zeigegerät über den Cursor des anderen Benutzers fährt.
-
1 ist ein schematisches Diagramm eines Systems 100 für die Koordinierung von Cursor-Positionen in einer gemeinschaftlichen Dokumentenbearbeitungssituation. Im Allgemeinen handelt es sich bei dem hier gezeigten System um ein gehostetes Textverarbeitungssystem, auf das mehrere Benutzer zur selben Zeit zugreifen können, um gemeinschaftlich ein miteinander geteiltes Dokument bearbeiten können. Schematisch gezeigt werden hier korrespondierende Webseiten für drei verschiedene Benutzer, die an einem Newsletter arbeiten, der "Weekly Collaborator" heißt. Seite 102 wird von einem Benutzer namens Barley bearbeitet; Seite 104, die möglicherweise von einem von Seite 102 entfernten Client-Computergerät erzeugt wurde und auf die durch das Netzwerk 110 wie etwa das Internet zugegriffen wurde, wird von einem Benutzer namens Betty bearbeitet; und Seite 106 wird von einem Benutzer namens JohnB bearbeitet. Jede der Seiten, oder genauer jeder der Webbrowser, der die Seiten erzeugt, kann durch das Netzwerk 110 mit einem gehosteten Serversystem 108 kommunizieren. Das System 108 kann von einem Unternehmen betrieben werden, das eine Vielfalt von gehosteten Diensten anbietet, wie etwa Suchergebnisse, Kartensuchergebnisse, Zahlungstransaktionen für Online-Shopping, Übersetzungswerkzeuge und ähnliche Dienste in der Cloud.
-
Seite 102 wird mit einer Symbolleiste 112 nahe seinem oberen Rand gezeigt, die Browserschaltflächen und ein Suchfeld für die Eingabe von Suchanfragen in einer gewohnten Weise anzeigt. Unterhalb der Symbolleiste 112 werden Funktionen 114 etwa in der Form von Aktionsmenüs und auswählbaren Icons angezeigt, die Formatierungsveränderungen am Dokument hervorrufen können, das auf der Browserseite 102 bearbeitet wird. Zusätzliche Funktionen wie etwa der Rollbalken 118 können bereitgestellt werden, wenn das Dokument länger als das Ansichtsfenster ist, das auf Seite 102 passt. Ein Griff auf dem Rollbalken 118 kann von einem Benutzer ausgewählt werden, um andere Abschnitte des Dokuments einzeln ins Bild zu ziehen. Wie weiter unten beschrieben kann das System einer Model-View-Controller-Anordnung folgen, sodass ein Modell des Dokuments auf einem Client-Gerät gespeichert und in ein Dokumentenobjektmodell (DOM) gerendert werden kann, welches dann auf Seite 102 angezeigt werden kann. Dort wo das Dokument viel größer als das Ansichtsfenster ist, kann es effizienter sein, nur einen Teil des Dokuments an oder um das Ansichtsfenster zu rendern, und das Übermitteln oder sogar das Herunterladen des restlichen Dokumentmodells vom Server zum Client zurückzustellen.
-
In diesem bestimmten Beispiel bearbeiten die Benutzer von Seite 102, Seite 104 und Seite 106 den Newsletter allesamt rasant, um eine bevorstehende Deadline einzuhalten. Von daher hat jeder von ihnen seinen Cursor-Standort in einem unterschiedlichen Bereich des Dokuments von den anderen und sie tippen Text und löschen Text aus dem Dokument während der Bearbeitung. Unter Verwendung der hier besprochenen Techniken kann ein Controller, der auf jedem der Client-Computergeräte der Benutzer ausgeführt wird, diese Tastenanschläge und andere Eingaben abfangen und kann Informationen über die Tastenanschläge als Abänderungen an den Server 108 senden. Diese Informationen können zum Beispiel einen Standort beinhalten, der im Inhalt des Modells indexiert wird, in dem die Bearbeitung gegenwärtig stattfindet sowie einer Position, die im Modell indexiert wird, in dem sich der Cursor des bestimmten Nutzers gegenwärtig befindet. Zusätzlich können Informationen für die Identifizierung des bestimmten Benutzers bereitgestellt werden, sodass, wie weiter unten in größerem Detail beschrieben wird, der Server 108 Informationen bereitstellt, welche die Cursor-Positionen von anderen Benutzern als dem lokalen Benutzer identifizieren.
-
Bezugnehmend auf die Cursor-Positionen, werden auf Seite 102 Cursor-Informationen für alle drei Benutzer angezeigt. Die Cursor-Information für Barley, den lokalen Benutzer, wird durch Cursor 122 dargestellt. Cursor 122 und andere Cursors können als Span-Elemente mit einer schmalen Breite in einer Hintergrundfarbe, die sich von der Hintergrundfarbe des bearbeiteten Dokuments abhebt, erzeugt werden. Die Position des Cursors kann bestimmt werden, indem ein Anfangsstandort für den Cursor identifiziert wird und, wenn Zeichen eingegeben werden, indem die Zeichen in einem Div-Element abseits des Bildschirms erzeugt werden, das die geeignete Zeichengröße und Formatierung verwendet und indem dann Standard-HTML-Elemente verwendet werden, um die Höhe und Breite eines solchen abseitigen Elements zu bestimmen. Solch ein durch den Benutzer eingegebenes Zeichen kann dann an das DOM geleitet werden und auf der Seite 102 dargestellt werden, wobei die Position des Cursors 122 um die Breite des abseitigen Elements vorwärts indexiert wird, sodass der Cursor sich nun rechts von dem neu hinzugefügten Zeichen befindet und Barley, dem lokalen Benutzer, anzeigt, dass sich sein nächster Tastenanschlag an dieser Position befinden wird. Auf diese Weise können der Cursor 122, der Text und andere Bereiche des bearbeiteten Dokuments allesamt synthetisch generiert werden, sodass ein visueller Eindruck bereitgestellt wird, der mit dem vom bestimmten Urheber intendierten Format übereinstimmt.
-
Ein Cursor 124A für Betty wird als das Dokument bearbeitend gezeigt, oberhalb des Orts, an dem Barley das Dokument bearbeitet. Ein Merker 124B wird an den Cursor angehängt, sodass Barley sofort erkennen kann, dass Betty diese bestimmte Bearbeitung durchführt. Somit kann Barley beispielsweise wissen, dass Betty ein Experte auf dem Gebiet ist, das sie bearbeitet und kann ihren Bearbeitungen weniger Aufmerksamkeit schenken. Demgegenüber kann Barley wissen, dass das Gebiet, das Betty bearbeitet, eines ist, das ihm sehr am Herzen liegt und er kann Bettys Bearbeitungen sehr genau beobachten und ihr Kommentare bereitstellen, wenn sie das Dokument auf eine Weise bearbeitet, die ihm nicht gefällt. Zum Beispiel kann er eine Randnotiz in das Dokument einfügen, er kann Bettys Bearbeitungen bearbeiten oder er kann eine Notiz in die Chat-Sitzung tippen, die automatisch mit der Textverarbeitungsanwendung ausgeführt werden kann.
-
JohnB bearbeitet ein Dokument an einer Position viel weiter unten als die beiden anderen Benutzer und abseits des gegenwärtigen Ansichtsfensters auf Seite 102. Als Ergebnis wird der Cursor für JohnB nur als kleiner Cursor 120A gezeigt, welcher an den Merker 120B angehängt ist und der jenseits der Seite nach unten zeigt, um Barley anzuzeigen, dass JohnB sich irgendwo horizontal auf einer Linie mit dem Cursor 120A, aber jenseits des Seitenendes, befindet.
-
Die Seiten 104 und 106 zeigen korrespondierende Icons und Merker, die anderen Benutzern angezeigt werden können. Insbesondere können diese Benutzer ihre Positionen mit lediglich einem Icon wie Icon 122 markiert haben und können die Positionen anderer Benutzer mit Icons in verschiedenen Farben markiert werden und möglicherweise einem angehängten Merker oder einer anderen Markierung, die den Benutzer identifiziert, der an dieser Position bearbeitet.
-
Die hier gezeigten Merker können in bestimmten Situationen abgeschaltet werden, sodass der lokale Benutzer leichter mehr von der Seite 102 sehen kann. Zum Beispiel kann der Merker verschwinden, wenn Betty für eine vorgegebene Zeit, wie etwa 5 Sekunden oder mehr, mit dem Tippen 124B aufhört und es kann nur Icon 124A gezeigt werden. Auf diese Weise kann einem Benutzer ein geeignetes Maß an Benachrichtigung bereitgestellt werden, ohne dass die visuelle Oberfläche überhäuft wird.
-
Effektives gemeinschaftliches Bearbeiten kann in dieser Situation erreicht werden, in dem ein Controller, wie der unten besprochene Controller, Benutzereingaben abfängt und sie als Abänderungen regelmäßig an das Serversystem 108 sendet. Zum Beispiel kann, wenn eine lange Zeitspanne ohne Eingaben durch den Benutzer vergangen ist und der Benutzer damit beginnt, Eingaben vorzunehmen, ein Timer gestartet werden und alle Eingaben, die bis zu dem Zeitpunkt seines Ablaufens zwischengespeichert wurden, können als Abänderungen stapelweise an das Serversystem 108 gesendet werden. Der Timer kann beispielsweise auf eine Zeitspanne von 3 Sekunden, 2 Sekunden, 1 Sekunde oder einem Bruchteil einer Sekunde gestellt werden, wie etwa durch das Senden von Uploads zum Serversystem 108, wenn ein Benutzer aktive Eingaben vornimmt, alle 200 ms (Millisekunden). Das Serversystem 108 kann diese Abänderungen, die ihm übergeben wurden, dann überprüfen, wenn es erkennt hat, dass es zu einer Kollision zwischen Benutzereingaben kommt und kann die revidierten Abänderungen dann an die anderen Clients zurückgeben. Diese Informationen können von Informationen begleitet werden, welche den bearbeitenden Benutzer und außerdem die Cursor-Position für diesen Benutzer innerhalb des Dokumentenmodells identifizieren. Diese Informationen können von den anderen Client-Systems verarbeitet werden, wie etwa von einer Layout-Engine, die ein Span-Element schmaler Breite in einer Hintergrundfarbe erzeugt, die sich von der Hintergrundfarbe des Dokuments des bestimmten Benutzers abhebt. Der Cursor als ein Span-Element kann dann auf einer Bearbeitungsoberfläche für die Seiten 104 und 106 platziert werden und kann von den Benutzern dieser Seiten gesehen werden.
-
Dieser Vorgang des Abfangens von Benutzerinteraktionen, der Bestimmung von Cursor-Positionen zur gegenwärtigen Zeit und der Weitergabe dieser Informationen an den Server 108 und zurück an die anderen Clients kann sich während einer Bearbeitungssitzung eines Dokuments häufig wiederholen, bis sich einer der Benutzer bei der Sitzung abmeldet und sein Cursor nicht länger angezeigt wird oder bis sich alle Benutzer bei der Sitzung abmelden und dann das aktuellste Modell das ist, was sich gegenwärtig auf Server 108 befindet. In dieser Situation können die Kopien des Modells an jedem der Clients zwischengespeichert werden und das nächste Mal wiederverwendet werden, dass sich die Benutzer zurück in das System einloggen, sofern sich das Server-Modell nicht seitdem verändert hat, oder sie können verworfen werden (da das zentrale Modell in einer nächsten Sitzung heruntergeladen werden kann).
-
2A und 2B sind Blockdiagramme, die Komponenten einer Modellansicht-Controller(model view controller, MVC)-Implementierung einer Textverarbeitungsanwendung zeigen. Die Textverarbeitungsanwendung kann beispielsweise von einem Webbrowser (z. B. dem in der 1A gezeigten Browser 104) ausgeführt werden. Im Allgemeinen sorgt die MVC-Implementierung für das Herunterladen eines Modells von einem Remote-Server auf einen Client und für die Wiedergabe des Modells in einem DOM. Die so hergestellte Ansicht des Modells kann direkt vom Webbrowser verwaltet werden. Die Steuerung kann Aktionen, beispielsweise Mausklicks auf Symbole und Tastaturbefehle, abfangen und dafür sorgen, dass derartige Aktionen implementiert werden, beispielsweise durch das gleichzeitige Hinzufügen von eingegebenen Zeichen zum Modell auf dem Client und auf dem Remote-Server (es kann sich hierbei beispielsweise um das Hochladen von Änderungen oder Mutationen auf den Server handeln. Dies kann über Regeln so programmiert werden, dass die Mutationen in ein Mastermodell integriert werden, damit das Modell auf dem Client noch während der Bearbeitung dem Mastermodell entspricht).
-
Bezugnehmend auf 2A kann eine Computeranwendung 200A so konfiguriert werden, dass sie ein Textverarbeitungsdokument 202 anzeigt. Die Anwendung 200A beinhaltet und steuert ein Modell 204A, eine Ansicht 206A und einen Controller 208A, und greift auf diese zu. So kann das Modell 204A beispielsweise eine Darstellung des Zustands vom Textverarbeitungsdokument 202 enthalten, einschließlich solcher Elemente wie Zeichendaten, Formate, Stile, Absätze, Abschnitte, Umbrüche, Listen, Tabellen, Bilder, Formeln usw. Die Ansicht 206A kann eine Wiedergabe des aktuellen Zustands vom Modell 204A darstellen. Die Ansicht kann beispielsweise eine visuelle Darstellung liefern, in der die wesentlichen Inhalte des Dokuments (z. B. seinen Rohtext) mit Formatierung und Layoutinformationen kombiniert werden. Wenn die Ansicht von einem Browser angezeigt wird, gibt sie die Form, oder sogar die genaue WYSIWYG-Darstellung des Dokuments, wieder, die vom Modell definiert wird.
-
Zusätzlich zum Rendering des Modells, kann die Ansicht 206A für die Präsentierung visueller Informationen an den Benutzer verwendet werden, welche dem Textverarbeitungsdokument 202 zugewiesen sind, wie etwa sichtbare Benutzerbedienelemente (d.h. Chrome) und andere Textverarbeitungsdaten. Der Controller 208A kann auf Änderungen im Modell 204A oder in der Ansicht 206A reagieren und den Zustand des Modells 204A und der Ansicht 206A aktualisieren. Wie in 2A gezeigt, stellen durchgezogene Linien zwischen dem Modell 204A, der Ansicht 206A und dem Controller 208A direkte Bezüge zwischen Komponenten dar, während gestrichelte Linien auf Listener verweisen. So kann beispielsweise der Controller 208A beim Abhören von Benutzerinteraktionen (z. B. von Benutzersteuerelementen) an der Darstellung der Ansicht 206A das Modell 204A modifizieren, und nachfolgend auch die Ansicht 206A direkt oder indirekt modifizieren (indem er die Ansicht 206A veranlasst, neue Modelldaten abzurufen und diese neuen Daten wiederzugeben).
-
Als weiteres Beispiel kann die Ansicht 206A, während sie auf durch einen anderen Benutzer in einer kollaborativen Umgebung oder auf durch automatisierte Datenaktualisierung vorgenommene Veränderungen am Modell 204A wartet, ein erneutes Rendering eines aktualisierten Modells oder eines Teiles des Modells anfordern. Zum Beispiel können Veränderungen anderer Benutzer, wenn ein Benutzer eines Client-Geräts nur einer von mehreren Benutzern ist, die gleichzeitig ein Dokument oder Zeichen bearbeiten, vom Serversystem an die Client-Geräte weitergegeben werden (und können Bearbeitungen durch den ersten Benutzer vom Client-Gerät an das Serversystem weitergegeben werden) und der Client-Code kann Zeichen zum Modell beinahe in Echtzeit hinzufügen und diese Veränderungen können an das DOM (z.B. durch Rendering der Ansicht 206A) weitergegeben werden, sodass jeder Benutzer sehr schnell die von anderen Benutzern vorgenommenen Veränderungen sehen kann.
-
Bezugnehmend auf 2B wird die Modell-Präsentation-Steuerung wie in 2A gezeigt, mit weiteren Details dargestellt. Wie gezeigt, beinhaltet, steuert oder greift eine Computeranwendung 200B (korrespondierend mit der Anwendung 200A) zu auf ein Modell 204B (korrespondierend mit Modell 204A), eine Ansicht 206B (korrespondierend mit der Ansicht 206A) und einen Controller 208B (korrespondierend mit dem Controller 208A).
-
Das Modell 204B kann ein oder mehrere Dokumentmodelle 210 beinhalten. Jedes der Dokumentmodelle 210 kann, zum Beispiel, ein separates Dokument in einer Ansammlung von Textverarbeitungsdokumenten repräsentieren und jedes der Modelle 210 kann Elemente wie etwa Zeichen, Stile und Entitäten beinhalten. Andere Dokumentformen, beispielsweise Tabellen, können ebenfalls dargestellt werden. Modelldaten und Elemente können von einem Masterdokument 238 bereitgestellt werden, das auf einem Remote-Serversystem mit einer Verbindung zu einem Netzwerk 236 (z. B. das Internet) gespeichert wird.
-
Im Allgemeinen wird jedem Dokumenttext in den Modellen 210 eine Reihe von Zeichen zugewiesen. Die Zeichen können beispielsweise Rohtext für das Textverarbeitungsdokument 202 darstellen. Sie können auch bestimmte reservierte Steuerzeichen, beispielsweise zur Andeutung eines Umbruchs (z. B. Absatzumbruch, Seitenumbruch usw.) beinhalten. In einigen Implementierungen kann jedes der Dokumentmodelle 210 eine eindimensionale Zeichenfolge beinhalten, die Dokumentzeichen beinhaltet in einer Reihenfolge, in welcher sie im Dokument erscheinen.
-
Stile können verwendet werden, um Informationen bezüglich der Präsentation des Dokumenttextes (z.B. der Reihe von Zeichen) zu speichern. Textstile können beispielsweise Zeichenformatierungs-Attribute (z. B. Schriftart, Schriftgröße, Fettdruck, Kursivschrift, Vordergrund- und Hintergrundfarben, Ausrichtung und ähnliche Attribute) beinhalten. In einigen Implementierungen können die in den einzelnen Dokumentmodellen 210 beinhalteten Stile in einer Sparse-Matrix gespeichert werden. So kann die Sparse-Matrix beispielsweise Markierungen beinhalten, die Stiländerungen im Dokument und Positionszeigern in der Zeichenfolge entsprechen. Die Zeiger können beispielsweise Stilfolgen zwischen abgeglichenen Markierungen definieren, indem Positionen innerhalb der Zeichenfolge, in der die Stiländerungen auftreten, festgelegt werden. In einigen Implementierungen können die Markierungen im abgeglichenen Satz so angeordnet werden, dass sie innerhalb der eindimensionalen Zeichenfolge mit bestimmten Zeichen verknüpft sind. Wenn beispielsweise zwischen zwei paarweise vorkommenden Markierungen Text hinzugefügt wird, kann sich der Zeiger für eine Markierung um eine Ganzzahl verschieben. Die Verschiebung entspricht dabei der Anzahl von Zeichen, die mit dem hinzugefügten Text verknüpft sind.
-
Entitäten in jedem der Modelle 210 können verwendet werden, um Informationen bezüglich von Objekten außerhalb des Dokumentmodells 210 zu speichern, auf sie kann durch Referenzen im Modell, wie etwa in der eindimensionalen Zeichenfolge, verwiesen werden. So können beispielsweise Entitäten Objekte beinhalten, etwa Listen, Tabellen, Bilder usw. In einigen Implementierungen können die Referenzen Objektkennungen und Zeiger auf die eindimensionalen Zeichenfolgen (z. B. von der Sparse-Matrix) beinhalten, die angeben, wo das Objekt in der Zeichenfolge erscheinen soll. Sie können auch Kennungen innerhalb der Zeichenfolge beinhalten, die auf Entitäten verweisen und die Positionen markieren, an denen bestimmte Entitäten im Dokument bei der Wiedergabe oder Anzeige erscheinen sollen. Ein Bild beispielsweise, das zwischen zwei Absätzen erscheinen soll, kann mit einem Sonderzeichen verknüpft sein, das in der Zeichenfolge nach einer Absatzmarkierung für einen Absatz und vor dem ersten Zeichen des nächsten Absatzes erscheint.
-
Die Ansicht 206B kann ein oder mehrere Ansichtsitems 220 erzeugen, welche es dem Benutzer ermöglichen können, mit der Anwendung 200B zu interagieren, wie etwa Menüleisten, Symbolleisten, Kontextmenüs, Chatfenster, Dialogmenüs, andere Funktionen und dergleichen. Die Ansicht 206B kann auch ein Dokumentmenü 222 beinhalten, das Informationen und Steueroptionen bezüglich eines oder mehrerer Dokumentmodelle 210 und eines oder mehrerer Sätze der Pro-Ansichten 224 bietet. So kann beispielsweise eine der Pro-Ansichten 224 mit einem entsprechenden Blattmodell 210 verknüpft sein. Jede Pro-Ansicht 224 kann Komponenten oder Steuerelemente, beispielsweise Selektoren (Cursors, Auswahlindikatoren usw.) und Navigations-Tools (Bildlaufleisten, Dokumentmatrizen, Umrisse usw.) beinhalten.
-
Der Controller 208B kann einen oder mehrere Controller 230 beinhalten, der auf Benutzerinteraktionen mit einem oder mehreren der Ansichtsitems 220 wartet und diese handhabt. In einigen Implementierungen kann jeder Controller 230 mit einem entsprechenden Ansichtselement 220 verknüpft sein. So können beispielsweise Controller für Menüleisten auf die Interaktionen mit Menüleisten-Ansichtselementen achten und diese verarbeiten (z. B. bezüglich verschiedener Aktionen, die ein Benutzer gewöhnlich unter mehreren Menüauswahlelementen ergreifen würde). Controller für Symbolleisten können auf die Interaktionen mit Symbolleisten-Ansichtselementen achten und diese verarbeiten. Controller für Kontextmenüs können auf die Interaktionen mit Kontextmenü-Ansichtselementen achten und diese verarbeiten, usw. Die Feststellung, dass ein bestimmtes Ereignis aufgetreten ist, kann einen bestimmten Controller 230 dazu veranlassen, vorbestimmte Codes oder einen sonstigen vorbestimmten Vorgang auszuführen, beispielsweise ein lokales Modell zu aktualisieren, sobald ein Tastendruck eingeht, und Informationen über den Tastendruck zu einem zentralen Serversystem hochzuladen.
-
Der Controller 208B kann außerdem einen Dokumentencontroller 232 beinhalten, der auf Benutzerinteraktionen mit dem Dokumentmenü 222 wartet und diese handhabt. Zusätzlich kann der Controller 208B einen Satz von Pro-Ansicht-Controllern 234 beinhalten, wobei jeder Controller 234 so konfiguriert ist, dass er auf Benutzerinteraktionen mit einer entsprechenden Ansicht im Satz der Pro-Ansichten 224 achtet und diese verarbeitet. Jeder Pro-Ansicht-Controller 234 kann verschiedene Controller-Typen beinhalten, beispielsweise Tasten-Controller für das Abfangen und Interpretieren von Tastatureingaben, Maus-Controller für das Abfangen und Interpretieren von Mauseingaben und Modelländerung-Controller für das Abfangen und Interpretieren von Modelländerungsereignissen.
-
Im Allgemeinen können die im Controller 208B beinhalteten Controller nutzergenerierte Ereignisse in Modell- und Ansichtsabänderungen umwandeln. Ein relevanter Controller (z. B. ein für die Verarbeitung von Aktionen konfigurierter Controller) kann beispielsweise aufgrund einer Benutzeraktion ein oder mehrere Ereignisse empfangen, die mit der Aktion verknüpft sind, und vorübergehende Änderungen an der Ansicht 206B vornehmen, bevor die Benutzeraktion erfolgt. Anschließend kann der entsprechende Controller auf Grundlage der Ereigniseigenschaften einen Befehl zusammenstellen, um das Modell 204B zu mutieren, es auszuführen und das aktualisierte Modell oder lediglich die Daten der jeweiligen Mutationen an das Remote-Serversystem weiterzuleiten, welches das Dokumentmodell 238 über das Netzwerk 236 hostet.
-
Die Controller können auch Timer oder andere Mechanismen verwenden, um Eingaben oder Abänderungen zu aggregieren, um so die Anzahl von Aktualisierungen, die an den lokalen oder serverbasierten Modellen vorgenommen werden müssen, zu verringern. Die Controller können beispielsweise Änderungen an dem lokalen und/oder serverbasierten Modell in Batches implementieren, die innerhalb vordefinierter Zeitfenster auftreten. So kann etwa eine Wartezeit von 200 ms nach dem ersten Tastaturbefehl eingehalten werden, bevor das zentrale Serversystem die Daten über alle Tastaturbefehle erhält, die in diesem Zeitfenster aufgetreten sind.
-
Es sind viele mögliche Benutzerinteraktionen mit der Anwendung 200B möglich, einschließlich von Interaktionen, die in Sitzungen mit nur einem oder in Sitzungen mit mehreren Benutzern beinhaltet sind. Zur Veranschaulichung wird nachfolgend eine Reihe von beispielhaften Benutzeraktionen mit der Anwendung 200B beschrieben. Um beispielsweise Text in das Textverarbeitungsdokument 202 einzugeben, kann der Benutzer mit einer Computermaus die gewünschte Dokumentposition 212 für die Texteinfügung auswählen, indem er auf das Dokument 202 klickt. Ein Maus-Controller, der in den Pro-Ansicht-Controllern 234 beinhaltet ist (z. B. ein Pro-Ansicht-Controller, der mit dem aktiven Dokument 202 verknüpft ist), kann auf ein Ereignis achten, das mit der Mauspositionierungs- und Mausklick-Eingabe verknüpft ist. Sobald dieses Ereignis abgefangen wird, kann der Controller die Ansicht 206B modifizieren (z. B. eine Pro-Ansicht, die mit dem aktiven Dokument verknüpft ist), um dem Benutzer einen visuellen Indikator für die Auswahl (z. B. einen Cursor) zu geben. Die ausgewählte Position 212 kann beispielsweise mit einem sichtbaren Cursor verknüpft sein (wobei der Cursor ein grafisches HTML-Element, beispielsweise ein Bild, ist und an einer geeigneten Position im Ansichtsbereich angezeigt wird, an der auch das Dokument angezeigt wird, wodurch das grafische Element in einer synthetischen Darstellung wie ein echter Cursor aussieht). Die ausgewählte Position kann auch optisch hervorgehoben werden oder eine andere Modifizierung erfahren. Zusätzlich kann auch die ausgewählte Position 212 der Position im Modell 2048 zugewiesen werden. So kann beispielsweise eine in einer eindimensionalen Zeichenfolge und in den Dokumentmodellen 210 enthaltene Stelle auf Grundlage der ausgewählten Position 212 bestimmt werden.
-
Unter Verwendung einer Tastatur kann der Benutzer erwünschten Text an der Dokumentenposition 212 eingeben. Ein Tastatur-Controller, der in den Pro-Ansicht-Controllern 234 beinhaltet ist, kann auf Ereignisse achten, die mit der Tastatureingabe verknüpft sind. Sobald diese abgefangen werden, kann die Ansicht 206B dahingehend modifiziert werden, dass der Benutzer einen visuellen Indikator für die Eingabe erhält. Wenn der Benutzer beispielsweise Text an der Position 212 eingibt, kann das Dokument 202 visuell aktualisiert werden, sodass der Benutzer den Text sieht. Darüber hinaus kann der Tastatur-Controller das Modell 204B dahingehend modifizieren, dass der eingegebene Text durch Kopieren der Benutzereingabe in das Modell eingefügt wird. So kann beispielsweise eine eindimensionale und in den Dokumentmodellen 210 enthaltene Zeichenfolge so aktualisiert werden, dass die eingegebenen Zeichen enthalten sind. Darüber hinaus kann das Dokumentmodell 238 dahingehend aktualisiert werden, dass der eingegebene Text enthalten ist, wodurch also das Modell 204B mit dem Dokumentmodell 238 koordiniert wird. Zum Beispiel können Veränderungen am Modell 204B an das Dokumentenmodell 238 über eine Verbindung zum Netzwerk 236 übermittelt werden. In einigen Implementierungen können Veränderungen periodisch gesendet werden (z.B. einmal pro 100 Millisekunden, einmal pro 200 Millisekunden, einmal pro 600 Millisekunden, einmal pro Sekunden, einmal pro 2 Sekunden oder in jedem anderen geeigneten Zeitintervall). In einigen Implementierungen können Änderungen auf Grundlage einer Benutzeraktivität (z. B. bei Eingabe eines Absatzumbruchs, bei Anwenden einer Formatänderung, beim Navigieren zu einem anderen Dokumentabschnitt, beim Klicken einer Speichern-Schaltfläche oder bei einer anderen Aktion) weitergegeben werden.
-
Als weiteres Beispiel kann ein Benutzer eine Entität (z.B. eine Liste, eine Tabelle, einen Hyperlink, ein Bild oder ein anderes solches Objekt) in das Dokument 202 einfügen. Der Benutzer kann beispielsweise mit einer Computermaus eine gewünschte Dokumentposition (z. B. die Position 212) für die Entitätseinfügung auswählen, indem er auf das Dokument 202 klickt. Ähnlich wie bei Interaktionen im Zusammenhang mit Texteingabe kann beispielsweise ein in dem Pro-Ansicht-Controller 234 enthaltener Maus-Controller auf ein Ereignis achten, das mit der Mauspositionierungs-Eingabe und der Mausklick-Eingabe verknüpft ist. Sobald das Ereignis abgefangen wird, kann der Controller die Ansicht 206B so modifizieren, dass der Benutzer einen visuellen Indikator für die ausgewählte Position erhält. Als Nächstes kann der Benutzer beispielsweise die Entität für Einfügungen festlegen, indem er mit einem Ansichtselement 220 oder mit dem Dokumentmenü 222 interagiert. Beispielsweise kann der Benutzer eine Auswahl auf einer Menüleiste vornehmen, um hierdurch den Wunsch einer Bildeinfügung mitzuteilen. Ein mit der Bildauswahl verknüpftes Dialogfeld kann dem Benutzer angezeigt werden, damit dieser das gewünschte Bild auswählen kann.
-
Modellansicht-Controller-Interaktionen für das Hinzufügen einer Entität innerhalb der Anwendung 200B können auf eine ähnliche Weise arbeiten, wie wenn ein Benutzer Text eingibt. Wenn der Benutzer beispielsweise das Bild an der Position 212 einfügt, kann das Dokument 202, wenn es auf einer Bearbeitungsfläche angezeigt wird, visuell aktualisiert werden, damit der Benutzer das Bild sieht. Zusätzlich kann das Modell 204B so modifiziert werden, dass es eine Referenz auf das eingefügte Bild enthält, indem die Referenz in das Modell geschrieben wird. Eines der Dokumentmodelle 210 (z. B. das mit dem aktiven Dokument verknüpfte Modell) kann beispielsweise so aktualisiert werden, dass es eine Referenz zum eingefügten Bild beinhaltet. Eine eindimensionale Zeichenfolge kann so aktualisiert werden, dass sie ein Sonderzeichen beinhaltet, das die Position des Bilds angibt, und die Referenz zum Bild kann gespeichert werden.
-
Wenn das Dokument 202 aus dem Modell gerendert wird, das dem aktiven Dokument zugewiesen ist, kann der Bildinhalt beispielsweise in das Dokument 202 integriert werden, das dem Benutzer angezeigt wird. In einigen Implementierungen kann die eindimensionale Zeichenfolge mehrere Vorkommnisse einer Kennung für eine einzelne Entität beinhalten. Zum Beispiel kann das Bild an mehreren Positionen im Dokument 202 positioniert werden, angegeben durch mehrfache Positionen für die Kennung in der eindimensionalen Zeichenfolge. Daher kann eine einzelne externe Entität innerhalb eines Dokuments oder zwischen mehreren Dokumenten geteilt werden – beides durch gemeinsame Referenzen auf die externe Entität. Das Dokumentmodell 238 kann dahingehend aktualisiert werden, dass das eingegebene Bild beinhaltet ist, wodurch also das Modell 204B mit dem Dokumentmodell 238 koordiniert wird. So können beispielsweise Änderungen am Modell 204B über eine Verbindung zum Netzwerk 236 an das Dokumentmodell 238 übertragen werden.
-
Zusätzlich kann der Benutzer beispielsweise die Formatierung des Texts und im Dokument 202 präsentierte Entitäten ändern. Durch Interaktion mit einem der Ansichtselemente 220 oder mit dem Dokumentmenü 222 kann der Benutzer eine gewünschte Formatierungsänderung (z. B. die Änderung der Schriftart eines ausgewählten Textblocks in Fettdruck, die Änderung einer Wörteranordnung als Liste, die Änderung eines Absatzes auf Rechtsausrichtung, die Änderung eines Dokumentzeilenabstands auf Doppelzeilen usw.) angeben. Einer der Controller 230 oder der Dokument-Controller 232 kann zusammen mit der Ansicht 206B auf Benutzerinteraktionen achten. Sobald eine solche Interaktion erkannt wird, kann das Modell 204B so modifiziert werden, dass die Formatierungsänderung beinhaltet wird. Eines der Dokumentmodelle 210 (z. B. das mit dem aktiven Dokument verknüpfte Modell) kann beispielsweise so aktualisiert werden, dass ein Element in eine Sparse-Stilmatrix beinhaltet wird. Diese definiert die Formatierungsänderung und definiert zudem die Positionen auf der eindimensionalen Zeichenfolge, an denen die Stiländerungen vorgenommen werden sollen. Ein in den Pro-Ansicht-Controllern 234 beinhalteter Modelländerungs-Controller kann auf Ereignisse achten, die mit dem Modell 204B verknüpft sind und eine Anfrage an die Ansicht 206B senden, eine entsprechende Aktualisierung vorzunehmen (z. B. durch Wiedergeben einer Anzeige des formatierten Textes). In einigen Implementierungen kann der Modelländerungs-Controller auch Modelländerungs-Ereignisse verarbeiten, die sich aus kollaborativen Modelländerungen ergeben.
-
In einigen Implementierungen kann ein Dokumentenmodell, bei dem sich um eines der Dokumentenmodelle 210 handelt, eine Teilmenge der Dokumentdaten des Dokumentenmodells 238 beinhalten. Wenn das Dokumentmodell 238 beispielsweise außergewöhnlich groß ist, kann eine Teilmenge der Daten (z. B. eine mit einem Abschnitt des Dokuments verknüpfte Teilmenge, die aktuell für den Benutzer sichtbar ist, plus eventuell ein Pufferbereich um den aktuell sichtbaren Bereich oder Ansichtsbereich, wodurch kleine Bildlaufentfernungen durch normale Browserinteraktionen und ohne Wiedergabe zusätzlicher Inhalte vom Modell verarbeitet werden können) für jeden einzelnen Client bereitgestellt werden, der aktuell das Textverarbeitungsdokument 202 anzeigt. Weiter ist es beispielsweise möglich, das vollständige Dokumentmodell 238 für jeden einzelnen Client bereitzustellen.
-
Der Benutzer kann wählen, einen anderen Bereich des Textverarbeitungsdokuments 202 zu sehen, als er gegenwärtig im Webbrowser sieht. Wenn der Benutzer beispielsweise mit einer Bildlaufleiste 214 interagiert, die mit dem Dokument 202 verknüpft ist, kann der Benutzer die Absicht äußern, die Dokumentdaten außerhalb des aktuellen Ansichtsfensters oder des angezeigten Bereichs zu sehen. Einer der Pro-Ansicht-Controller 234 (z.B. der dem aktiven Dokument zugewiesene Pro-Ansicht-Controller) kann auf Benutzerinteraktionen mit der Ansicht 206B oder einer anderen geeigneten Komponente warten (z.B. des visuellen Teils des Rollbalkens 214) und kann auf die Interaktion (z.B. durch eine Computermaus) hin anfordern, dass die Ansicht 206B sich selbst neu entwirft.
-
Falls der Benutzer eine kleine Roll-Menge bestimmt, kann die Ansicht 206A sich selbst im Browser anzeigen. So kann beispielsweise ein Pufferbereich der Dokumentdaten im Modell 204B (der bereits in einem DOM wiedergegeben wird) rund um die im sichtbaren Bereich von Dokument 202 angezeigten Daten beibehalten werden. Wenn sich das vom Benutzer festgelegte Maß an Bildlauf nach Ansicht 206B noch innerhalb der Grenzen des Pufferbereichs für Daten befindet, kann die Dokumentanzeige mithilfe der zuvor wiedergegebenen Daten aktualisiert werden. Wenn der Benutzer ein großes Maß an Bildlauf festlegt, sodass sich der vom Benutzer festgelegte Bildlauf nach Ansicht 206B außerhalb der Grenzen der zuvor wiedergegebenen Pufferdaten befindet, können beispielsweise vom Dokumentmodell 238 weitere Dokumentdaten über das Netzwerk 236 heruntergeladen werden. Hierdurch kann das Modell 204B mit Informationen aktualisiert werden, die mit weiteren Dokumentabschnitten verknüpft sind, und das Dokument kann mithilfe der heruntergeladenen Daten wiedergegeben werden.
-
2C ist das Blockdiagramm eines Systems 240, bei dem die kollaborative Bearbeitung eines Dokuments durch mehrere Benutzer und über ein gehostetes Serversystem ermöglicht wird. Im Allgemeinen beinhaltet das System 240 ein gehostetes Dokumentsystem 242, das von einem oder mehreren Computerservern (z. B. einer Serverfarm) ausgeführt wird. Das gehostete Dokumentsystem 242 kann Dokumenthosting-Dienste für eine beliebige Anzahl von Clients über Verbindungen zu einem Netzwerk 244 (z. B. das Internet) anbieten. Mithilfe des Dokumentsystems 242 können Clientbenutzer neue Dokumente erstellen, bestehende Dokumente modifizieren, Dokumente freigeben und kollaborativ mit anderen Benutzern an Dokumenten arbeiten.
-
Zu Darstellungszwecken können den Browseranwendungen 246, 248 und 250 Dokument-Hosting-Dienste bereitgestellt werden. Jede dieser Anwendungen kann von einem Webbrowser (z. B. vom Browser 104, wie in 1 dargestellt) ausgeführt werden und kann Modell-, Ansichts- und Controller-Komponenten beinhalten (z. B. ähnlich wie bei Anwendung 200, die in den 2A und 2B dargestellt wird). Die Anwendungen 246, 248 und 250 können so konfiguriert werden, dass sie Computercode ausführen (z. B. JavaScript und andere Codes, die auf einem Webbrowser laufen), um eine Textverarbeitungsschnittstelle anzuzeigen und Textverarbeitungsfunktionen auszuführen, die mit einem oder mehreren der vom gehosteten Dokumentsystem 242 bereitgestellten Dokumenten verknüpft sind.
-
Wie in der gegenwärtigen Veranschaulichung gezeigt, kann Chris mit dem Webbrowser 252 interagieren, kann Tina mit dem Webbrowser 254 interagieren und kann Spike mit dem Webbrowser 256 interagieren. Jeder der Browser 252, 254 und 256 kann auf eine passende Anzahl von Browseranwendungen (z. B. eingebettete Anwendungen, Widgets, Internetdienste usw.) zugreifen. Zum Beispiel kann Browser 252 auf Anwendung 246 zugreifen, Browser 254 kann auf Anwendung 248 zugreifen und Browser 256 kann auf Anwendung 250 zugreifen.
-
Indem sie mit von den Webbrowsern dargestellten Bedienelementen interagieren, können die Benutzer des Systems 240 (z.B. Chris, Spike und Tina) beispielsweise mit einem oder mehreren Dokumenten arbeiten, die vom gehosteten Dokumentsystem 242 verwaltet und angeboten werden. Die Benutzer können z. B. auf die vom System 242 bereitgestellten Dokumente zugreifen oder neue Dokumente erstellen. Jede der Browseranwendungen 246, 248 und 250 kann über das Netzwerk 244 mit einer Schnittstelle 260 des Dokumentsystems 242 kommunizieren. Zum Beispiel kann die Kommunikation zwischen den Browseranwendungen 246, 248 und 250 mit der Schnittstelle 260 HTTP(HyperText Transfer Protocol)-Anfragen, SOAP(Simple Objekt Access Protocol)-Nachrichten oder ein anderes geeignetes Protokoll beinhalten. In einigen Implementierungen können die Clientbrowser Kanalverbindungen zur Schnittstelle 260 unterhalten, um Sitzungsdaten zwischen Clients und dem Dokumentsystem 242 zu kommunizieren.
-
Das gehostete Dokumentsystem 242 kann Subkomponenten für die Speicherung und Verwaltung von Informationen beinhalten, die sich auf Systemnutzer, Dokumente und Browseranwendungen beziehen. Die verschiedenen Teilkomponenten können von demselben Computerserver ausgeführt werden oder über mehrere Computerserver verteilt sein. Die Teilkomponenten können direkt (z. B. über Meldungen, übertragene Dateien, freigegebene Daten, entfernte Prozessrufe oder ein anderes Protokoll) oder auch indirekt (z. B. über eine zwischengeschaltete Anwendung) untereinander kommunizieren. Im Allgemeinen können Teilkomponenten, die im Dokumentsystem 242 beinhaltet sind, mit den Clientanwendungen (z. B. den Browseranwendungen 246, 248 und 250) über die Schnittstelle 260 kommunizieren.
-
Das System 242 kann außerdem einen oder mehrere Datenspeicher für die Speicherung von Benutzerinformationen 270 beinhalten. Die Benutzerinformation 270 kann beispielsweise Informationen bezüglich der Systembenutzer (z. B. Chris, Tina und Spike) beinhalten. Diese Informationen können u. a. Folgendes beinhalten: Allgemeine Benutzerinformationen und Anmeldeinformationen (z. B. Benutzernamen, Kennwörter, E-Mail-Adressen usw.); Informationen zu einem oder mehreren Geräten, über das bzw. die die Benutzer auf das System zugreifen (z. B. IP-Adressen, Browserversionen, Verbindungsgeschwindigkeiten usw.) und Systemnutzungsinformationen (z. B. Zugriffszeiten, Umfang der abgerufenen Daten usw.).
-
In einigen Implementierungen kann das System 242 einen oder mehrere Datenspeicher für die Speicherung von Dokumenten 272 in der Form von z.B. Dokumentmodellen, wie des weiter oben und unten besprochenen, beinhalten. So können die Dokumente 272 beispielsweise Textverarbeitungsdokumente beinhalten, die von Systembenutzern erstellt, unterhalten und abgerufen werden. Ein weiteres Beispiel sind die Dokumente 272, die von einem automatisierten Vorgang, beispielsweise einem News-Feed oder einem anderen Berichtsvorgang, generiert werden und wiederum auf den gesammelten Daten basieren. Informationen, die mit den Dokumenten 272 verknüpft sind, können Dokumentdaten-Modelle, Dokumenttext, Dokument-Formatierungsinformationen, Entitäten (z. B. Tabellen, Bilder, Videos, Sound-Clips oder ähnliche Objekte) usw. beinhalten.
-
Das System 242 kann außerdem einen oder mehrere Datenspeicher für die Speicherung von Zugriffsinformationen 274 beinhalten. So kann die Zugriffsinformation 274 beispielsweise Informationen über die Zugriffssteuerung von Systembenutzern (z. B. Benutzern, die in den Benutzerinformationen 270 beinhaltet sind) auf Systemdokumente (z. B. Dokumente, die in den Dokumenten 272 beinhaltet sind) beinhalten. Im Allgemeinen können Systembenutzer die Zugriffsrechte für die selbst erstellten oder verwalteten Dokumente selbst definieren. So kann beispielsweise Chris ein persönliches Briefdokument erstellen und festlegen, dass dieses Dokument privat ist. Hierdurch können andere Systembenutzer (z. B. Tina und Spike) dieses Dokument nicht finden oder darauf zugreifen, da der Zugriff auf verschiedene gängige Weise eingeschränkt sein kann. Ein weiteres Beispiel wäre, dass Tina ein Zeitplandokument hochlädt und definieren könnte, dass dieses Dokument mit Chris geteilt werden soll und für diesen einsehbar ist. Spike könnte das Dokument deshalb weder finden noch darauf zugreifen, während Chris auf das Dokument im schreibgeschützten Modus zugreifen könnte. In einigen Implementierungen könnte Tina als Dokumentautorin den vollständigen Zugriff auf das Dokument behalten. Sie hätte dann bestimmte Rechte, beispielsweise das Hinzufügen, Bearbeiten und Löschen von Inhalten, könnte Rechte ändern und könnte das Dokument aus dem System 242 entfernen. Ein weiteres Beispiel wäre, dass Spike in Verbindung mit einem Gruppenprojekt ein Dokument erstellen könnte, und Chris sowie Tina (neben sich selbst) vollständige Zugriffsrechte einräumen könnte. In einigen Implementierungen können Benutzergruppen in der Zugriffsinformation 274 beinhaltet sein. So kann ein Benutzer beispielsweise eine Gruppe erstellen und dieser Gruppe ein oder mehrere Benutzer hinzufügen. Statt beim Zuweisen von Dokumentrechten einzelne Benutzer auszuwählen, kann der Benutzer in bestimmten Fällen eine Gruppe auswählen, in der die einzelnen Benutzer enthalten sind. Die Zugriffsinformation 274 kann auch solche Informationen wie die Benutzer-IDs der Dokumentbenutzer, die Dokument-Zugriffszeiten usw. beinhalten.
-
In einigen Implementierungen kann das System 242 einen oder mehrere Datenspeicher für die Speicherung von HTML/JavaScript 276 beinhalten. So kann das HTML/JavaScript 276 beispielsweise den Anwendungscode für die Ausführung der Browseranwendungen 246, 248 und 250 beinhalten. Der Anwendungscode kann für einen der Browser 252, 254 und 256 bereitgestellt werden, beispielsweise, wenn die Browserbenutzer auf eine Website zugreifen, die mit dem gehosteten Dokumentsystem 242 verknüpft ist. Auf das Empfangen einer Anfrage für jedes der Dokumente 272 hin, kann das System 242 beispielsweise HTML/JavaScript 276 zusätzlich zu einem oder mehreren der Dokumente 272 bereitstellen. Durch Verwendung des HTML/JavaScript 276 können die Browseranwendungen 246, 248 und 250 die Dokumentdaten wiedergeben und eine Schnittstelle bereitstellen, über die die Browserbenutzer mit den Dokumenten interagieren können. In einigen Implementierungen können andere Technologien als HTML und JavaScript für die Bereitstellung des Anwendungscodes verwendet werden. So kann beispielsweise für Webbrowser mit einem entsprechenden Plug-In ein anderer Typ des kompilierten oder interpretierten Codes bereitgestellt werden. Es sind viele mögliche Benutzerinteraktionen mit dem System 240 möglich, einschließlich von Interaktionen in Sitzungen mit nur einem oder mit mehreren Benutzern. So können beispielsweise in einer kollaborativen Bearbeitungssitzung mehrere Benutzer gleichzeitig mit einem Dokument interagieren. Obwohl die für die Dokumentbearbeitung verwendeten Anwendungen möglicherweise unabhängig voneinander reagieren, können die Anwendungen beim Aktualisieren und Wiedergeben des Dokumentmodells denselben Bearbeitungsregeln folgen. Dadurch können mehrere Benutzer eine ähnliche Dokumenterfahrung haben und in der Lage sein, bei der Erstellung eines ähnlichen Dokumentmodells zusammenzuarbeiten.
-
In einer Beispielsitzung greift Chris, um eine gemeinschaftliche Textverarbeitungs-Dokumentenbearbeitung zu initiieren, auf das gehostete Dokumentsystem 242 zu, indem er den Webbrowser 252 auf eine Webseite (z.B. eine Domain) steuert, die dem System 242 zugewiesen ist. Beim Eingang der Anmeldeinformationen vom Browser 252 kann das System 242 die Informationen von Chris mit der Benutzerinformation 270 abgleichen. Bei dieser Abgleichung kann das System 242 dem Browser 252 das HTML/JavaScript 276 bereitstellen, damit die Online-Textverarbeitung ausgeführt wird (selbst wenn einige Teile des Codes bereits vor der Abgleichung weitergegeben werden). Der Browser kann einen Teil von HTML/JavaScript 276 als Browseranwendung 246 beinhalten, den mit der Anwendung verknüpften Chrome wiedergeben und die Anwendung für Chris anzeigen.
-
Chris kann mit der Browseranwendung 246 über eine Reihe Bedienelemente interagieren, die in einer Anwendungsansicht innerhalb des Browsers 252 angezeigt wird. So kann Chris beispielsweise die Absicht erkennen lassen, dass er ein neues Dokument erstellen will, indem er auf eine Schaltfläche klickt oder eine Menüoption in der Anwendungsansicht auswählt. Der Anwendungs-Controller kann den Befehl abfangen und über das Netzwerk 244 an die Schnittstelle 260 weitergeben. Bei Eingang des Befehls kann das System 242 ein neues Dokument zu den Dokumenten 272 hinzufügen und die mit dem neuen Dokument verknüpften Informationen zum Satz der aktiven Modelle 262 hinzufügen. So können die aktiven Modelle 262 beispielsweise Modellinformationen beinhalten, die mit Dokumenten verknüpft sind, welche wiederum von anderen Benutzern des Systems 242 bearbeitet werden.
-
Eine korrespondierende Version des Models der Reihe aktiver Modelle 262 kann in der Browseranwendung 246 vorhanden sein. So kann Chris beispielsweise bei einem Textverarbeitungsdokument, das von der Ansicht der Browseranwendung 246 bereitgestellt wird, Inhalte hinzufügen und Änderungen vornehmen. Die entsprechenden Inhalte und Änderungen können auf ein Modell angewendet werden, auf das die Browseranwendung 246 (und verknüpfter HTML- und JavaScript-Code, der auf dem Browser ausgeführt wird) zugreift, und das auf die aktiven Modelle 262 weitergeleitet werden kann.
-
Chris kann das Dokument außerdem mit einem oder mehreren Benutzern teilen. Wenn Chris beispielsweise Steuerelemente verwendet, die mit der Anwendung 246 verknüpft sind, kann er Tina und Spike als Benutzer auswählen, die das Dokument teilen können. Zudem kann er Tina und Spike vollständige Benutzerrechte einräumen. So können Tina und Spike beispielsweise in eine dargestellte Liste von Benutzern aufgenommen werden, die gewöhnlich Dokumente mit Chris teilen, und Chris kann Tina und Spike aus dieser Liste auswählen. Ein weiteres Beispiel wäre, dass Chris die E-Mail-Adressen von Tina und Spike bereitstellen kann. Das System 242 kann die Freigabeinformationen (z. B. Benutzer-IDs anderer Benutzer, die Zugriff auf das Dokument haben, Zugriffsebenen der Benutzer usw.) in der Zugriffsinformation 274 speichern. In einigen Implementierungen kann das System 242 Nachrichten (z. B. E-Mails, Textnachrichten, Softwarenachrichten usw.) an Benutzer senden, die Dokumentrechte erhalten haben. In einigen Implementierungen können Benutzer, die Dokumentrechte erhalten haben, einen Link (z. B. einen Hyperlink oder URL) zum geteilten Dokument empfangen.
-
Auf das Empfangen einer Benachrichtigung bezüglich des geteilten Dokuments hin, können Tina und Spike auf das Dokument mit ihren Webbrowsern 254 und 256 zugreifen. Zum Beispiel kann das System 242 auf eine Verifizierung hin den Browsern 254 und 256 HTML/JavaScript 276 für die Ausführung eines Online-Textverarbeitungsprogramms bereitstellen. Der Browser kann einen Teil des HTML/JavaScript 276 als Browseranwendungen 248 und 250 beinhalten, den mit der Anwendung verknüpften Chrome wiedergeben und die Anwendungen anzeigen.
-
Zusätzlich kann ein im gehosteten Dokumentsystem 242 beinhalteter aktiver Modellmanager 264 bestimmen, welche Dokumente gegenwärtig von Benutzern des Systems und Benutzern, die im Dokument aktiv sind (d.h. Chris), geöffnet sind und kann eine gemeinschaftliche Sitzung aufsetzen. So kann beispielsweise der aktive Modellmanager 264 bestimmen, dass das von Tina und Spike angeforderte Dokument mit einem oder mehreren der aktiven Modelle 262 verknüpft ist. Das System 242 kann die Dokumentanfrage dann an einen Computer weiterleiten, auf dem das Dokument gehostet ist, woraufhin der Computer Tina und Spike mit der aktuellen Sitzung verknüpfen kann. Darüber hinaus können die Browseranwendungen 248 und 250 die Modelldaten herunterladen, die mit dem/den aktiven Modell(en) 262 verknüpft sind, und die heruntergeladenen Modelldaten wiedergeben und anzeigen. In einigen Implementierungen kann das System 242 Modellinstanzen für Tina und Spike erstellen und diese zu den aktiven Modellen 262 hinzufügen.
-
Im gegenwärtigen Beispiel können Benutzer in der Lage sein, ihre eigenen Cursors und auch die Cursors anderer Benutzer in einer gemeinschaftlichen Sitzung zu sehen. Zur Veranschaulichung wird der Cursor jedes einzelnen Benutzers für ihn bzw. sie als Quadrat angezeigt. So kann Chris seinen eigenen Cursor beispielsweise als Quadrat sehen, während die Cursors anderer Benutzer als Kreis oder Dreieck dargestellt werden. Dementsprechend sehen Tina und Spike auch ihre eigenen Cursors möglicherweise als Quadrat, während die Cursors der anderen Benutzer als Kreis oder Dreieck dargestellt werden. In einigen Implementierungen können die Cursors in unterschiedlichen Farben dargestellt werden (was hier nicht gezeigt werden konnte). So können die Cursors beispielsweise im Allgemeinen als Unterstriche oder vertikale Striche dargestellt werden, wobei die Cursors für jeden Benutzer eine andere Farbe haben.
-
Im gegenwärtigen Beispiel können Veränderungen, die von jedem der Benutzer vorgenommen werden, von den Browseranwendungen 246, 248 und 250 an das gehostete Dokumentsystem 242 gesendet, koordiniert und zurück an die anderen Benutzer gesendet werden. In einigen Implementierungen können Veränderungen in Zeitintervallen gesendet werden (z.B. einmal pro 100 Millisekunden, einmal pro 200 Millisekunden, einmal pro 600 Millisekunden, einmal pro Sekunden, einmal pro 2 Sekunden oder in jedem anderen geeignete Zeitintervall). In einigen Implementierungen kann das Senden zumindest teilweise von der Aktivität oder Inaktivität des Benutzers abhängig sein. Während der Perioden der Inaktivität können Änderungen beispielsweise weniger häufig gesendet oder empfangen werden, als in Perioden von Benutzeraktivität. Wenn ein Benutzer Daten eingibt, oder wenn sich ein lokaler Benutzer mit dem Zeigegerät über den Cursor für einen anderen Benutzer bewegt, kann eine Popup-Beschriftung zur Identifizierung des anderen Benutzers angezeigt werden. Auf diese Weise kann der lokale Benutzer feststellen, wer die Änderungen vornimmt, selbst wenn die Beschriftung anschließend wieder ausgeblendet werden kann, um das Dokument nicht weiter zu blockieren.
-
Um von mehreren Benutzern vorgenommene mehrfache Dokumentveränderungen zu koordinieren kann das gehostete Dokumentsystem 242 eine Kollaborationslogik 266 beinhalten. Die Zusammenarbeitslogik 266 kann beispielsweise von einem oder mehreren Codemodulen ausgeführt werden, die wiederum von einem oder mehreren mit dem System 242 verknüpften Computerservern ausgeführt werden. In einigen Implementierungen können Teile der Zusammenarbeitslogik von den Browseranwendungen 246, 248 und 250 ausgeführt werden. Im Allgemeinen kann die Logik 266 Datenkonflikte (z. B. Fälle, in denen mehrere Benutzer denselben Dokumentteil bearbeiten oder widersprüchliche Dokumentformate anwenden) lösen, indem ein konsistenter Satz von Regeln auf alle Benutzeränderungen angewandt wird. Selbst wenn in manchen Fällen ein oder mehrere Benutzer möglicherweise aufgefordert werden, eine Änderung eindeutig zu machen. Wenn beispielsweise Tina eine Dokumentänderung vornimmt und Spike noch vor Empfang von Tinas Änderung eine widersprüchliche Dokumentänderung vornimmt, kann Spike eine Meldung von der Browseranwendung 250 mit möglichen Konfliktlösungsszenarien erhalten. In einigen Implementierungen kann ein Benutzer identifiziert werden, dessen Änderungen sich bei Konfliktsituationen gegenüber den Änderungen anderer Benutzer durchsetzen. So kann Chris als Dokumentautor bei Konflikten seine Änderungen möglicherweise gegenüber anderen Änderungen von Tina oder Spike durchsetzen. Wenn Spike beispielsweise genau dann einen Absatz bearbeitet, wenn Chris diesen löscht, kann der Absatz (einschließlich der Änderungen von Spike) gelöscht werden.
-
Daher das in 2C gezeigte System kollaborative Bearbeitungen eines gehosteten Dokuments durch mehrere Benutzer gleichzeitig verarbeiten. Die Verwaltung einer solchen Bearbeitung kann mit einem niedrigen Aufwand an Datenverkehr zwischen den verschiedenen Teilsystemen im System einhergehen.
-
3 ist ein Flussdiagramm eines exemplarischen Prozesses für die Koordinierung simultaner Veränderungen an einem elektronischen Dokument. Im Allgemeinen involviert der Vorgang das Feststellen von Veränderungen in einem Dokument und einem Dokumentmodell, die Benutzer eines Client-Computergeräts vorgenommen haben, das Aufzeichnen dieser Veränderungen als Abänderungen, das Bestimmen einer gegenwärtigen Cursor-Position für den Nutzer des Client-Geräts und das Hochladen dieser Informationen in ein Serversystem, welches diese Informationen dann mit anderen Client-Geräten teilen kann, möglicherweise nach einer Neuformatierung oder anderweitigen Anpassung der Informationen. Diese Informationen können jedes der Client-Geräte in die Lage versetzen, von anderen Geräten vorgenommene Bearbeitungen und die aktuelle Cursor-Position der anderen Geräte in Echtzeit auf jeder lokalen Maschinen anzuzeigen.
-
Der Vorgang beginnt in Feld 302, wo Nutzereingaben von einem Client-Gerät empfangen werden. Diese Eingaben können eine Vielzahl von Formen annehmen, wie etwa das Tippen von Text in ein Textverarbeitungs-, Tabellenkalkulationsprogramm oder ein Bilddokument, oder andere geeignete Veränderungen. Die Eingaben können außerdem das Löschen von Text, das Einfügen von Figuren oder das Ändern des Formats oder Stils von Elementen in einem Dokument einbeziehen.
-
In Feld 304 werden die vom Benutzer empfangenen Eingaben in einer Übertragung an das zentrale Serversystem zusammengefasst. Diese Informationen, die an das Serversystem übertragen werden, können Informationen beinhalten, die von einem Benutzer vorgenommene Veränderungen und Positionen identifizieren, an denen diese Veränderungen im Dokumentmodell, das durch ein zentrales Serversystem verwaltet wird, vorgenommen werden sollen. Die Veränderungen können außerdem eine Revisionsnummer beinhalten, sodass das zentrale Serversystem die Reihenfolge nachhalten kann, in welcher die Veränderungen angekommen sind und diese Informationen verwenden kann, um Interferenzen zwischen von verschiedenen Benutzern vorgenommene Veränderungen aufzulösen. Zusätzlich können die Informationen eine Identifizierung von Informationen für jeden Benutzer beinhalten, sodass die Nutzeridentitäten mit anderen Benutzern in einem gemeinschaftlichen Bearbeitungsmodus für das Dokument geteilt werden können.
-
In Feld 306 aktualisiert das Client-Gerät seine eigene Version des Dokumentmodells und rendert das Model oder den aktualisierten Modellbereich in ein Dokumentenobjektmodell (DOM) auf dem Gerät, auf das durch einen Browser zugegriffen werden kann, welcher dann das Dokument anzeigt. In Feld 308 empfängt das Gerät Modelldaten für das Dokument von einem zentralen Serversystem. Diese empfangenen Informationen korrespondieren mit Informationen, die andere Client-Geräte an das zentrale Serversystem liefern, vergleichbar der Informationen, die das erste lokale Client-Gerät in Feld 304 geliefert hat. Somit nehmen die verschiedenen Benutzer gleichzeitige Bearbeitungen vor und überschneiden sich die Kommunikationen durch das zentrale Serversystem gegenseitig.
-
In der Zeit seitdem das Client-Gerät zuletzt mit dem Serversystem kommuniziert kann, hat der Benutzer des Geräts möglicherweise Bearbeitungen auf dem Gerät vorgenommen, welche die Bearbeitungen anderer Benutzer an anderen Geräten beeinträchtigen oder von ihnen beeinträchtigt werden. Von daher müssen sich überschneidende Bearbeitungen möglicherweise identifiziert werden und müssen möglicherweise Umwandlungen auf eine Weise durchgeführt werden, die mit den Umwandlungen auf anderen Clients und auf dem Serversystem übereinstimmt, um so ein aktualisiertes Dokumentmodell beim lokalen Client zu erzeugen. Der Client kann außerdem die Cursor-Positionen anderer Benutzer identifizieren, dort wo diese Positionen direkt in den Daten angegeben sein können, die vom Serversystem empfangen wurden. Diese Daten können dem lokalen Dokumentmodell hinzugefügt und im lokalen DOM gerendert werden. Diese Daten können außerdem eine Kennung anzeigen, wie etwa einen Benutzernamen oder eine Bezeichnung, um sie jeder Cursor-Position zuzuweisen. In Feld 312 verarbeitet der Vorgang die Bearbeitungen und passt die Cursor-Positionen für jeden der Benutzer an, die zuvor einen Cursor auf der Dokumentenanzeige des lokalen Clients angezeigt hatten. Zum Beispiel können schmale Span-Elemente mit einer aus dem Hintergrund des Dokuments hervorgehobenen Hintergrundfarbe innerhalb des DOM von ihren in der letzten Kommunikation vom Serversystem angezeigten Positionen an neue Positionen bewegt werden, die in der jüngsten Kommunikation vom Serversystem angezeigt werden.
-
In Feld 314 werden die Veränderungen zum Modell und im weiteren Sinne zum DOM hinzugefügt, wenn das Modell in das DOM-Gebiet gerendert wird und in Feld 316 zeigt ein Browser das modifizierte Dokument und die Cursors an, indem er auf das DOM zugreift. Der hier gezeigte Vorgang kann sich, wie oben bemerkt, häufig wiederholen, etwa mehrere Male pro Sekunde. Im Ergebnis können die Cursor-Positionen anderer Benutzer häufig aktualisiert werden und können, was Zeit und Ort angeht, sehr genau mit der Cursor-Position übereinstimmen, die gegenwärtig von den anderen Benutzern auf ihren eigenen Maschinen gesehen wird. Im Ergebnis können mehrere Benutzer reibungsloser miteinander interagieren, weil sie leicht die Arbeit in Echtzeit sehen können, die andere Benutzer im Dokument verrichten.
-
4 ist ein Swimlane-Diagramm eines exemplarischen Prozesses für die Koordination simultaner Veränderungen an einem elektronischen Dokument. Im Allgemeinen zeigt der Ablauf ein Beispiel, in dem symmetrische Handlungen von zwei verschiedenen Client-Computergeräten vorgenommen werden, die beide durch ein zentrales Serversystem auf ein gemeinsames Dokument zugreifen, um gemeinschaftliche Bearbeitungen des Dokuments durchzuführen.
-
Der Vorgang beginnt in Feld 402A und 402B, wo jeder der Benutzer an den zwei Client-Geräten damit beginnt, ein geteiltes Dokument nahezu gleichzeitig zu bearbeiten. In den Feldern 404A und 404B kann jeder der Client-Geräte diese Änderungen an das Serversystem übertragen, etwa wenn ein Timer abläuft oder für jeden Tastenanschlag oder jede ähnliche Veränderung, die von einem der Clients erkannt wird. In Feld 406 erkennt das Serversystem, dass das Dokument von einem bestimmten Benutzer bearbeitet wird und kann, in diesem Beispiel, solche Handlungen für die beiden unterschiedlichen Client-Geräte parallel vornehmen, wie in den gestapelten Feldern in der mittleren Spalte gezeigt. Die Handlungen können auch in einer Warteschlange gestapelt und in der Reihenfolge abgearbeitet werden, in der sie empfangen wurden. Das Serversystem 408 kann auch andere Benutzer identifizieren, die gegenwärtig im Dokument und aktiv sind, sodass es bestimmen kann, mit welchen anderen Benutzern die Information geteilt wird, dass es empfangen wurde. In Feld 410 aktualisiert das Serversystem seine Master-Version des Dokumentmodells und überträgt Veränderungsdaten an die jeweiligen Clients oder werden den Veränderungen von Client B zugewiesene Daten an Client A gesendet und dem Client B zugewiesene Daten werden an Client A gesendet.
-
In den Feldern 412A und 412B empfangen die Clients die Veränderungsdaten vom zentralen Serversystem und ermitteln potentielle Kollisionen, die von den Bearbeitungen des anderen Clients erzeugt wurden, wenn man sie mit Bearbeitungen des lokalen Clients vergleicht. In den Feldern 414A und 414B passt jedes der Client-Geräte die Darstellung seiner Veränderungsdaten an, um solche Kollisionen aufzulösen und aktualisieren die Client-Geräte dann, in Feld 416A und 416B, ihre jeweiligen Modelle und rendern sie in die jeweiligen DOMs der Browser, die auf den Clients laufen. Schließlich verändern die Clients, in den Feldern 418A und 418B, die Daten im DOM, die sich auf die Cursors anderer Benutzer beziehen und verschieben die Entsprechungen dieser Cursors auf ihre neuen Positionen entsprechend der vom Serversystem in den Boxen 412A und 412B empfangenen Daten.
-
Bei dem hier gezeigten Vorgang kann es sich insofern um einen kontinuierlichen Vorgang handeln, dass jeder Client kontinuierlich auf durch die Benutzer vorgenommene Eingaben wartet und dann die Eingaben stapelweise übertragen kann, in Stapeln einzelner Eingaben wie etwa Tastenanschlägen oder in etwas größeren Stapeln, wo die Stapelgröße im Allgemeinen klein genug ausgewählt wird, dass Eingaben an andere Clients häufig genug übertragen werden, um eine reibungslose Nutzererfahrung in einer gemeinschaftlichen Sitzung zu gewährleisten.
-
5A zeigt einen Beispiels-Screenshot eines Textverarbeitungsprogramm, das eine gemeinschaftliche Bearbeitungssitzung implementiert. In diesem Beispiel gibt es drei Benutzer, die einen Lebenslauf von Joseph Smith betrachten und am Ende des Lebenslaufs Kommentare tippen. Bei dem hier gezeigten bestimmten Screenshot handelt es sich um einen Seitennutzer namens kroberts, was durch die Tatsache angezeigt wird, dass ein Cursor in der Mitte der drei Zeilen nahe dem Ende des Lebenslaufes nicht durch einen Merker mit einem Namen begleitet wird. Vermutlich muss die lokale Benutzerin (hier kroberts) ihren eigenen Namen nicht neben ihrem Cursor sehen und durch das Weglassen des Merkers hebt sich der Cursor, verglichen mit den anderen Cursors, die einander eher gleichen, markanter hervor. Die anderen Benutzer, James Pattison und ein Benutzer namens otazi tippen zur selben Zeit wie kroberts, sodass man, wäre die Figur animiert, die drei vertikalen Cursorbalken sehen könnte, wie sie beinahe unisono von links nach rechts über die Seite wandern würden. Jede Aktualisierung des DOM, aus dem das Dokument erzeugt, kann mit hoher Regelmäßigkeit erfolgen (z.B. mehrere Male pro Sekunde) und kann, je nach Tippgeschwindigkeit des bestimmten Benutzers, ein bis mehrere Zeichen beinhalten.
-
Außerdem wird ein Chatfeld am rechten Ende der Seite bereitgestellt, in dem die Benutzer Kommentare tippen können, während sie fortschreiten, wobei diese Kommentare nicht im Dokument selbst beinhaltet sein werden. Zum Beispiel kann einer der Benutzer in einer gemeinschaftlichen Bearbeitungsumgebung, wie hier gezeigt, anfordern, dass die anderen Benutzer bestimmte Handlungen vornehmen. Als ein Beispiel kann ein erster Benutzer anfordern, dass andere Benutzer bestimmte Absätze im Dokument überprüfen und arbeiten, während der erste Benutzer andere Absätze überprüft und bearbeitet.
-
5B zeigt einen Screenshot eines Tabellenkalkulationsdokuments, das gemeinschaftlich von mehreren Benutzern bearbeitet wird. In diesem Beispiel wird das Vorhandensein des Cursors dieses bestimmten Benutzers durch farbige Umrisse oder Felder in bestimmten Zellen angezeigt und hier wird ersichtlich, dass vier verschiedene Benutzer gleichzeitig Spalte B der Tabellenkalkulation bearbeiten.
-
6 zeigt ein Beispiel eines allgemeinen Computergeräts 600 und eines allgemeinen mobilen Computergeräts 650, die mit den hier beschriebenen Techniken verwendet werden. Computergerät 600 soll verschiedene Formen von Digitalcomputern darstellen, zum Beispiel Laptops, Desktops, Workstations, Personal Digital Assistants, Server, Blade Server, Mainframes und andere geeignete Computer. Computergerät 650 soll verschiedene Formen mobiler Geräte, wie Personal Digital Assistants, Mobiltelefone, Smartphones und andere ähnliche Computergeräte, darstellen. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen nur exemplarisch sein und sollen Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen nicht einschränken.
-
Das Computergerät 600 beinhaltet einen Prozessor 602, Speicher 604, ein Speichergerät 606, eine Hochgeschwindigkeitsschnittstelle 608, die mit dem Speicher 604 und High Speed-Erweiterungsanschlüssen 610 verbindet, und eine Low Speed-Schnittstelle 612, die mit einem Low Speed-Bus 614 und dem Speichergerät 606 verbindet. Alle der Komponenten 602, 604, 606, 608, 610 und 612 sind mithilfe verschiedener Busse miteinander verbunden und können an einer gemeinsamen Hauptplatine oder auf andere Weise, wie geeignet, angebracht sein. Der Prozessor 602 kann Anweisungen zur Ausführung innerhalb des Computergeräts 600 verarbeiten, einschließlich Anweisungen, die im Speicher 604 oder auf dem Speichergerät 606 gespeichert sind, um grafische Informationen für eine GUI auf einem externen Eingabe-/Ausgabegerät anzuzeigen, wie etwa Anzeige 616, die an die Hochgeschwindigkeitsschnittstelle 608 gekoppelt ist. In anderen Implementierungen können mehrere Prozessoren und/oder mehrere Busse, wie angemessen, zusammen mit mehreren Speichern und Speichertypen verwendet werden. Außerdem können mehrere Computergeräte 600 verbunden sein, wobei jedes Gerät Teile der nötigen Operationen bereitstellt (z. B. als Serverbank, eine Gruppe von Blade Servern oder ein Multiprozessor-System).
-
Der Speicher 604 speichert Informationen innerhalb des Computergeräts 600. In einer Implementierung ist der Speicher 604 ein flüchtiges Speichergerät oder flüchtige Speichergeräte. In einer anderen Implementierung ist der Speicher 604 ein nicht flüchtiges Speichergerät oder nicht flüchtige Speichergeräte. Der Speicher 604 kann auch eine andere Form von computerlesbarem Medium sein, zum Beispiel ein magnetischer oder optischer Datenträger.
-
Das Speichergerät 606 ist in der Lage, Massenspeicher für das Computergerät 600 bereitzustellen. In einer Implementierung kann das Speichergerät 606 ein computerlesbares Medium sein oder enthalten, zum Beispiel ein Diskettengerät, ein Festplattengerät, ein optisches Datenträgergerät oder ein Bandgerät, ein Flash-Speicher oder ein anderes ähnliches Solid-State-Speichergerät oder eine Reihe von Geräten, zum Beispiel Geräte in einem Storage Area Network oder anderen Konfigurationen. Ein Computerprogrammprodukt kann konkret in einem Informationsträger ausgeführt sein. Das Computerprogrammprodukt kann auch Anweisungen enthalten, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie etwa der Speicher 604, das Speichergerät 606, der Speicher auf Prozessor 602 oder ein propagiertes Signal.
-
Der Hochgeschwindigkeits-Controller 608 verwaltet bandbreitenintensive Vorgänge für das Computergerät 600, während der Low Speed-Controller 612 weniger bandbreitenintensive Vorgänge verwaltet. Eine solche Zuordnung von Funktionen ist nur exemplarisch. In einer Implementierung, ist der High-Speed-Controller 608 an den Speicher 604, die Anzeige 616 (z. B. durch einen Grafikprozessor oder -beschleuniger) und an die -Erweiterungsanschlüsse 610 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht gezeigt). In der Implementierung ist der Low-Speed-Controller 612 an das Speichergerät 606 und an den Low-Speed-Erweiterungsanschluss 614 gekoppelt. Der langsame Erweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, B, Ethernet, Funkethernet) beinhalten kann, kann an ein oder mehrere Eingabe-/Ausgabevorrichtungen, wie eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie einen Switch oder Router, z. B. durch einen Netzwerkadapter gekoppelt sein.
-
Das Computergerät 600 kann in einer Reihe verschiedener Formen implementiert werden, wie in der Figur gezeigt. Zum Beispiel kann es als Standardserver 620, oder mehrmals in einer Gruppe solcher Server implementiert sein. Es kann auch als Teil eines Rackserversystems 624 implementiert sein.
-
Darüber hinaus kann es in einem Personal Computer, wie Laptop-Computer 622, implementiert sein. Alternativ können Komponenten von Computergerät 600 mit anderen Komponenten in einem mobilen Gerät kombiniert sein (nicht dargestellt), z. B. Gerät 650. Jedes dieser Geräte kann eines oder mehrere Computergeräte 600, 650 enthalten, und ein gesamtes System kann aus mehreren Computergeräten 600, 650 bestehen, die miteinander kommunizieren.
-
Das Computergerät 650 beinhaltet einen Prozessor 652, Speicher 664, ein Eingabe-/Ausgabegerät, wie etwa eine Anzeige 654, eine Kommunikationsschnittstelle 666 und einen Sende-Empfänger 668, neben anderen Komponenten. Das Gerät 650 kann auch mit einem Speichergerät ausgestattet sein, zum Beispiel einem Microdrive oder einem anderen Gerät, um zusätzlichen Speicher bereitzustellen. Jede der Komponenten 650, 652, 664, 654, 666 und 668 ist mithilfe verschiedener Busse miteinander verbunden, und kann an einer gemeinsamen Hauptplatine oder auf andere Weise, wie geeignet, angebracht sein.
-
Der Prozessor 652 kann Anweisungen im Computergerät 650 ausführen, zum Beispiel Anweisungen, die in Speicher 664 gespeichert sind. Der Prozessor kann als ein Chipsatz von Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann zum Beispiel für die Koordination der anderen Komponenten des Geräts 650 sorgen, zum Beispiel die Kontrolle von Benutzeroberflächen, Anwendungen, die vom Gerät 650 ausgeführt werden, und die drahtlose Kommunikation durch Gerät 650.
-
Der Prozessor 652 kann mit einem Benutzer über die Steuerschnittstelle 658 und die Displayschnittstelle 656 kommunizieren, die mit einem Display 654 gekoppelt ist. Die Anzeige 654 kann zum Beispiel eine TFT-LCD-(Thin-Film-Transistor Liquid Crystal Display) oder eine OLED-Anzeige (organische Leuchtdiode) oder eine andere angemessene Anzeigetechnologie sein. Die Displayschnittstelle 656 kann eine geeignete Schaltung enthalten, die das Display 654 dazu bringt, einem Benutzer grafische und andere Informationen zu präsentieren. Die Steuerschnittstelle 658 kann Befehle von einem Benutzer empfangen und sie für die Übermittlung an Prozessor 652 umwandeln. Zusätzlich kann eine externe Schnittstelle 662 Kommunikation mit dem Prozessor 652 bereitstellen, zum Beispiel, um Nahbereichskommunikation des Gerätes 650 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 662 kann zum Beispiel in einigen Implementierungen, eine kabelgebundene Kommunikation bereitstellen, oder in anderen Implementierungen eine drahtlose Kommunikation, und es können auch mehrere Schnittstellen verwendet werden.
-
Der Speicher 664 speichert Informationen im Computergerät 650. Der Speicher 664 kann als eines oder mehrere computerlesbare Medien, flüchtige Speichergeräte oder nicht flüchtige Speichergeräte implementiert sein. Erweiterungsspeicher 674 kann ebenfalls bereitgestellt und mit dem Gerät 650 über Erweiterungsschnittstelle 672 verbunden werden, die zum Beispiel eine SIMM(Single In Line Memory Module)-Kartenschnittstelle umfassen kann. Dieser Erweiterungsspeicher 674 kann zusätzlichen Speicherplatz für Gerät 650 bereitstellen oder er kann auch Anwendungen oder andere Informationen für Gerät 650 speichern. Insbesondere kann Erweiterungsspeicher 674 Anweisungen zum Ausführen oder Ergänzen der oben beschriebenen Prozesse enthalten, und er kann außerdem sichere Informationen enthalten. Somit kann Erweiterungsspeicher 674 zum Beispiel als Sicherheitsmodul für Gerät 650 bereitgestellt werden und er kann mit Anweisungen programmiert sein, die die sichere Verwendung von Gerät 650 erlauben. Zusätzlich dazu können über die SIMM-Karten sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Karte auf eine Weise, die nicht gehackt werden kann.
-
Der Speicher kann beispielsweise Flash-Speicher und/oder NVRAM-Speicher beinhalten, wie nachstehend erörtert. In einer Implementierung ist ein Computerprogrammprodukt konkret in einem Informationsträger ausgeführt. Das Computerprogrammprodukt enthält Anweisungen, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 664, die Speichererweiterung 674, Speicher auf Prozessor 652 oder ein weitergeleitetes Signal, das zum Beispiel über den Sendeempfänger 668 oder die externe Schnittstelle 662 empfangen werden kann.
-
Das Gerät 650 kann drahtlos über die Verbindungsschnittstelle 666 kommunizieren, welche digitale Signalverarbeitungsschaltkreise beinhalten kann, falls erforderlich. Die Verbindungsschnittstelle 666 kann Verbindungen mit verschiedenen Kommunikationstypen oder -protokollen aufbauen, darunter u. a. GSM-Sprachanrufe, SMS, EMS, oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS. Eine solche Kommunikation kann zum Beispiel über Funkfrequenzempfänger 668 erfolgen. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie etwa unter Verwendung von Bluetooth, WiFi oder eines anderen solchen Sender-Empfängers (nicht gezeigt). Außerdem kann GPS(Global Positioning System)-Empfängermodul 670 zusätzliche navigations- und standortbezogene drahtlose Daten für Gerät 650 bereitstellen, die ggf. von Anwendungen verwendet werden können, die auf Gerät 650 ausgeführt werden.
-
Das Gerät 650 kann auch akustisch mithilfe des Audio-Codecs 660 kommunizieren, der gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann. Das Audio-Codec 660 kann zudem akustische Töne für einen Benutzer erzeugen, z. B. durch einen Lautsprecher, wie beispielsweise in einem Handgerät von Gerät 650. Diese Töne können Töne von Sprachtelefonanrufen beinhalten, können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.) beinhalten und können auch Töne, die von Anwendungen, welche auf Gerät 650 operieren, beinhalten.
-
Das Computergerät 650 kann in einer Reihe verschiedener Formen implementiert werden, wie in der Figur gezeigt. Zum Beispiel, kann es als Mobiltelefon 680 implementiert werden. Es kann außerdem als Teil eines Smartphones 682, Personal Digital Assistant oder eines anderen ähnlichen mobilen Geräts implementiert sein.
-
Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltkreisen, integrierten Schaltkreisen, speziell konzipierten ASICs (anwendungsspezifischen integrierten Schaltkreisen), Computerhardware, Firmware, Software und/oder Kombinationen derselben realisiert werden. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, der ein spezieller Prozessor oder ein Prozessor für allgemeine Zwecke sein kann, und der zum Empfangen von Daten und Anweisungen von und zum Übertragen von Daten und Anweisungen an ein Speichersystem, mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung gekoppelt ist.
-
Diese Computerprogramme (auch bekannt als Programme, Software, Softwareanwendungen oder Code) beinhalten Maschinenanweisungen für einen programmierbaren Prozessor und können in einer höheren prozeduralen und/oder objektorientierten Programmiersprache und/oder in Assembler-/Maschinensprache implementiert werden. Wie hier verwendet, bezeichnen die Begriffe „maschinenlesbares Medium“, „computerlesbares Medium“ ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenanweisungen als ein maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal“ bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen.
-
Um Interaktion mit einem Benutzer zu ermöglichen können die hier beschriebenen Systeme und Techniken auf einem Computer mit einem Anzeigegerät (z. B. einem CRT-(Kathodenstrahlröhre) oder einem LCD-(Flüssigkristallanzeige)Monitor) implementiert werden, um Informationen für den Benutzer anzuzeigen, und mit einer Tastatur und einem Zeigegerät (z. B. Maus oder Trackball), mit denen der Benutzer Eingaben in den Computer vornehmen kann. Andere Arten von Geräten können auch verwendet werden, um eine Interaktion mit einem Benutzer bereitzustellen; zum Beispiel kann eine dem Benutzer bereitgestellte Rückmeldung irgendeine Form von Sinnesrückmeldung sein (z. B. visuelle Rückmeldung, auditive Rückmeldung oder Tastrückmeldung); und eine Eingabe vom Benutzer kann in einer beliebigen Form empfangen werden, einschließlich akustischer, Sprach- oder Tasteingaben.
-
Die hier beschriebenen Systeme und Techniken können in einem Computersystem implementiert werden, das eine Back-End-Komponente beinhaltet (z. B. als Datenserver), oder das eine Middleware-Komponente beinhaltet (z. B. einem Anwendungsserver), oder das eine Front-End-Komponente beinhaltet (z. B. ein Client-Computer mit einer grafischen Benutzeroberfläche oder einem Webbrowser, über welche ein Benutzer mit einer Implementierung der hier beschriebenen Systeme und Techniken interagieren kann) oder jeder Kombination aus derartigen Back-End-, Middleware- und Front-End-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium von digitaler Datenkommunikation (z. B. ein Kommunikationsnetzwerk) miteinander verbunden sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN“), ein Fernnetz („WAN“) und das Internet.
-
Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.
-
Eine Anzahl von Ausführungsformen wurde beschrieben. Allerdings wird dabei vorausgesetzt, dass unterschiedliche Modifikationen gemacht werden können, ohne von der Reichweite und dem Umfang der Erfindung abzuweichen. Zum Beispiel wurden große Teile dieses Dokuments mit Bezug auf Textverarbeitungsdokumente beschrieben, aber auch andere Formen von Dokumenten könnten angesprochen werden.
-
Zusätzlich erfordern die in den Figuren dargestellten logischen Abläufe nicht die bestimmte dargestellte Reihenfolge oder eine sequenzielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. Darüber hinaus können andere Schritte bereitgestellt oder Schritte aus den beschriebenen Abläufen eliminiert werden und andere Komponenten können zu den beschriebenen Systemen hinzugefügt werden oder aus diesen entfernt werden. Dementsprechend liegen Ausführungsformen innerhalb des Umfangs der nachfolgenden Ansprüche.