DE202015009293U1 - Effizientes Kopieren und Einfügen (Copy & Paste) in eine kollaborative Kalkulationstabelle - Google Patents

Effizientes Kopieren und Einfügen (Copy & Paste) in eine kollaborative Kalkulationstabelle Download PDF

Info

Publication number
DE202015009293U1
DE202015009293U1 DE202015009293.4U DE202015009293U DE202015009293U1 DE 202015009293 U1 DE202015009293 U1 DE 202015009293U1 DE 202015009293 U DE202015009293 U DE 202015009293U DE 202015009293 U1 DE202015009293 U1 DE 202015009293U1
Authority
DE
Germany
Prior art keywords
input
change
server
spreadsheet
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202015009293.4U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202015009293U1 publication Critical patent/DE202015009293U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

System, das einen Prozessor umfasst, der für Folgendes konfiguriert ist: das Anzeigen, mithilfe eines Prozessors und basierend auf einem ersten Modell, das im System gespeichert ist, einer kollaborativen Kalkulationstabelle, die auf einem Server gehostet wird; das Erhalten, am Prozessor und von einem Benutzer, einer ersten Eingabe, die einen Quellbereich der Kalkulationstabelle, einen Zielbereich der Kalkulationstabelle und eine Anweisung zum Kopieren von Inhalt vom Quellbereich zum Zielbereich beinhaltet; das Erhalten, am Prozessor und vom Server, einer zweiten Eingabe zum Ändern eines Teils der Kalkulationstabelle, worin die zweite Eingabe eine Anweisung beinhaltet, die Kalkulationstabelle auf eine Weise zu verändern, die mindestens einen der Quellbereiche und den Zielbereich betrifft; das Umwandeln am Prozessor, wobei die erste Eingabe auf der zweiten Eingabe basiert, um eine umgewandelte erste Eingabe zu erhalten; das Ändern mithilfe des Prozessors des Modells auf der Grundlage der zweiten Eingabe, um ein zweites Modell zu erhalten; das weitere Ändern mithilfe des Prozessors des zweiten Modells auf der Grundlage der umgewandelten ersten Eingabe, um ein drittes Modell zu erhalten; und das Anzeigen mithilfe des Prozessors der kollaborativen Kalkulationstabelle auf der Grundlage des dritten Modells.

Description

  • Gebiet der Erfindung
  • Im Allgemeinen bezieht sich die vorliegende Offenbarung auf effiziente Kopieren-und-Einfügen-Vorgänge in eine kollaborative Kalkulationstabelle.
  • Hintergrund
  • Kalkulationstabellen sind nützlich für die Bearbeitung strukturierter Datenfelder. Insbesondere können Kalkulationstabellen schnell viele sich wiederholende Berechnungen an derartigen Datenfeldern vornehmen. Kollaborative Kalkulationstabellen ermöglichen es mehreren Benutzern, ein Dokument gleichzeitig auf verschiedenen Geräten, die über ein Netzwerk miteinander kommunizieren, zu bearbeiten. In einer kollaborativen Kalkulationstabelle können mehrere Benutzer denselben Teil der Kalkulationstabelle gleichzeitig bearbeiten. Diese Situation kann dazu führen, dass eine Bearbeitung durch einen Benutzer in Konflikt mit einer Bearbeitung eines anderen Benutzers gerät oder sich damit überschneidet. Eine Art, dieses Problem zu lösen, ist, dass jedes Gerät die Daten aus jeder Bearbeitung über das Netzwerk an die anderen Geräte und Server sendet. Dies kann jedoch zur Übertragung großer Datenvolumen über das Netzwerk führen, insbesondere bei Kopieren-und-Einfügen-Vorgängen.
  • Kurzdarstellung
  • Dementsprechend werden in der vorliegenden Offenbarung Systeme beschrieben, mit denen sich überschneidende Änderungen in einer kollaborativen Kalkulationstabelle in Einklang gebracht werden können. In bestimmten Aspekten beziehen sich die hier beschriebenen Systeme auf die Bearbeitung einer kollaborativen Kalkulationstabelle, die auf einem Server gehostet wird. Die kollaborative Kalkulationstabelle wird mithilfe eines Prozessors und auf einem Benutzergerät angezeigt. Die kollaborative Kalkulationstabelle kann auf der Grundlage eines ersten auf dem Benutzergerät gespeicherten Modells angezeigt werden. Eine erste Eingabe kann vom Prozessor und ausgehend von einem Benutzer empfangen werden. Die erste Eingabe kann einen Quellbereich der Kalkulationstabelle, einen Zielbereich der Kalkulationstabelle und eine Anweisung zum Kopieren von Inhalt vom Quellbereich zum Zielbereich beinhalten. Eine zweite Eingabe kann vom Prozessor und ausgehend vom Server empfangen werden. Die zweite Eingabe kann eine Eingabe zur Änderung eines Teils der Kalkulationstabelle umfassen. Die zweite Eingabe kann eine Anweisung zur Änderung der Kalkulationstabelle auf eine Weise umfassen, die mindestens einen der Quellbereiche und den Zielbereich betrifft. Die erste Eingabe kann am Prozessor umgewandelt werden. Die erste Eingabe kann auf der Grundlage der zweiten Eingabe umgewandelt werden, um eine umgewandelte erste Eingabe zu erhalten. Das Modell kann mithilfe des Prozessors verändert werden. Das erste Modell kann auf der Grundlage der zweiten Eingabe geändert werden, um ein zweites Modell zu erhalten. Das zweite Modell kann mithilfe des Prozessors weiter verändert werden. Das zweite Modell kann auf der Grundlage der umgewandelten ersten Eingabe geändert werden, um ein drittes Modell zu erhalten. Die kollaborative Kalkulationstabelle kann mithilfe des Prozessors und auf dem Benutzergerät angezeigt werden. Die kollaborative Kalkulationstabelle kann auf der Grundlage des dritten Modells angezeigt werden.
  • Die erste Eingabe und eine erste Revisionsnummer, die dem ersten auf dem Benutzergerät gespeicherten Modell entspricht, kann an den Server übertragen werden. Die Festlegung, ob die erste Eingabe umgewandelt werden soll, kann darauf basieren, ob eine Bestätigung des Servers erhalten wird. Die Bestätigung kann mit der ersten Eingabe in Zusammenhang stehen und eine zweite Revisionsnummer umfassen, die größer ist als die erste Revisionsnummer. Ob die Bestätigung erhalten wird kann entscheiden, ob das zweite Modell weiter geändert werden soll. Die umgewandelte erste Eingabe und eine Revisionsnummer, die dem zweiten auf dem Benutzergerät gespeicherten Modell entspricht, kann an den Server übertragen werden. Der Zielbereich kann größer sein als der Quellbereich. Die Anweisung, Inhalt zu kopieren, kann eine Anweisung zur Kachelgruppierung von Inhalt aus dem Quellbereich in den Zielbereich umfassen.
  • In einigen Aspekten kann eine erste Eingabe zur Änderung der Kalkulationstabelle vom Server ausgehend von einem ersten Benutzergerät erhalten werden. Eine zweite Eingabe kann vom Server ausgehend von einem zweiten Benutzergerät erhalten werden. Die zweite Eingabe kann einen Quellbereich der Kalkulationstabelle, einen Zielbereich der Kalkulationstabelle und eine Anweisung zum Kopieren von Inhalt vom Quellbereich zum Zielbereich beinhalten. Die erste Eingabe kann eine Anweisung zur Änderung der Kalkulationstabelle auf eine Weise umfassen, die mindestens einen der Quellbereiche und den Zielbereich betrifft. Die zweite Eingabe kann auf der Grundlage der ersten Eingabe umgewandelt werden, um eine umgewandelte zweite Eingabe zu erhalten. Die umgewandelte zweite Eingabe kann vom Server zum ersten Benutzergerät übertragen werden.
  • Die Festlegung, ob die zweite Eingabe umgewandelt werden soll, kann auf einem Vergleich einer ersten Revisionsnummer, die mit der ersten Eingabe in Zusammenhang steht, mit einer zweiten Revisionsnummer, die mit der zweiten Eingabe in Zusammenhang steht, basieren. Ein auf dem Server gespeichertes Modell der Kalkulationstabelle kann auf der Grundlage der ersten Eingabe geändert werden, um ein erstes geändertes Modell zu erhalten. Das erste geänderte Modell kann weiter auf der Grundlage der umgewandelten zweiten Eingabe geändert werden, um ein zweites geändertes Modell zu erhalten.
  • Eine Bestätigung der ersten Eingabe und eine erste Revisionsnummer kann vom Server an das erste Benutzergerät übertragen werden. Die erste Eingabe und die erste Revisionsnummer können vom Server an das zweite Benutzergerät übertragen werden. Die umgewandelte zweite Eingabe und eine zweite Revisionsnummer, die größer ist als die erste Revisionsnummer, können vom Server an das erste Benutzergerät übertragen werden. Eine Bestätigung der zweiten Eingabe und die zweite Revisionsnummer können vom Server an das zweite Benutzergerät übertragen werden.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines Cloud-Computing Service nach einer illustrativen Implementierung;
  • 2 ist ein Blockdiagramm für zwei Client-Geräte, die mit einem Server kommunizieren, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • Die 3A, 3B, 3C und 3D zeigen ein Swimlane-Diagramm mit Bearbeitungen an einem kollaborativen Dokument über zwei Client-Geräte, die mit einem Server kommunizieren, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • 4 ist ein Flussdiagramm eines von einem Client-Gerät angewendeten Verfahrens bei der Abstimmung von Benutzeränderungen mit von einem Server erhaltenen Änderungen, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • 5 ist ein Flussdiagramm eines Verfahrens, das von einem Server bei der Abstimmung von Änderungen von mehreren Client-Geräten angewendet wird, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • 6 ist ein Flussdiagramm eines Verfahrens, das von einem Server oder einem Client-Gerät bei der Umwandlung einer Änderung im Vergleich zu einer anderen angewendet wird, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • 7 ist eine Veranschaulichung einer Änderung zum Einfügen einer Zeile, die sich mit einer Kopieren-und-Einfügen-Änderung überschneidet, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • 8 ist eine Veranschaulichung einer Änderung zum Löschen einer Zeile, die sich mit einer Kopieren-und-Einfügen-Änderung überschneidet, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • 9 ist eine Veranschaulichung einer Zelleinstellungsänderung, die sich mit einem Quellbereich einer Kopieren-und-Einfügen-Änderung überschneidet, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • 10 ist eine Veranschaulichung einer Zelleinstellungsänderung, die sich mit einem Zielbereich einer Kopieren-und-Einfügen-Änderung überschneidet, in Übereinstimmung mit einer veranschaulichenden Ausführungsform;
  • 11 ist eine Veranschaulichung eines gekachelten Kopieren-und-Einfügen-Vorgangs, in Übereinstimmung mit einer veranschaulichenden Ausführungsform; und
  • 12 ist ein Blockdiagramm eines Computergeräts zur Ausführung eines beliebigen der vorgenannten Prozesse, in Übereinstimmung mit einer veranschaulichenden Ausführungsform.
  • Ausführliche Beschreibung
  • Um das allgemeine Verständnis der Offenbarung zu erleichtern, werden nun einige veranschaulichende Ausführungsformen beschrieben, darunter ein System und Verfahren für die effiziente Ausführung von Kopieren-und-Einfügen-Vorgängen in einer kollaborativen Kalkulationstabelle. Allerdings wird ein regulär geschulter Benutzer sehen, dass die hier beschriebenen Systeme und Methoden entsprechend abgeändert und angepasst werden können, um der jeweiligen Anwendung zu genügen, und ebenfalls, dass die hier beschriebenen Systeme und Methoden auch in anderen geeigneten Anwendungen eingesetzt werden können und dass diese Zusätze und Änderungen nicht aus deren Ausmaß abweichen. Im allgemeinen können die hier beschriebenen computerisierten Systeme eine oder mehrere Komponenten umfassen, die einen Prozessor oder Geräte, wie einen Computer, einen Mikroprozessor, ein Logikgerät oder ein anderes Gerät oder einen Prozessor beinhalten, der mit Hardware, Firmware und Software bestückt ist, um eine oder mehrere der hier beschriebenen computerisierten Verfahren durchzuführen.
  • Wie hier verwendet ist eine Kalkulationstabelle ein elektronisches Dokument, bei dem Daten in Zellen enthalten sind. Die Zellen sind in einem Datenfeld angeordnet, typischerweise in einem rechteckigen Datenfeld. Jede Zelle kann von einem oder mehr Indizes identifiziert werden. In einem rechteckigen Datenfeld können diese Indizes Zeilen- und Spalten-Indizes sein. Häufig werden in einer Benutzeroberfläche mit Kalkulationstabelle die Zeilen-Indizes mit arabischen Ziffern gekennzeichnet, und die Spalten-Indizes werden mit Buchstaben des englischen Alphabets gekennzeichnet. Während dies eine verbreitete Implementierung ist, sind auch andere Implementierungen wie z. B. die Verwendung von Ziffer- oder Buchstabenpaaren möglich. Andere Zahlensysteme wie das römische System und andere Alphabete wie das griechische Alphabet können verwendet werden. Software, die die Kalkulationstabelle implementiert, kann die Indizes in einem anderen Format speichern als das, was auf der Benutzeroberfläche angezeigt wird. Während z. B. eine Zelle die Indizes „B4“ auf der Benutzeroberfläche haben kann, kann die Software die Indizes der Zelle intern als Zeilen-Spalten-Paar (4,2) speichern, was die Anordnung in der vierten Zeile und zweiten Spalte bedeutet.
  • Auf der Benutzeroberfläche können die in jeder einzelnen Zelle enthalten Daten das Format einer Zahl, einer Textfolge, einer Formel oder einer Kombination dieser aufweisen. Die Software kann sämtliche Daten in Form einer Textfolge, einer Ganzzahl, einer Fließkommazahl oder einer Kombination dieser speichern. Enthält Zelle B4 der Kalkulationstabelle die Textfolge „Hallo Welt“ (wobei die Textfolge keine Anführungszeichen hat), kann der Buchstabe „W“ von der Indizes-Anordnung (4,2,7) gekennzeichnet werden, was bedeutet, dass der Buchstabe das siebte Zeichen in der in der Zelle enthaltenen Textfolge in der vierten Zeile und der zweiten Spalte der Kalkulationstabelle ist.
  • Andere Darstellungsweisen und Indizes-Anordnungen sind möglich. Eine Indizes-Anordnung kann z. B. ausgehend von 0 anstatt von 1 nummeriert werden, oder die Position in der Zelle kann vor den Zeilen- und Spalten-Indizes erscheinen. In einigen Beispielen werden Ganzzahlen und Fließkommazahlen nur durch Zeilen- und Spalten-Indizes gekennzeichnet und nicht durch eine Position innerhalb einer Zelle. Unterschiedliche Datentypen können in einer einzigen Kalkulationstabelle enthalten sein, sodass eine Zelle der Kalkulationstabelle eine Textfolge enthält, eine Zelle der Kalkulationstabelle eine Ganzzahl, und eine andere Zelle der Kalkulationstabelle eine Fließkommazahl. Eine Formel kann als Textfolge gespeichert werden und entsprechend besonderer Regeln verarbeitet werden. Wird z. B. die Formel „= A2 + B2“ in Zelle B4 eingegeben, dann ist dies eine Anweisung an die Anwendung, in Zelle B4 die Summe der Inhalte aus den Zellen A2 und B2 anzugeben.
  • Zu den hiesigen Zwecken ist ein Kopieren-und-Einfügen-Vorgang in einer Kalkulationstabelle ein Vorgang durch einen Benutzer, der Daten aus einer oder mehreren Zellen in einem Quellbereich in eine oder mehrere Zellen in einem Zielbereich kopiert. Dieser Vorgang kann eine genaue Kopie sein, und die Zellen im Zielbereich können nach dem Vorgang denselben Inhalt haben wie die entsprechenden Zellen im Quellbereich. Eine kopierte und eingefügte Formel kann absolute oder relative Bezüge haben, wie genauer in Bezug auf 6 beschrieben wird. Ein Kopieren-und-Einfügen-Vorgang kann eine Kachelgruppierung umfassen, wie diese genauer in Bezug auf 11 beschrieben wird. Bei einem gekachelten Kopieren-und-Einfügen-Vorgang sind die Größe des Quellbereichs und des Zielbereichs nicht identisch.
  • Kollaborative Kalkulationstabellen können von mehreren Benutzern eines cloud-basierten Dokumentenspeichersystems bearbeitet werden. Probleme können entstehen, wenn mehrere Benutzer denselben Teil der Kalkulationstabelle bearbeiten. Wenn dies geschieht, können sich die bearbeiteten Zellen überschneiden, was zu potentiellen Unklarheiten darüber führen kann, auf welche Zellen sich die jeweilige Bearbeitung bezieht. Insbesondere kann eine Kopieren-und-Einfügen-Änderung auf einem Gerät sich mit einer anderen Änderung auf einem anderen Gerät überschneiden. Eine Zeile kann z. B. an einer Stelle eingefügt werden, die sich mit dem Zielbereich eines Kopieren-und-Einfügen-Vorgangs überschneidet. Wenn dies geschieht, können Änderungen an Zell-Indizes potentielle Unklarheiten darüber auslösen, in welche Zellen die Daten eingefügt werden sollen.
  • Operationale Umwandlungen (operational transforms), in Kombination mit einer Kollaborationslogik implementiert, können diese potentielle Unklarheit beseitigen. Auf diese Weise kann jedes Gerät die Kopieren-und-Einfügen-Änderung durch die sich überschneidende Änderung umwandeln, sodass die Kopieren-und-Einfügen-Änderung in einem angepassten Zellbereich übernommen wird. Die Implementierung dieser Operational Transforms kann einen hohen Datenverkehr zwischen den Geräten hervorrufen, sofern sie nicht effizient verwaltet wird. Z. B. kann jedes Gerät beim Senden eines Paste-Befehls sämtliche einzufügenden Daten an andere Geräte im Netzwerk senden. Auch wenn dies einfacher zu implementieren ist, kann dies bei einem großen Zielbereich zu einem schwer zu verarbeitenden Datenvolumen führen. In einigen Implementierungen kann dieser Datenverkehr jedoch wesentlich minimiert werden, indem nur die Kopieren-und-Einfügen-Anweisungen übertragen werden, die Indizes von Zellen in den Quell- und Zielbereichen enthalten können. Jedes Gerät und der Server können dann Operational Transforms an den Kopieren-und-Einfügen-Anweisungen in Übereinstimmung mit der Kollaborationslogik vornehmen.
  • Die Ausführung von Kopieren-und-Einfügen-Vorgängen auf diese Weise ist nützlich, da ein reduziertes Datenvolumen über ein Netzwerk im Vergleich zu weniger effizienten Kopieren-und-Einfügen-Vorgängen übertragen wird. Ein hoher Datentransfer kann eine kollaborative Kalkulationstabelle effektiv unbrauchbar machen, indem die Anwendungen und Netzwerkverbindungen eines Gerätes verlangsamt werden. Werden Operational Transforms bei Kopieren-und-Einfügen-Vorgängen effizient durchgeführt, können die Vorteile komplexer Kalkulationstabellen ausgeschöpft werden, während gleichzeitig auch die Vorteile kollaborativer Dokumente ausgeschöpft werden.
  • 1 zeigt ein Client-Server-System 100, das einen Cloud-Computing-Service 102 und mehrere Client-Geräte 104a104d (allgemein Client-Gerät 104) umfasst. Der Cloud-Computing-Service 102 liefert Cloud-Computing-Services für eine Reihe an Client-Geräten 104. Insbesondere kann der Cloud-Computing-Service 102 einen oder mehrere Server umfassen, auf denen verschiedene Dateien gespeichert sind, auf die von den Client-Geräten 104a104d aus zugegriffen werden kann, wie z. B. eine kollaborative Kalkulationstabelle 106. Benutzer der Client-Geräte 104 können im Cloud-Computing-Service 102 gespeicherte Dateien erstellen, bearbeiten, kopieren, übertragen und löschen. Die Client-Geräte 104 können z. B. jeweils einen Webbrowser verwenden, um gleichzeitig auf Kalkulationstabelle 106 im Cloud-Computing-Service 102 zuzugreifen. Der Cloud-Computing-Service 102 stellt jedem Client-Gerät 104 eine lokale Kopie der Kalkulationstabelle 106 zur Verfügung, die die Benutzer der Client-Geräte 104 dann ansehen und bearbeiten können. Der Cloud-Computing-Service 102 kann die lokalen Kopien der Kalkulationstabelle 106 miteinander und mit einer Kopie der Kalkulationstabelle 106, die auf einem Server im Cloud-Computing-Service 102 gespeichert ist, synchronisieren. In einem Beispiel werden Bearbeitungen, die hier als Änderungen bezeichnet werden können, durch ein Client-Gerät 104a automatisch an den Cloud-Computing-Service 102 gesendet und an die anderen Client-Geräte 104b, 104c und 104d übertragen. Auf diese Weise können Änderungen, die von einem Mitarbeiter vorgenommen werden, sofort von anderen Mitarbeitern gesehen werden.
  • Wie hier verwendet umfasst eine Datei eine Reihe digital verschlüsselter Bits, die auf einem Speichermedium gespeichert werden. Eine Cloud-Datei beinhaltet eine Datei, die auf einem Server gespeichert und über ein Netzwerk zugänglich ist. Eine lokale Datei beinhaltet eine Datei, die auf dem lokalen Gerät eines Benutzers gespeichert ist. Ein Clientgerät beinhaltet ein lokales Gerät, das mit einem Server in einer Client-Server-Beziehung kommuniziert. Wie hierin verwendet, ist eine Client-Vorrichtung gleichbedeutend mit einer Benutzervorrichtung und einer lokalen Vorrichtung, sofern nichts anderes durch den Kontext angezeigt wird. Wie hier verwendet, kann ein Dokument mehreren Dateien zugewiesen sein. Beispielsweise kann eine Wolkendatei eine Kopie eines auf einem Server gespeicherten Dokuments sein, und eine lokale Datei kann eine Kopie desselben Dokuments sein, das auf einem lokalen Gerät gespeichert ist. Im Allgemeinen können mehrere Kopien desselben Dokuments identisch sein, aber sie können sich unterscheiden, wenn Änderungen, die von einem Mitarbeiter vorgenommen wurden, noch nicht an andere Mitarbeiter übertragen wurden. Diese Situation kann auftreten, wenn die Netzwerkverbindung langsam oder intermittierend ist. Mehrere Kopien desselben Dokuments können sich auch geringfügig unterscheiden, wenn die Kopien auf unterschiedlichen Gerätetypen wie Geräten mit unterschiedlichen Betriebssystemen gespeichert sind. In diesem Fall können unterschiedliche Kopien leicht unterschiedliche Metadaten aufweisen oder anders codiert sein. Zum Beispiel kann eine Kopie in einem big-endian Format kodiert werden, und eine andere Kopie kann in einem little-endian Format kodiert werden. Diese Formatunterschiede können über mehrere Dateien bestehen, die Kopien desselben Dokuments sind, solange die Substanz der Information, die dem Benutzer angezeigt wird, über die Kopien gleich ist. Ein lokales Gerät kann den Inhalt einer Datei (gespeichert in einem nichtflüchtigen Speicher) lesen und ein Modell speichern, das die Datei im Arbeitsspeicher darstellt. Der Arbeitsspeicher kann flüchtig sein (z. B. RAM oder ein Äquivalent).
  • Die Client-Geräte 104 können eine beliebige Kombination an Desktop-Computern, Laptop-Computern, Tablets, Smartphones, mobilen elektronischen Geräten und anderen Geräten, die sich über ein Netzwerk mit dem Cloud-Computing-Service 102 verbinden können, umfassen. Nur vier Client-Geräte 104 werden in System 100 gezeigt, es sollte jedoch klar sein, dass eine beliebige Anzahl an Client-Geräten 104 jeder Art dafür konfiguriert werden können, mit dem Cloud-Computing-Service 102 zu kommunizieren. Der Cloud-Computing-Service 102 und die Client-Geräte 104 des Systems 100 können über ein Remote-Netzwerk wie z. B. das Internet miteinander verbunden werden. Die Netzwerkverbindung kann durch ein lokales Netzwerk, ein Weitverkehrsnetz, ein Ethernet, ein faseroptisches Netzwerk, ein drahtloses Netzwerk, ein zellulares Netzwerk, ein interaktives Fernsehnetz, ein Telefonnetz, ein drahtloses Datenübertragungssystem, ein Zwei-Wege-Kabelsystem, Ein Computernetzwerk, ein interaktives Kiosknetzwerk, eine direkte Verbindung, ein Satellitennetzwerk und irgendeine andere drahtgebundene oder drahtgebundene Verbindung.
  • 2 zeigt genauer ein Client-Server-System 200, das verwendet werden kann, um effiziente Kopieren-und-Einfügen-Vorgänge in einer kollaborativen Kalkulationstabelle zu implementieren. Das System 200 umfasst einen Server 202 und zwei Client-Geräte 204a und 204b, die über ein Netzwerk 208 miteinander verbunden sind. Wie in 2 sind die Client-Geräte 204a und 204b identisch und haben dieselben Komponenten. Die in Bezug auf Client-Gerät 204a beschriebenen Elemente gelten auch für Client-Gerät 204b. Wie abgebildet umfasst das System 200 einen Server und zwei Client-Geräte, aber im Allgemeinen kann das System 200 mehr als einen Server und eine beliebige Anzahl an Client-Geräten beinhalten. Das Client-Gerät 204a umfasst einen Prozessor 212a, eine Datenbank 222a, in der eine Datei 224a gespeichert ist, eine Netzwerkschnittstelle 226a, ein Display 228a und eine Anwendung 214a.
  • Die Anwendung 214a ist dafür konfiguriert, Dokumente über ein Model-View-Controller-Paradigma anzuzeigen, zu rendern und zu bearbeiten. Die Anwendung 214a beinhaltet eine Modellkomponente 216a, eine Steuerungskomponente 218a und eine Präsentationskomponente 220a. Die Modellkomponente 216a ist eine Darstellung des Dokuments und ist üblicherweise hierarchischer Natur. Die Präsentationskomponente 220a ist dafür konfiguriert, die Modellkomponente 216a zu interpretieren und zur Anzeige zu rendern. Die Steuerungskomponente 218a ist dafür konfiguriert, Eingaben von einem Benutzer oder von einer anderen Quelle wie z. B. einer Netzwerkquelle entgegenzunehmen und das Modell zu aktualisieren. Wird die Modellkomponente 216a aktualisiert, kann sie die Präsentationskomponente 220a und die Steuerungskomponente 218a benachrichtigen, dass ein Update stattgefunden hat. In einigen Beispielen ist die Modellkomponente 216a passiv und bietet keine derartigen Updates. In diesen Beispielen fragen die Präsentationskomponente 220a und die Steuerungskomponente 218 die Modellkomponente 216a nach Updates ab. Die Modellkomponente 216a kann ein hierarchisches Modell wie z. B. ein Dokumentenmodell (DOM) sein. In einem DOM sind Daten in Knoten auf hierarchische Weise angelegt, sodass jeder Knoten einen Vaterknoten und/oder einen oder mehrere Child-Knoten aufweist. Ein Knoten kann für ein Dokument, einen Absatz, einen Satz, ein Wort oder einen Buchstaben stehen, und ein Knoten kann auch die Formatierung für Teile des Dokuments beinhalten. Handelt es sich bei dem Dokument um eine Kalkulationstabelle, kann ein Knoten auch Zellen der Tabelle beinhalten oder Textfolgen, die Teile des Inhalts einer Zelle kennzeichnen.
  • Die Darstellung der Anwendung 214a in 2 ist veranschaulichend, und eine oder mehrere Komponenten der Anwendung 214a können sich in anderen Teilen des Client-Geräts 204a befinden. Z. B. können einige oder alle der Modellkomponenten 216a in der Datenbank 222a gespeichert werden, wie z. B. in der Datei 224a. Zudem kann der Code für die Anwendung 214a in der Datenbank 222a gespeichert werden und von Prozessor 212a ausgeführt werden. Im Beispiel, dargestellt in 2 zeigt die Präsentationskomponente 220a der Anwendung 214a ein Kalkulationstabellen-Dokument auf Display 228a an. Auf der Grundlage des Renderings zeigt der Prozessor die kollaborative Kalkulationstabelle auf der Grundlage des Modells 216a, das auf dem Benutzergerät 204a gespeichert ist. Wie in 2 liegt die Anwendung 214a auf dem Client-Gerät 204a. In einigen Beispielen kann die gesamte oder ein Teil der Anwendung 214a auf dem Server 202 liegen. In einigen Beispielen kann die Anwendung 214a in einer Thin-Client-Umgebung implementiert werden, in der der Großteil des Codes für die Anwendung 214a auf dem Server liegt. In einigen Beispielen kann der Code für die Anwendung 214a auf Abfrage vom Server 202 über das Netzwerk 208 an das lokale Gerät 204a geliefert werden.
  • Die Netzwerkschnittstelle 226a kann Hardware und/oder Software umfassen, die dafür konfiguriert ist, mit einem Netzwerk 208 zu kommunizieren. Der Code für die Netzwerkschnittstelle 226a kann vom Prozessor 212a ausgeführt werden, oder alternativ dazu auf Hardware, die in der Netzwerkschnittstelle 226a selbst enthalten ist, implementiert werden. Das Netzwerk 208 kann ein Netzwerk wie das Internet, das World Wide Web, ein lokales Netzwerk, ein WAN, ein Mobilfunknetz oder ein anderes ähnliches Netzwerk, wie es hier beschrieben wird, sein. Das Client-Gerät 204a kann auch ein oder mehrere Eingabegeräte umfassen, z. B. eine Maus oder ein anderes Zeigegerät und eine Tastatur. Das Client-Gerät 204b umfasst ähnliche Komponenten und Merkmale wie das Client-Gerät 204a.
  • Der Server 202 umfasst einen Prozessor 230, eine Anwendung 234 und eine Datenbank 210, die eine Datei 232 enthält. In einigen Beispielen kann der Server 202 einen Cloud-Computing-Service implementieren, wie z. B. den Service 102, der in 1. Siehe 2 abgebildet ist. Die Datenbank 220 speichert eine Datei 232, kann im Allgemeinen aber eine beliebige Anzahl an Dateien speichern. Einige oder alle dieser Dateien können Benutzern des Cloud-Computing-Services zur Verfügung gestellt werden. Der Prozessor 230 führt auf dem Server 202 gespeicherte Anwendungen aus, wie z. B. Anwendung 234. Der Code für die die Anwendung 234 kann ebenfalls in der Datenbank 210 gespeichert werden. Die Anwendung 234 kann Teil des Cloud-Computing-Services sein. Als Teil des Cloud-Computing-Services kann die Anwendung 234 eine Kollaborationslogik umfassen, die Bearbeitungen an Dokumenten koordiniert, die im Cloud-Computing-Service gespeichert sind. Bei der Implementierung der Kollaborationslogik kann die Anwendung 234 eine Liste an Änderungen, die an einem im Cloud-Computing-Service gespeicherten Dokument vorgenommen wurden, erstellten, und kann ein Master-Modell des Dokuments erstellen. Zur weiteren Implementierung der Kollaborationslogik kann die Anwendung 234 Bearbeitungen z. B. vom Benutzer des Geräts 204a entgegennehmen und diese Bearbeitungen an andere Benutzer des kollaborativen Dokumenten-Services schicken, wie z. B. an einen Benutzer von Gerät 204b. Auf diese Weise koordiniert die Anwendung 234 Bearbeitungen durch mehrere Benutzer, sodass mehrere Benutzer Renderings der Dokumentenmodelle anzeigen können, die ähnlich oder im Wesentlichen gleich sein. Im Beispiel des Darstellungsfensters in 2 zeigen die Benutzer der Geräte 204a und 204b beide dieselbe Version einer kollaborativen Kalkulationstabelle an. Vom Benutzer von Gerät 204a vorgenommene Änderungen können über das Netzwerk 208 und den Server 202 zum Gerät 204b zur Anzeige auf Display 228b gesendet werden. Dies würde dazu führen, dass das Modell 216b mit einer Änderung aktualisiert wird, die vom Benutzer von Gerät 204a vorgenommen wurde. Durch die Kommunikation mit dem Server 202 über das Netzwerk 208 sind die Geräte 204a und 204b in der Lage, eine ähnliche oder im Wesentlichen gleiche Version der kollaborativen Kalkulationstabelle anzuzeigen. In einigen Beispielen kann ein Client-Gerät eine oder mehrere Funktionen ausführen, die wie hier beschrieben von einem Server ausgeführt werden. In diesen Beispielen kann der Server keine Rolle oder eine nur nebensächliche Rolle spielen.
  • Die 3A, 3B, 3C und 3D zeigen ein Swimlane-Diagramm, aus dem hervorgeht, wie Änderungen von zwei Benutzern (d. h. Alice und Bob) über einen Server mittels Kollaborationslogik koordiniert werden. 3A3D zeigen drei Lanes 301, 303 und 305, die jeweils Ereignisse oder Gerätestatus enthalten. Die erste Lane 301 umfasst Status 302, 312, 324, 338 und 348 und die Ereignisse 308 und 334, die jeweils auf einem Gerät stattfinden, das von einem Benutzer namens Alice verwendet wird. Die zweite Lane 303 umfasst Status 304, 318, 326, 328 und 344 und Ereignis 340, die jeweils auf einem Server stattfinden. Die dritte Lane 305 umfasst Status 306, 314, 320, 336 und 352 und die Ereignisse 310 und 350, die jeweils auf einem Gerät stattfinden, das von einem Benutzer namens Bob verwendet wird. 3A3D zeigen ferner die Nachrichten 316, 322, 332 und 346 und die Bestätigungen 330 und 342, die jeweils von einem Gerät (oder Server) übertragen und von einem anderen Gerät (oder Server) empfangen werden. Das Gerät von Alice, das Gerät von Bob und der Server können dem Client-Gerät 204a, dem Client-Gerät 204b bzw. dem Server 202, die in 2 abgebildet sind, entsprechen. In Bezug auf die 311 sollen die Begriffe „Client-Gerät“, „Server“, „Alice“ und „Bob“ sich auf die entsprechenden Geräte beziehen, jedoch auch darauf laufende Anwendungen und deren Komponenten wie Prozessoren miteinbeziehen. Daher kann die hiesige Verwendung von Sprache, die z. B. ein Gerät beschreibt, das eine Aktion ausführt, eine kurze Beschreibung eines Prozessors des Geräts sein, der eine Anwendung ausführt und die Aktion vornimmt. Außer, dies wird durch Kontext anders angegeben, kann der Begriff „Gerät“ einen Server oder anderes Computersystem umfassen.
  • In den 3A3D beinhalten die Lanes 301, 303 und 305 jeweils ihre eigene senkrecht angelegte Zeitachse mit früheren Ereignissen oder Status, die über späteren Ereignissen oder Status stehen. Z. B., wie in Lane 301 gezeigt, erfolgt Status 302 vor Ereignis 308. Aus jeder Lane gehen Angaben über die entsprechende zeitliche Abfolge innerhalb der Lane hervor. Die entsprechende zeitliche Abfolge von Ereignissen oder Status in verschiedenen Lanes kann aus den 3A3D über Nachrichten oder Bestätigungen abgeleitet werden, die zwischen den beiden Lanes übertragen werden, wie z. B. eine Nachricht, die von einem Gerät an ein anderes gesendet wird. Es kann z. B. rein vom Diagramm nicht abgeleitet werden, ob das Ereignis 308 in Lane 301 vor, gleichzeitig oder nach Ereignis 310 in Lane 305 stattfindet. Die Tatsache, dass jedoch Ereignis 308 nach dem Status 302 und vor dem Status 312 stattfindet, kann rein aus dem Diagramm geschlossen werden, da das Ereignis 308 und die Status 302 und 312 Teil von Lane 301 sind. Dasselbe gilt für die Lanes 303 und 305 und für Ereignisse und Status innerhalb dieser Lanes.
  • In dieser Fig. gezeigte Client-Status wie Status 302 zeigen eine Momentaufnahme des aktuellen Status des Client-Gerätes und umfassen gesendete Änderungen, ausstehende Änderungen und den Status des aktuellen Dokumentenmodells auf einem Client-Gerät. Der Client-Status 302 von Alice umfasst keine gesendeten Änderungen und keine ausstehenden Änderungen. Status 302 umfasst ein Dokumentenmodell 307, das eine Kalkulationstabelle wiedergibt, in der vier Zellen Daten enthalten. Zelle A1 enthält die Textfolge „AA“, Zelle B1 enthält die Textfolge „BB“, Zelle A2 enthält die Textfolge „CC“ und Zelle B2 enthält die Textfolge „DD“. Jeder Status zeigt auch die letzte synchronisierte Revisionsnummer des Status. Die letzte synchronisierte Revisionsnummer von Status 302 ist 0, was bedeutet, dass Revision Nummer 0 die letzte Revisionsnummer des Dokuments war, das zwischen dem Gerät von Alice und dem Server vor Status 302 synchronisiert wurde. Der Client-Status 306 von Bob ist Bobs Anfangsstatus und entspricht dem Client-Status 302 von Alice. Bobs Status 306 umfasst ein Dokumentenmodell 311. Bobs aktuelles Dokumentenmodell 311 ist dasselbe wie das aktuelle Dokumentenmodell 307 von Alice.
  • Serverstatus, wie z. B. der Serverstatus 304, zeigen eine Momentaufnahme des aktuellen Status des Servers und umfassen ein Revisionsprotokoll für das Dokument, eine Liste ausstehender Änderungen und ein aktuelles Dokumentenmodell. Status 304 umfasst ein Dokumentenmodell 309, das dem aktuellen Dokumentenmodell 307 von Alice entspricht. In einigen Beispielen beinhaltet der Server kein aktuelles Dokumentenmodell, sondern lediglich die Liste der ausstehenden Änderungen und das Revisionsprotokoll. In diesen Beispielen kann der Status des aktuellen Dokumentenmodells erhalten werden, indem sämtliche Einträge im Revisionsprotokoll in einer leeren Kalkulationstabelle übernommen werden.
  • Die 3A3D zeigen eine Situation, in der Alice und Bob sich überschneidende Bearbeitungen in einer kollaborativen Kalkulationstabelle, die auf dem Server gehostet wird, vornehmen. In den 3A3D führt Alice einen Kopieren-und-Einfügen-Vorgang durch, bevor ihre Änderung jedoch mit dem Server synchronisiert wird, fügt Bob eine Zeile ein, die sich mit dem Kopieren-und-Einfügen-Bereich von Alices Änderung überschneidet. Diese sich überschneidenden Änderungen werden mittels Operational Transforms und kollaborativer Logik ein Einklang gebracht.
  • Ausgehend von 3A beginnen Alice, der Server und Bob alle mit demselben Modell des kollaborativen Dokuments, wie in Status 302, 304 und 306 jeweils gezeigt wird. Zudem beginnen Alice, der Server und Bob alle mit der Revisionsnummer 0. Bei Ereignis 308 kopiert Alice den Inhalt der Zellen im Bereich B1:B2 nach C1:C2. Infolge von Ereignis 308 befindet sich das Gerät von Alice im Status 312, der eine ausstehende Änderung 313a und ein Dokumentenmodell 313b umfasst. Die ausstehende Änderung 313a entspricht der Änderung, die in Ereignis 308 vorgenommen wurde. Da die in Ereignis 308 vorgenommene Änderung nicht modifiziert wurde, entsprechen die Zellbereiche der ausstehenden Änderung 313a den Zellbereichen in Ereignis 308. Das aktuelle Dokumentenmodell 313b von Alice wird aktualisiert, um das Ergebnis des Kopieren-und-Einfügen-Vorgangs von Alice wiederzugeben. Der Inhalt der Zellen C1:C2 ist nun mit dem Inhalt der Zellen B1:B2 identisch. Die letzte synchronisierte Revisionsnummer von Alice in Status 312 ist immer noch 0, da die ausstehende Änderung von Alice noch nicht mit dem Server synchronisiert wurde.
  • Bevor die Änderung am Dokument aus Alices Kopieren-und-Einfügen-Ereignis 308 mit dem Server synchronisiert wird, nimmt Bob eine Änderung wie in Ereignis 310 gezeigt vor. In Ereignis 310 tätigt Bob eine Eingabe, um eine Zeile in der kollaborativen Kalkulationstabelle zwischen den Zeilen 1 und 2 einzufügen. Infolge von Ereignis 310 befindet sich das Gerät von Bob im Status 314, der keine gesendeten Änderungen, eine ausstehende Änderung 315a und ein Dokumentenmodell 315b umfasst. Die ausstehende Änderung 315a entspricht der Änderung, die in Ereignis 310 vorgenommen wurde, ohne Modifikationen. Status 314 umfasst zudem ein Dokumentenmodell 315b, das aktualisiert wurde, um Bobs Änderung in Ereignis 310 wiederzugeben. Wie in Dokumentenmodell 315b gezeigt, wurde eine Zeile eingefügt, und Zeile 2 ist nun leer. Der Inhalt von Zeile 2 von Modell 311 ist in Zeile 3 von Modell 315b verschoben worden. Im Status 314 ist die letzte synchronisierte Revisionsnummer von Bob immer noch 0, da die ausstehende Änderung von Bob noch nicht mit dem Server synchronisiert wurde.
  • In 3B zeigt die Nachricht 316, dass das Gerät von Bob die ausstehende Änderung von Bob von Status 314 an den Server sendet. In diesem Beispiel wird Bobs Änderung aus Ereignis 310 an den Server gesendet, bevor die Änderung von Alice aus Ereignis 308 gesendet wird. Eine solche Situation kann aus einer Reihe an Faktoren hervorgehen. Z. B. kann Bob seine Änderung vorgenommen haben, bevor Alice ihre Änderung vorgenommen hat. Alternativ dazu könnten die Änderungen im Wesentlichen gleichzeitig stattgefunden haben, oder Bobs Änderung könnte sogar nach Alices Änderung stattgefunden haben, aber die Netzwerkverbindung von Alice könnte unterbrochen oder sehr langsam gewesen sein. Jede dieser Situationen könnte dazu führen, dass der Server die Änderung von Alice später erhält als die Änderung von Bob. Nun ergibt sich eine Überschneidung zwischen Alices Änderung in Ereignis 308 und Bobs Änderung in Ereignis 310, da Bobs Einfügung einer Zeile unter Zeile 1 den Bereich von Alices Kopieren-und-Einfügen-Vorgang aufteilt. Nachricht 316 enthält den Inhalt von Bobs Änderung (d. h. den Befehl, eine Zeile unter Zeile 1 einzufügen) und eine Revisionsnummer. In einigen Beispielen könnte jeder Client jeweils nur eine Änderung gleichzeitig an den Server senden und auf den Erhalt einer Bestätigung warten, bevor eine weitere Änderung gesendet wird. Eine solche Bestätigung besagt, dass die gesendete Änderung im Server übernommen wurde. Die in Nachricht 316 gesendete Revisionsnummer lautet 0, was bedeutet, dass die letzte synchronisierte Revisionsnummer von Bob 0 war, und damit, dass die gesendete Änderung in Nachricht 316 der Kalkulationstabelle im Status von Revisionsnummer 0 entspricht. In einigen Implementierungen kann diese Revisionsnummer jedoch auch der Revisionsnummer entsprechen, von der das Gerät von Bob erwartet, dass diese aus der Übernahme der Änderung hervorgehen sollte. In diesen Implementierungen könnte dies festgelegt werden, indem die letzte synchronisierte Revisionsnummer von Bobs Gerät um 1 erhöht wird. Nach Senden der Änderung in Nachricht 316 befindet sich Bobs Gerät im Status 320, der eine gesendete Änderung 321a und ein Dokumentenmodell 321b umfasst. Die gesendete Änderung 321a entspricht der ausstehenden Änderung 315a von Status 314. Das aktuelle Dokument 321b von Bob ist im Vergleich zum Status 314 unverändert geblieben. Zudem ist auch die letzte synchronisierte Revisionsnummer von Status 320 im Vergleich zu Status 314 unverändert geblieben.
  • Der Serverstatus 318 gibt den Status des Servers nach Erhalt der Nachricht 316 von Bob wieder. Der Status 318 enthält keine Eintragungen im Revisionsprotokoll, eine ausstehende Änderung 319a und ein Dokumentenmodell 319b. Im Status 318 entspricht die ausstehende Änderung 319a Bobs Änderung in Nachricht 316. Änderung 319a beinhaltet Anweisungen (d. h. eine Zeile unter Zeile 1 einfügen), eine Revisionsnummer (d. h. 0) in Zusammenhang mit der Änderung sowie eine Kennung des Clients (Bob), der die Änderung gesendet hat. Da die Änderung 319a noch nicht ins Revisionsprotokoll aufgenommen wurde, ist das aktuelle Dokumentenmodell 319b im Vergleich zum Modell 309 nicht geändert worden.
  • In Nachricht 322 sendet das Gerät von Alice ihre Kopieren-und-Einfügen-Änderung aus Ereignis 308 an den Server. Die Nachricht 322 beinhaltet Änderungsanweisungen (d. h. Zellen B1:B2 in Zellen C1:C2 kopieren) und eine Revisionsnummer (d. h. 0) in Zusammenhang mit der Änderung. Nach Senden der Änderung in Nachricht 322 befindet sich Alices Gerät im Status 324, der eine gesendete Änderung 325a und ein Dokumentenmodell 325b umfasst. Im Status 324 wurde die ausstehende Änderung 313a aus Alices Status 312 in den Bereich für gesendete Änderungen verschoben und erscheint als Änderung 325a. Das aktuelle Dokumentenmodell 325b von Alice ist im Vergleich zum Modell 313b aus Status 312 unverändert geblieben. Die letzte synchronisierte Revisionsnummer (d. h. 0) von Status 324 ist im Vergleich zu Status 312 ebenfalls unverändert geblieben.
  • Nach Erhalt der Änderung von Alice in Nachricht 322 befindet sich der Server nun im Status 326. Der Status 326 enthält keine Eintragungen im Revisionsprotokoll, zwei ausstehende Änderungen 327a und 327b und ein Dokumentenmodell 327c. Da die ausstehende Änderung 327a erhalten wurde, bevor die ausstehende Änderung 327b erhalten wurde, erscheint die ausstehende Änderung 327a als erste in der Liste. Die ausstehende Änderung 327a ist im Vergleich zur ausstehenden Änderung 319a aus Status 318 unverändert geblieben. Da die ausstehende Änderung 327b als zweite erhalten wurde, erscheint sie als zweite in der Liste. Die ausstehende Änderung 327b gibt die in Nachricht 322 von Alice erhaltene Änderung wieder und umfasst die Kopieren-und-Einfügen-Anweisungen von Alice, die im Vergleich zu Nachricht 322 unverändert geblieben sind. Änderung 327b beinhaltet zudem eine Revisionsnummer (d. h. 0) und den Client, von dem die Änderung ausgegangen ist (d. h. Alice). Status 326 zeigt zudem das aktuelle Dokumentenmodell 327c. Da keine ausstehenden Änderungen im Revisionsprotokoll übernommen wurden, entspricht das Modell 327c dem Modell 319b aus Status 318.
  • In 3C gibt der Status 328 den Status des Servers nach Übernahme der ältesten ausstehenden Änderung (d. h. der ausstehenden Änderung 327a aus Status 326) wieder. Der Status 328 enthält einen Revisionseintrag 329a, eine ausstehende Änderung 329b und ein Dokumentenmodell 329c. Die Zeileneinfügung von Bob wurde vom Server übernommen und wird im ersten Eintrag 329a des Revisionsprotokolls angegeben. Eintrag 329a beinhaltet Bobs eingefügte Zeile unter Zeile 1, und die Revisionsnummer wurde auf 1 erhöht. Eintrag 329a umfasst des Weiteren eine Kennung des Clients, von dem die Änderung ausgegangen ist (d. h. Bob). Ferner wurde das aktuelle Dokumentenmodell 329c aktualisiert, um Eintrag 329a wiederzugeben. Im Rahmen der Aktualisierung wurde eine Zeile unter Zeile 1 eingefügt, und der ehemalige Inhalt von Zeile 2 wurde in Zeile 3 verschoben. Im aktualisierten Modell 329c ist Zeile 2 eine eingefügte Leerzeile. Die ausstehende Änderung 329b beinhaltet den Kopieren-und-Einfügen-Vorgang von Alice und entspricht der ausstehenden Änderung 327b aus Status 326.
  • Nach Übernahme von Bobs Änderung sendet der Server die Nachricht 332 an Alice und die Bestätigung 330 an Bob. Nachricht 332 beinhaltet die Anweisungen der übernommenen Änderung (d. h. eine Zeile unter Zeile 1 einfügen) und eine damit zusammenhängende Revisionsnummer (d. h. 1). Die an Bob gesendete Bestätigung 330 ist einfach eine Bestätigung, dass die letzte von Bob gesendete Änderung übernommen wurde, und trägt eine Revisionsnummer 1. In einigen Beispielen gibt es keine Unklarheiten in Bezug auf die Änderung, mit der die Bestätigung in Zusammenhang steht, da jeder Client auf den Erhalt einer Bestätigung wartet, bevor eine weitere Änderung gesendet wird.
  • Bobs Client-Status 336 zeigt den Status von Bobs Gerät nach Erhalt der Bestätigung 330 an und umfasst keine gesendeten Änderungen, keine ausstehenden Änderungen und ein Dokumentenmodell 337. Da Bob die Bestätigung 330 erhalten hat, wurde die Änderung von Bob aus dem Bereich für gesendete Änderungen aus Status 336 entfernt. In Status 336 entspricht Bobs aktuelles Dokumentenmodell 337 dem Modell 321b des vorherigen Status 320, die letzte synchronisierte Revisionsnummer wurde jedoch aktualisiert und entspricht nun der in Bestätigung 330 enthaltenen Bestätigungsnummer (d. h. 1).
  • Das Gerät von Alice führt nach Erhalt der Nachricht 332 vom Server die drei in Ereignis 334 gezeigten Schritte aus. Erstens wandelt das Gerät von Alice sämtliche ausstehenden und gesendeten Änderungen im Vergleich zur eingehenden, in Nachricht 332 erhaltenen Änderung um. Dieser Operational Transform kann mithilfe des Verfahrens 600 aus 6 durchgeführt werden. In einigen Beispielen kann das Gerät von Alice entscheiden, die gesendete Änderung 339a umzuwandeln, da eine Bestätigung dafür noch nicht erhalten wurde. In anderen Beispielen kann das Gerät von Alice entscheiden, die gesendete Änderung 339a umzuwandeln, da die letzte synchronisierte Revisionsnummer (d. h. 0) des vorherigen Status 325 niedriger ist als die Revisionsnummer der eingehenden Änderung (d. h. 1). Zweitens übernimmt das Gerät von Alice die in Nachricht 332 eingehende Änderung in Alices Dokumentenmodell. Drittens aktualisiert das Gerät von Alice seine letzte synchronisierte Revisionsnummer, damit diese der in der eingehenden Nachricht 332 enthaltenen Revisionsnummer entspricht.
  • Nachdem das Gerät von Alice die Vorgänge von Ereignis 334 durchgeführt hat, befindet es sich im Status 338, der eine umgewandelte gesendete Änderung 339a, keine ausstehenden Änderungen und ein Dokumentenmodell 339b umfasst. Die gesendete Änderung 339a wurde im Vergleich zur in Nachricht 322 enthaltenen Änderung umgewandelt und wird nun auf die Bereiche B1, B3 und C1, C3 angewendet. Das aktuelle Dokumentenmodell 339b von Alice wurde aktualisiert, um die Änderung aus Nachricht 332 zu übernehmen. In Modell 339b gibt das Dokument sowohl den ursprünglichen Kopieren-und-Einfügen-Vorgang von Alice als auch die von Bob eingefügte Zeile wieder. Zeile 2 ist leer, und der Inhalt der ehemaligen Zeile 2 wurde in Zeile 3 verschoben. In 339b entsprechen die Zellen C1 und C3 zudem den Zellen B1 und B3. Indem Operational Transforms für Ereignis 334 angewendet wurden, wurde der Zellbereich in Alices gesendeter Änderung 339a in 2 Teile gespalten. Alices umgewandelte Änderung 339a wird nicht in die Zellen in Zeile 2 des aktuellen Dokuments übernommen. Stattdessen gilt Alices umgewandelte Änderung nur für die Zellen in Zeile 1 und 3. Die Änderungen werden auf diese Weise umgewandelt, um die Absicht von Alices Änderung beizubehalten. Zum Zeitpunkt, als Alice diese Änderungen vorgenommen hat, existierte die eingefügte Leerzeile 2 von Dokument 339b nicht, und daher konnte Alice nicht die Absicht hegen, diese Zeile zu ändern. Im Status 338 von Alice wurde die letzte synchronisierte Revisionsnummer auf 1 aktualisiert, um der Revisionsnummer in Zusammenhang mit der in Nachricht 332 erhaltenen Änderung zu entsprechen.
  • In 3D, in Ereignis 340, wandelt der Server die ausstehende Änderung von Alice im Vergleich zu allen Änderungen im Revisionsprotokoll ab Revisionsnummer 0 um. Der Server kann entscheiden, die ausstehende Änderung von Alice (d. h. die Änderung 329b aus Serverstatus 328) umzuwandeln, da die Revisionsnummer der ausstehenden Änderung niedriger ist als die Revisionsnummer des letzten Revisionseintrags (d. h. die Revisionsnummer 1 aus Eintrag 329a des Serverstatus 328). In Ereignis 340 übernimmt der Server zudem die Änderung von Alice im Revisionsprotokoll. Der Server wandelt den Kopieren-und-Einfügen-Vorgang von Alice mithilfe derselben Logik um, die von Alices Client in Ereignis 334 verwendet wurde und die in Verfahren 600 aus 6 implementieren. Sowohl in Ereignis 334 als auch in Ereignis 340 wurde der Kopieren-und-Einfügen-Vorgang von Alice im Vergleich zur Zeileneinfügung von Bob umgewandelt, und die Quell- und Zielbereiche von Alices Kopieren-und-Einfügen-Vorgang wurden aufgeteilt, um Bobs eingefügte Zeile unterzubringen. Die aus Ereignis 340 hervorgehenden Änderungen sind in Serverstatus 344 wiedergegeben.
  • Der Serverstatus 344 umfasst zwei Revisionseinträge, 345a und 345b, sowie ein Dokumentenmodell 345c. In Status 344 bleibt der erste Revisionseintrag 345a im Vergleich zu Revisionseintrag 329a im Serverstatus 328 unverändert, und der Revisionseintrag 345b wurde zum Revisionsprotokoll hinzugefügt. Der Revisionseintrag 345b gibt die älteste ausstehende Änderung des vorherigen Serverstatus wieder (d. h. die ausstehende Änderung 329b des Serverstatus 328). Der Revisionseintrag 345b beinhaltet den umgewandelten Kopieren-und-Einfügen-Vorgang von Alice und seine Revisionsnummer 2. Das aktualisierte Dokumentenmodell 345c zeigt das Ergebnis des übernommenen Kopieren-und-Einfügen-Vorgangs von Alice in der vorherigen Version des Serverdokuments 329c, sodass der Inhalt der Zellen B1 und B3 in die Zellen C1 und C3 kopiert wurde. Da der Server und das Gerät von Alice dieselbe Logik verwendet haben, um den Kopieren-und-Einfügen-Vorgang von Alice im Vergleich zur Zeileneinfügung von Bob umzuwandeln, haben der Server und das Gerät von Alice nun dasselbe Dokumentenmodell. Nach Übernahme des Kopieren-und-Einfügen-Vorgangs von Alice in das Revisionsprotokoll sendet der Server eine Bestätigung 342 an Alice, die eine einfache Bestätigung ist, dass Alices letzte Änderung in das Revisionsprotokoll aufgenommen wurde und die Revisionsnummer 2 trägt. Auch hier senden in einigen Beispielen Client-Geräte keine weitere Änderung, bevor sie nicht eine Bestätigung vom Server erhalten haben, wodurch sich keine Unklarheit in Bezug auf die Änderung ergibt, mit der die Bestätigung in Zusammenhang steht.
  • Der abschließende Client-Status 348 von Alice umfasst ein Dokumentenmodell 349 und gibt den Status von Alices Gerät nach Erhalt der Bestätigung 342 wieder. Im abschließenden Status 348 hat das Gerät von Alice seine letzte gespeicherte Revisionsnummer auf 2 aktualisiert, damit sie mit der in Bestätigung 342 erhaltenen Revisionsnummer übereinstimmt, und hat die bestätigte Änderung aus der Liste der gesendeten Änderungen gelöscht.
  • Zudem sendet der Server nach Übernahme des Kopieren-und-Einfügen-Vorgangs von Alice ins Revisionsprotokoll die Nachricht 346 an Bob. Die Nachricht 346 beinhaltet die umgewandelte Änderung von Alice, genauer gesagt die umgewandelte Anweisung von Alices Kopieren-und-Einfügen-Vorgang, sowie eine Revisionsnummer in Zusammenhang mit dieser übernommenen Änderung. Nach Erhalt der Nachricht 346 führt Bobs Gerät in Ereignis 350 drei Schritte durch. Erstens ist nichts umzuwandeln, da es keine ausstehenden oder gesendeten Änderungen im Vergleich zu Bobs Änderungen gibt. Wären ausstehende oder gesendete Änderungen auf Bobs Gerät vorhanden, würden diese Änderungen durch die mit Nachricht 346 erhaltene Änderung umgewandelt. Dieser Operational Transform kann mithilfe des Verfahrens 600 aus 6 durchgeführt werden. Zweitens übernimmt Bobs Gerät die in Nachricht 346 eingehende Änderung im Dokumentenmodell. Drittens aktualisiert Bobs Gerät seine letzte synchronisierte Revisionsnummer, damit diese der mit Nachricht 346 enthaltenen Revisionsnummer entspricht.
  • Der abschließende Client-Status 352 von Bob umfasst ein Dokumentenmodell 353, keine ausstehenden Änderungen und keine gesendeten Änderungen und gibt den Status von Bobs Gerät nach Durchführung der Vorgänge aus Ereignis 350 wieder. Im abschließenden Status 352 hat Bobs Gerät sein Dokumentenmodell auf Modell 353 aktualisiert, das die Ergebnisse der Übernahme der eingehenden Änderung aus Nachricht 346 in Bobs vorherige Version von Dokument 337 aus dem vorherigen Client-Status 336 wiedergibt. Der Inhalt der Zellen B1 und B3 wurde in die Zellen C1 und C3 kopiert. Bobs letzte gespeicherte Revisionsnummer wurde auf 2 aktualisiert, um der in Nachricht 346 enthaltenen Revisionsnummer zu entsprechen.
  • Im abschließenden Status wie in 3D gezeigt wurden der Kopieren-und-Einfügen-Vorgang von Alice und die Zeileneinfügung von Bob auf alle Geräte im System, einschließlich des Servers, übertragen. Die Dokumentenmodelle 349, 345c und 353 geben alle denselben Dokumentenstatus wieder. Des Weiteren entspricht die letzte gespeicherte Revisionsnummer von Alice der Revisionsnummer der letzten Änderung im Server-Revisionsprotokoll 345b sowie Bobs letzter gespeicherter Revisionsnummer. Wichtig dabei ist, dass für diese Updates nur wenige Informationen über das System versendet werden mussten. Da die Geräte dieselbe Kollaborationslogik und Operational Transforms verwenden, um sich überschneidende Änderungen in Einklang zu bringen, kann jedes Gerät seine eigenen eingehenden Benutzeränderungen optimistisch übernehmen und notwendige Umwandlungen an diesen Benutzeränderungen und eingehenden Änderungen durchführen. Die Übernahme der Änderungen wird als „optimistisch“ bezeichnet, da das Client-Gerät optimistisch davon ausgeht, dass es mit der letzten Modellversion arbeitet. Um jedoch mögliche Komplikationen aus miteinander in Konflikt stehenden oder sich überschneidenden Änderungen, die auf einem anderen Gerät stattfinden, abzuschwächen, speichert das Client-Gerät seine letzte Änderung in einer Liste gesendeter oder ausstehender Änderungen, bis eine Bestätigung der Änderung vom Server erhalten wird. Da alle Geräte dieselbe Logik und Operational Transforms verwenden, ist es nicht notwendig, im Wesentlichen gleiche Informationen mehrmals über den Server zu versenden, z. B. indem sowohl eine ursprüngliche Änderung als auch eine umgewandelte Änderung versendet werden. Nur die ursprüngliche Änderung wird an den Server übertragen, und eine Bestätigung mit einer Revisionsnummer wird erhalten. Indem die Revisionsnummer mit einer erwarteten Revisionsnummer verglichen wird, kann jedes Gerät Umwandlungen je nach Bedarf durchführen. Die Details des von den Client-Geräten und vom Server angewendeten Verfahrens zur Durchführung von Aktualisierungen und Operational Transforms sind in Bezug auf die 46 beschrieben.
  • 4 ist ein Flussdiagramm eines Verfahrens 400, das von einem Client-Gerät bei der Umwandlung von Benutzeränderungen im Vergleich zu Serveränderungen angewendet wird. Wie hier verwendet umfasst eine „Benutzeränderung“ eine von einem lokalen Gerät empfangene Änderung von einem Benutzer, der direkt mit dem lokalen Gerät interagiert, und eine „Serveränderung“ umfasst eine Änderung, die von einem lokalen Gerät von einem Server ausgehend empfangen wird. In einem Beispiel kann eine Serveränderung anfänglich von einem anderen Benutzer an einem Remote-Benutzergerät (das vom lokalen Gerät entfernt ist) ausgehen und an einen Server übertragen werden, der die Änderung dann an das lokale Gerät überträgt. Auch wenn die Änderung von einem Benutzer an einem Remote-Gerät ausgegangen ist, wird die Änderung als Serveränderung bezeichnet, da das lokale Gerät, das das Verfahren 400 umsetzt, die Änderung vom Server erhalten hat. Das Verfahren 400 kann in Schritt 334 von 3C und in Schritt 350 von 3D durchgeführt werden.
  • In Schritt 402 zeigt das Client-Gerät einem Benutzer eine Kalkulationstabelle anhand eines auf dem Client-Gerät gespeicherten Modells an. In Schritt 404 empfängt das Gerät eine Benutzereingabe zur Änderung der Kalkulationstabelle. In Schritt 406 sendet das Gerät die Benutzereingabe an den Server. In Schritt 408 ändert das Gerät optimistisch sein Modell auf der Grundlage der empfangenen Benutzereingabe. In einigen Beispielen können die Schritte 406 und 408 in umgekehrter Reihenfolge oder im Wesentlichen zur selben Zeit stattfinden. In Schritt 410 empfängt das Client-Gerät eine Eingabe vom Server. Die empfangene Eingabe kann Anweisungen zur Änderung der Kalkulationstabelle umfassen.
  • In Entscheidungsblock 412 stellt das Client-Gerät fest, ob die in Schritt 406 gesendete Benutzereingabe vom Server bestätigt wurde. Wurde keine Bestätigung erhalten, geht das Verfahren 400 zu Schritt 414 über, wo das Client-Gerät die gesendete Benutzereingabe gegenüber der vom Server erhaltenen Eingabe umwandelt, und dafür das Verfahren 600 aus 6 verwenden kann. Überschneidet sich die Servereingabe mit der Benutzereingabe wird der Konflikt hier, in Schritt 414, durch den Operational Transform gelöst. Überschneiden sich die beiden Eingaben nicht, hat die Umwandlung in Schritt 414 im Wesentlichen keine Änderungen ergeben. In Schritt 416 ändert das Benutzergerät sein letztes synchronisiertes Modell auf der Grundlage der Servereingabe. Da keine Bestätigung der gesendeten Benutzereingabe erhalten wurde, gibt das letzte synchronisierte Modell diese Benutzereingabe nicht wieder. In Schritt 420 aktualisiert das Benutzergerät seine Revisionsnummer, damit diese mit der vom Server in Schritt 410 erhaltenen Revisionsnummer übereinstimmt. In Schritt 424 ändert das Client-Gerät sein letztes synchronisiertes Modell auf der Grundlage der umgewandelten Benutzereingabe. Während das Client-Gerät optimistisch das geänderte Modell auf der Grundlage der umgewandelten Benutzereingabe ändert und anzeigt, gibt das letzte synchronisierte Modell, da noch keine Bestätigung erhalten wurde, immer noch nicht die in Schritt 404 erhaltene Benutzereingabe wieder.
  • Alternativ dazu, falls das Client-Gerät feststellt, dass die Bestätigung für die gesendete Benutzereingabe vom Server in Entscheidungsblock 412 erhalten wurde, geht das Verfahren zu Schritt 415 über. In Schritt 415 aktualisiert das Client-Gerät, da die Bestätigung für die Benutzereingabe erhalten wurde, seine Revisionsnummer, damit diese mit der in der Bestätigung enthaltenen Revisionsnummer übereinstimmt. In Schritt 418 ändert das Client-Gerät sein Modell auf der Grundlage der vom Server erhaltenen Eingabe. In Schritt 422 aktualisiert das Client-Gerät die Revisionsnummer, damit diese mit der Revisionsnummer übereinstimmt, die in der vom Server in Schritt 410 erhaltenen Eingabe enthalten ist, und kehrt zu Schritt 402 zurück, um die Kalkulationstabelle auf der Grundlage des aktualisierten Modells für den Benutzer anzuzeigen.
  • 5 ist ein Flussdiagramm für ein Verfahren 500 zur Umwandlung von Benutzereingaben in einem Server auf der Grundlage von Eingaben, die von einem Client-Gerät erhalten werden. Das Verfahren 500 kann in Schritt 340 von 3D durchgeführt werden. In Schritt 502 erhält der Server eine Änderung an einer gehosteten Kalkulationstabelle. Die Änderung in Schritt 502 wird von einem Benutzer auf einem Client-Gerät erhalten, dass über ein Netzwerk mit dem Server kommuniziert. In Entscheidungsblock 504 legt der Server fest, ob die Änderung aus einer alten Revision stammt. Eine Änderung kann aus einer alten Revision stammen, wenn die Änderung ursprünglich an einer Revision der Kalkulationstabelle vorgenommen wurde, die älter ist als die jüngste Version der Kalkulationstabelle, die im Revisionsprotokoll auf dem Server gespeichert ist. In einigen Beispielen kann der Server dies festlegen, indem der die Revisionsnummern vergleicht. In diesen Beispielen vergleicht der Server die Revisionsnummer, die mit der erhaltenen Änderung in Zusammenhang steht, mit der Revisionsnummer, die mit der letzten Eintragung in seinem Revisionsprotokoll in Zusammenhang steht. Ist die Revisionsnummer in Zusammenhang mit der erhaltenen Änderung niedriger als die Revisionsnummer in Zusammenhang mit der Eintragung der letzten gespeicherten Änderung, kann der Server festlegen, dass die Änderung aus einer alten Revision stammt. Sind die beiden Nummern gleich, kann der Server festlegen, dass die Änderung aus einer aktuellen Revision stammt.
  • Legt der Server in Entscheidungsblock 504 fest, dass die Änderung aus einer alten Revision stammt, geht das Verfahren zu Schritt 506 über. In Schritt 506 wandelt der Server die Änderung im Vergleich zu allen Änderungen seit der Revision, die mit der Revisionsnummer der Änderung in Zusammenhang steht, um, und kann Verfahren 600 aus 6 implementieren. auf diese Weise kompensiert der Server die Effekte verschiedener Geräte mit verschiedenen Revisionsnummern.
  • Legt der Server alternativ dazu in Entscheidungsblock 504 fest, dass die Änderung nicht aus einer alten Revision stammt, geht das Verfahren direkt auf Schritt 508 über, wo der Server die Änderung im Revisionsprotokoll speichert und dem Eintrag eine neue Revisionsnummer zuweist. Wird die Änderung im Server gespeichert, wird sie aus dem Serverprotokoll für ausstehende Änderungen gelöscht und das Servermodell wird auf der Grundlage der Änderung aktualisiert. In Schritt 510 sendet der Server eine Bestätigung an den Benutzer, der die Änderung gesendet hat. In Schritt 512 sendet der Server die Änderung an andere Benutzer, die das kollaborative Dokument bearbeiten. Die in Schritt 512 gesendete Änderung kann entweder die umgewandelte Änderung sein, wann Schritt 506 erfolgt ist, oder es kann die Änderung sein, so wie sie in Schritt 502 erhalten wurde, je nach Ergebnis von Entscheidungsblock 504. Auf diese Weise wandelt der Server erhaltene Benutzereingaben je nach Reihenfolge, in der die Eingaben erhalten wurden, um. Indem die Benutzereingaben je nach der Reihenfolge, in der sie erhalten wurden, umgewandelt werden, gewährleistet der Server, dass mehrere Geräte ähnliche Modelle der kollaborativen Kalkulationstabelle aufweisen können. Da alle Geräte dieselbe Kollaborationslogik und Operational Transforms verwenden wie der Server, werden ähnliche Modelle ohne übermäßigen Datenverkehr beibehalten.
  • 6 ist ein Flussdiagramm eines Verfahrens 600 für die Umwandlung einer Kopieren-und-Einfügen-Änderung durch eine sich überschneidende Änderung. Die sich überschneidende Änderung kann entweder den Quellbereich oder den Zielbereich der Kopieren-und-Einfügen-Änderung oder beide betreffen. Die Kopieren-und-Einfügen-Änderung stammt von einem ersten Benutzer, und die sich überschneidende Änderung stammt von einem zweiten Benutzer. In einigen Beispielen stammen beide Änderungen vom selben Benutzer, jedoch von zwei verschiedenen Geräten. Diese Beispiele können auftreten, wenn ein Benutzer von verschiedenen Geräten aus gleichzeitig in einem Cloud-Computing-System angemeldet ist, z. B. von einem Laptop und einem Tablet aus. In einigen Beispielen stammen die Änderungen von verschiedenen Benutzern, jedoch vom selben Gerät. Da die Kopieren-und-Einfügen-Änderung und die sich überschneidende Änderung für sich überschneidende Bereiche gelten können, kann ein Konflikt zwischen den beiden Vorgängen vorhanden sein. Operational Transforms können in einem oder mehreren Bereichen angewendet werden, um diesen Konflikt zu lösen, sodass die Änderungen an der kollaborativen Kalkulationstabelle derart vorgenommen werden, dass sie der Absicht eines jeden Benutzers entsprechen. Operational Transform können von jedem der Client-Geräte vorgenommen werden, sowie vom Server, der die Änderungen koordiniert. Verfahren 600 kann verwendet werden, um Operational Transforms in den Ereignissen 334, 340 und 352 von 3, Schritt 414 von 4, Schritt 506 von 5 oder in einer beliebigen Kombination dieser vorzunehmen.
  • In Schritt 602 wird eine Kopieren-und-Einfügen-Änderung von einem Benutzer erhalten. Diese Änderung kann von einer Benutzereingaben-Komponente eines Geräts, das Verfahren 600 umsetzt, erhalten werden, oder von einem anderen Gerät im Netzwerk wie z. B. einem Server oder einem Benutzergerät. In Schritt 604 wird eine sich überschneidende Änderung von einem anderen Benutzer im Netzwerk erhalten. Diese Änderung kann von einer Benutzereingaben-Komponente des Geräts, das Verfahren 600 umsetzt, erhalten werden, oder von einem anderen Gerät im Netzwerk wie z. B. einem Server oder einem Benutzergerät. Wie zuvor besprochen können sich überschneidende Änderungen auftreten, wenn mehrere Benutzer denselben Teil der Kalkulationstabelle bearbeiten. Wenn dies geschieht, können sich die bearbeiteten Zellen überschneiden, was zu potentiellen Unklarheiten darüber führen kann, auf welche Zellen sich die jeweilige Bearbeitung bezieht. Insbesondere kann eine Kopieren-und-Einfügen-Änderung auf einem Gerät sich mit einer anderen Änderung auf einem anderen Gerät überschneiden. Eine Zeile kann z. B. an einer Stelle eingefügt werden, die sich mit dem Zielbereich eines Kopieren-und-Einfügen-Vorgangs überschneidet.
  • In Entscheidungsblock 606 wird die Art der sich überschneidenden Änderung festgelegt. Wird eine sich überschneidende Änderung als eine Einfügung oder Löschung von Zeilen oder Spalten festgelegt, geht das Verfahren zu Schritt 608 über, wo einer oder mehrere Bereiche, die mit den Bereichen des Kopieren-und-Einfügen-Vorgangs in Zusammenhang stehen, an der Stelle der sich überschneidenden Änderung aufgeteilt werden. Der aufgeteilte Bereich kann der Quellbereich oder der Zielbereich des Kopieren-und-Einfügen-Vorgangs sein. In einigen Beispielen werden sowohl der Quellbereich als auch der Zielbereich aufgeteilt. Jeder aufgeteilte Bereich wird in zwei Teile getrennt, damit die Indizes des betroffenen Teils bzw. der betroffenen Teile umgewandelt werden können. In Schritt 612 wird die Größe der Einfügung oder Löschung bestimmt, was dazu führen kann, dass die Anzahl der Zeilen oder Spalten, die eingefügt oder gelöscht werden sollen, festgelegt werden muss.
  • In Entscheidungsblock 618 legt das Gerät fest, ob die sich überschneidende Änderung eine Einfügung oder eine Löschung ist. Wird die sich überschneidende Änderung als Einfügung festgelegt, geht das Verfahren zu Schritt 624 über. In Schritt 624 wird die Erhöhung als positive Menge, die der Anzahl an einzufügenden Zeilen entspricht, festgelegt. Wird in Entscheidungsblock 618 die sich überschneidende Änderung als Löschung festgelegt, geht das Verfahren zu Schritt 626 über. In Schritt 626 wird die Erhöhung als negative Menge, die der Anzahl an zu löschenden Zeilen entspricht, festgelegt. In Schritt 628 wird die Kopieren-und-Einfügen-Änderung durch die in Schritt 624 oder 626 festgelegte Erhöhung umgewandelt.
  • Die Umwandlung der Kopieren-und-Einfügen-Änderung durch Erhöhung kann bedeuten, dass die Erhöhung zu den Indizes eines der Teile des aufgespaltenen Bereichs hinzuaddiert wird. Da die Erhöhung sowohl positiv als auch negativ sein kann, können die betroffenen Indizes erhöht bzw. herabgesetzt werden. Wird der Zielbereich z. B. in Schritt 608 in zwei Teile geteilt, wobei ein Teil niedrigere Indizes aufweist als die Stelle der sich überschneidenden Änderung und der andere Teil höhere Indizes als die Stelle der sich überschneidenden Änderung, kann die Erhöhung zu den Indizes des Teils hinzuaddiert werden, der höhere Indizes aufweist als die Stelle der sich überschneidenden Änderung.
  • Ist die sich überschneidende Änderung eine Einfügung, können die Indizes des Teils mit höheren Indizes als die Stelle der sich überschneidenden Änderung um die Größe der Einfügung erhöht werden. Ist die Einfügung eine Zeileneinfügung, können nur die Zeilen-Indizes von der Erhöhung betroffen sein. Ist die Einfügung eine Spalteneinfügung, können nur die Spalten-Indizes des Kopieren-und-Einfügen-Bereichs von der Erhöhung betroffen sein.
  • Die Löschung einer oder mehrerer Zeilen oder Spalten kann im Wesentlichen auf dieselbe Art und Weise umgesetzt werden wie die Einfügung einer oder mehrerer Zeilen oder Spalten, außer dass die Indizes herabgesetzt werden und nicht erhöht. Das Hinzuaddieren einer negativen Erhöhung führt dazu, dass die Indizes des Teils, die höher sind als die Stelle der sich überschneidenden Änderung, um die Größe der Löschung herabgesetzt werden.
  • Die Anpassung der Zell-Indizes im Kopieren-und-Einfügen-Bereich betrifft den Inhalt der Zellen an sich nicht, und betrifft auch nicht die Indizes einzelner Zeichen in der Zeichenfolge, die in der Zelle enthalten ist. Lediglich die Indizes, die die Position einer Zelle in der Kalkulationstabelle kennzeichnen, sind von diesem Umwandlungsvorgang betroffen.
  • Die in Schritt 628 umgewandelten Indizes können absolute oder relative Indizes sein. Absolute Indizes beziehen sich auf die absolute Position einer Zelle in der Kalkulationstabelle, während relative Indizes sich auf die relative Position einer Zelle in Bezug auf eine andere Zelle beziehen. Ein Beispiel für einen absoluten Index wäre „A1“ oder „D12“. Diese würden sich auf die Zellen in Spalte „A“, Zeile „1“ bzw. Spalte „D“, Zeile „12“ beziehen. Ein Beispiel für einen relativen Bezug wäre „R2C5“. Dies würde sich auf eine Zelle beziehen, die sich zwei Zeilen unter und fünf Spalten rechts von einer Zelle mit dem Bezug befindet. Ein weiteres Beispiel für einen relativen Bezug wäre „R–3C–2“. Dieser relative Bezug würde eine Zelle bezeichnen, die sich drei Zeilen über und zwei Spalten links von der Zelle mit dem relativen Bezug befindet. Entweder der absolute Bezug oder der relative Bezug kann durch die Erhöhung in Schritt 628 angepasst werden. In Schritt 630 wird die sich überschneidende Änderung übernommen, so wie sie in Schritt 604 erhalten wurde. In Schritt 632 wird der umgewandelte Kopieren-und-Einfügen-Vorgang übernommen. Hier wird der Kopieren-und-Einfügen-Vorgang übernommen, so wie er in Schritt 628 umgewandelt wurde. Weitere Einzelheiten zur Einfügung und Löschung von Zeilen und Spalten, die sich mit einer Kopieren-und-Einfügen-Änderung überschneiden, finden sich in Bezug auf 7 und 8.
  • Wird in Entscheidungsblock 606 festgelegt, dass die sich überschneidende Änderung ein Zelleinstellungsvorgang ist, geht das Verfahren zu Entscheidungsblock 610 über. Ein Zelleinstellungsvorgang ist im Allgemeinen ein Vorgang zur Änderung ein oder mehrere Zellen und kann die Einstellung eines Zellwerts, die Einstellung oder Bearbeitung einer Zellenformel und die Einstellung oder Bearbeitung eines Zellenformats bedeuten. Das Format einer Zelle kann eine Textformatierung umfassen, wie z. B. Fett- oder Kursivschrift, die Änderung der Zellengröße und die Änderung eines Zellenrands. Für diese Zelleinstellungsvorgänge kann die Aufteilung des Bereichs des Kopieren-und-Einfügen-Vorgangs nicht notwendig sein, wie es bei einer Einfügung oder Löschung von Zeilen oder Spalten der Fall wäre. In Entscheidungsblock 610 wird die Stelle des Zelleinstellungsvorgangs in Bezug auf den Quell- und Zielbereich des Kopieren-und-Einfügen-Vorgangs festgelegt.
  • Betrifft die Stelle des Zelleinstellungsvorgangs den Quellbereich des Kopieren-und-Einfügen-Vorgangs, geht das Verfahren zu Schritt 614 über, wo der Zelleinstellungsvorgang im angewiesenen Teil des Quellbereichs übernommen wird. In Schritt 620 wird die Kopieren-und-Einfügen-Änderung ohne Umwandlung übernommen.
  • Wird in Entscheidungsblock 610 festgelegt, dass die Stelle des Zelleinstellungsvorgangs den Zielbereich betrifft, geht das Verfahren zu Schritt 616 über, wo die Kopieren-und-Einfügen-Änderung wie erhalten übernommen wird. In Schritt 622 wird der Zelleinstellungsvorgang in dem Teil des Zielbereichs übernommen, der davon betroffen ist. Auf diese Weise „gewinnt“ der Zelleinstellungsvorgang stets und der Zelleinstellungsvorgang wird nicht durch den Kopieren-und-Einfügen-Vorgang überschrieben. Weitere Einzelheiten einer Zelleinstellungsänderung, die sich mit einer Kopieren-und-Einfügen-Änderung überschneidet, finden sich in Bezug auf 9 und 10.
  • In einigen Beispielen kann ein Zelleinstellungsvorgang sowohl den Quell- als auch den Zielbereich betreffen. In diesen Beispielen wird die Quelle jeweils entsprechend den Schritten 614 und 620 behandelt, und der Zielbereich wird entsprechend den Schritten 616 und 622 behandelt, wie in 6 dargestellt. Indem Operational Transforms gemäß Verfahren 600 angewendet werden, können der Kopieren-und-Einfügen-Vorgang und die sich überschneidende Änderung beide im Modell der kollaborativen Kalkulationstabelle übernommen werden, wobei gleichzeitig die Absicht eines jeden Benutzer wiedergegeben wird. Da alle Geräte, die mit der kollaborativen Kalkulationstabelle kommunizieren, dieses Verfahren 600 auf sich überschneidende Änderungen anwenden, wird zudem der Datenverkehr reduziert.
  • 7 zeigt, wie ein Vorgang zur Einfügung einer Zeile von einem Benutzer, der sich mit einem Kopieren-und-Einfügen-Vorgang eines anderen Benutzers überschneidet, gemäß den hier beschriebenen Systemen und Verfahren in Einklang gebracht werden kann, während trotzdem noch die Absicht beider Benutzer wiedergegeben wird. In 7 bearbeiten die Benutzer Charlie und Dave beide eine kollaborative Kalkulationstabelle, jeder auf einem anderen Gerät. Status 710 zeigt den Status der Kalkulationstabelle vor den Änderungen. Status 720 zeigt den Status der kollaborativen Kalkulationstabelle, nachdem beide Änderungen übernommen und mittels den hier beschriebenen Operational Transforms in Einklang gebracht wurden. Charlie leitet einen Kopieren-und-Einfügen-Vorgang 704 ein, während Dave einen Vorgang zur Zeileneinfügung 702 einleitet. Die Vorgänge von Charlie und Dave finden so gut wie gleichzeitig statt, sodass keiner der beiden Benutzer, während er seinen Vorgang vornimmt, sich der Änderung des anderen Benutzers bewusst ist. Dies kann passieren, wenn Charlie und Dave genau gleichzeitig arbeiten, oder es kann passieren, wenn einer oder beide eine langsame Netzwerkverbindung mit hoher Latenz haben. In jedem Fall kann ein Benutzer sich der letzten Änderungen durch den anderen Benutzer nicht bewusst sein.
  • In 704 beginnt Charlie einen Kopieren-und-Einfügen-Vorgang zum Kopieren des Inhalts von Zelle D2 in den Bereich D3:D5. Der Kopieren-und-Einfügen-Vorgang von Charlie hat daher einen Quellbereich 712 (Zelle D2) und einen Zielbereich 714 (Zellen D3:D5). In 702 fügt Dave eine Zeile 716 zwischen Zeile 3 und Zeile 4 der kollaborativen Kalkulationstabelle ein.
  • Wie in Status 720 gezeigt wird der ursprüngliche Zielbereich 714 (Zellen D3:D5) an der Stelle der sich überschneidenden Änderung in zwei Teile geteilt, zwischen Zelle D3 und Bereich D4:D5. Als nächstes wird der Teil des Bereichs, dessen Indizes höher sind als die Teilungsstelle, um eine Zeile nach unten verschoben. Der Teil wird verschoben, indem die Indizes des Teils in Übereinstimmung mit der Größe der Einfügung erhöht werden. In diesem Beispiel wurde eine Zeile eingefügt, d. h. die Zeilen-Indizes des ursprünglichen Teils D4:D5 aus Status 710 werden um eins erhöht, sodass sie in Status 720 zum Teil D5:D6 werden. Da keine Spalte in diesem Beispiel eingefügt wurde, bleiben die Spalten-Indizes (durch ein „D“ gekennzeichnet) unverändert. Der vorstehende Operational Transform wurde auf die Anweisungen für die Kopieren-und-Einfügen-Änderung angewendet, nicht auf die Kalkulationstabelle an sich. Als nächstes wurde die Kalkulationstabelle in Übereinstimmung mit der Änderung zur Zeileneinfügung und der umgewandelten Kopieren-und-Einfügen-Änderung geändert.
  • Daves Änderung zur Zeileneinfügung diente dazu, eine Zeile unter Zeile 3 einzufügen, was zu einer Leerzeile in Zeile 4 geführt hat. Der Inhalt der ehemaligen Zeilen 4 und 5 von Status 710 wurde in die Zeilen 5 und 6 von Status 720 verschoben. Die umgewandelte Kopieren-und-Einfügen-Änderung von Charlie wurde nach dieser Einfügung übernommen. Die umgewandelte Kopieren-und-Einfügen-Änderung hat den Inhalt des Quellbereichs D2 in den neuen Zielbereich D3, D5:D6 kopiert. Zelle 722 (D2) bleibt so wie in Status 710. Die Zellen 724a–c bezeichnen den umgewandelten Zielbereich des Kopieren-und-Einfügen-Vorgangs und zeigen die Ergebnisse des umgewandelten Vorgangs. Zelle 724a (D3) wurde aktualisiert, um den Kopieren-und-Einfügen-Vorgang wiederzugeben. Zelle 724a enthält die Formel „= B3·C3“. Der Benutzer kann die Formel in Zelle 724 wie in 7 gezeigt eingeben, die kollaborative Kalkulationstabelle kann die entsprechende Formel intern jedoch als „= RoC–2·RoC–1“ speichern, was bedeutet, dass der Inhalt der Zelle, die sich zwei Spalten links und in derselben Zeile wie Zelle 712 befindet, um den Inhalt der Zelle multipliziert werden soll, die sich eine Spalte links und in derselben Zeile wie Zelle 712 befindet. Sämtliche der hier beschriebenen oder veranschaulichten Formeln können als relative Formeln im allgemeinen Format RxCy implementiert werden, wobei „R“ ein Hinweis darauf ist, dass ein Zeilen-Index folgt, „x“ ein relativer Zeilen-Index, „C“ ein Hinweis darauf, dass ein Spalten-Index folgt und „y“ ein relativer Spalten-Index. Der relative Zeilen-Index „x“ gibt die Zeilenanzahl (und Richtung, durch sein Vorzeichen) an, die die durch die relative Formel bezeichnete Zelle von der Zelle, die die relative Formel beinhaltet, trennt. Der relative Spalten-Index „y“ gibt die Spaltenanzahl (und Richtung, durch sein Vorzeichen) an, die die durch die relative Formel bezeichnete Zelle von der Zelle, die die relative Formel beinhaltet, trennt. Sämtliche der hier beschriebenen oder veranschaulichten Formeln können als absolute Formel im allgemeinen absoluten Format NZ implementiert werden. In diesem allgemeinen absoluten Format bezeichnet „N“ den Spalten-Index und „Z“ den Zeilen-Index der Zelle, die durch die absolute Formel bezeichnet wird. In einigen Beispielen werden absolute Formeln dem Benutzer mit einem „$“-Symbol vor einem oder mehreren Indizes dargestellt (d. h. $N$Z).
  • Im Beispiel in 7 ist die Formel im Quellbereich 722 (D2) eine relative Formel und keine absolute Formel, d. h. die Formel in D3 ist ebenfalls eine relative Formel und gibt dies wieder. Zelle 726 ist eine leere Zelle, da sie sich in der Leerzeile befindet, die unter Zeile 3 durch Daves entsprechenden Einfüge-Vorgang 702 eingefügt wurde. Zelle 724b enthält nun die Formel „= B5·C5“. Zelle 724b enthält wie Zelle 724a die eingefügte relative Formel aus Zelle 722. Zelle 724c hat eine ähnliche Formel wie Zelle 724b. Indem die vom Kopieren-und-Einfügen-Vorgang betroffenen Bereiche umgewandelt werden, wird der Kopieren-und-Einfügen-Zielbereich so angepasst, dass die eingefügte Zeile berücksichtigt wird. Die vorstehende Beschreibung einer Umwandlung von Kopieren-und-Einfügen-Bereichen und der entsprechenden Formeln gilt auch für die Umwandlung von Bereichen in Bezug auf die in den 810 dargestellten Vorgänge. Auch wenn Anpassungen vorgenommen werden können, um die unterschiedlichen sich überschneidenden Vorgänge der 810 zu berücksichtigen, werden ähnliche Prinzipien angewendet. Das Beispiel in 7 ist veranschaulichend und in einigen Beispielen bearbeiten mehr als zwei Benutzer die kollaborative Kalkulationstabelle. In einem anderen Beispiel bearbeitet ein Benutzer die kollaborative Kalkulationstabelle von mehreren Geräten aus.
  • 8 zeigt, wie ein Vorgang zur Löschung einer Zeile von einem Benutzer, der sich mit einem Kopieren-und-Einfügen-Vorgang eines anderen Benutzers überschneidet, gemäß den hier beschriebenen Systemen und Verfahren in Einklang gebracht werden kann. Status 810 zeigt den Status einer kollaborativen Kalkulationstabelle, die von den Benutzern Charlie und Dave bearbeitet wird, vor Übernahme der Bearbeitungen. Status 820 zeigt den Status der kollaborativen Kalkulationstabelle, nachdem die Änderungen beider Benutzer übernommen und in Übereinstimmung mit den hier beschriebenen Systemen und Verfahren in Einklang gebracht wurden.
  • In 802 tätigt Charlie eine Kopieren-und-Einfügen-Eingabe, um den Inhalt von Zelle D2 in den Bereich D3:D5 zu kopieren. In 804 tätigt Dave auf seinem Gerät eine Eingabe, um Zeile 4 derselben Kalkulationstabelle zu löschen. Charlie und Dave bearbeiten die Kalkulationstabelle von unterschiedlichen Geräten aus, und, wie in 7 beschrieben, nimmt jeder eine Änderung vor, ohne sich der Änderung des anderen Benutzers bewusst zu sein. Daher müssen ihre Änderungen in Übereinstimmung mit den hier beschriebenen Systemen und Verfahren in Einklang gebracht werden. Charlies Bearbeitung 802 zum Kopieren des Inhalts von Zelle D2 im Quellbereich 812 in die Zellen D3:D5 im Zielbereich 814 ist in 810 veranschaulicht. Der Bereich von Daves Vorgang zur Löschung einer Zeile ist Zeile 4, veranschaulicht in 816. Der Quellbereich 822 ist im Wesentlichen derselbe wir der ursprüngliche Quellbereich 812, und die Zellen 824a–b wurden nun in Übereinstimmung mit Charlies Kopieren-und-Einfügen-Vorgang 802 aktualisiert. Die Zeilenlöschung 804 von Dave hat dazu geführt, dass Bereich 816 aus der Kalkulationstabelle gelöscht wurde. Indem die vom Kopieren-und-Einfügen-Vorgang betroffenen Bereiche umgewandelt werden, wird der Kopieren-und-Einfügen-Zielbereich so angepasst, dass die gelöschte Zeile berücksichtigt wird.
  • 9 zeigt, wie ein Zelleinstellungsvorgang von einem Benutzer, der sich mit dem Quellbereich eines Kopieren-und-Einfügen-Vorgangs eines anderen Benutzers überschneidet, gemäß den hier beschriebenen Systemen und Verfahren in Einklang gebracht werden kann. Status 910 zeigt den Status einer kollaborativen Kalkulationstabelle, die von den Benutzern Charlie und Dave bearbeitet wird, vor Übernahme der Änderungen. Status 920 zeigt den Status der kollaborativen Kalkulationstabelle, nachdem die Änderungen von Charlie und Dave in Einklang gebracht und übernommen wurden. Dave und Charlie sehen die kollaborative Kalkulationstabelle auf ihrem jeweiligen Gerät in Übereinstimmung mit einer Situation, die der in Bezug auf 7 beschriebenen Situation ähnelt.
  • In 902 tätigt Charlie eine Eingabe, um den Inhalt von Zelle D2 im Quellbereich 912 in die Zellen D3:D5 im Zielbereich 914 zu kopieren. In 904 tätigt Dave, der sich der Eingabe von Charlie nicht bewusst ist, eine Eingabe, um die Formel in Zelle D2 in „= B2·C2·1,09“ zu ändern. In einigen Beispielen sind diese und andere Formeln relative Formeln wie in Bezug auf 7 beschrieben. Da Charlie und Dave jeweils eine Änderung vornehmen, wobei sie sich der Änderung des anderen Benutzers nicht bewusst sind, müssen ihre Änderungen in Übereinstimmung mit den hier beschriebenen Systemen und Verfahren in Einklang gebracht werden. Zelle 922 ist der Quellbereich von Charlies Kopieren-und-Einfügen-Vorgang und die Zellen 924a–c sind die Zielzellen von Charlies Kopieren-und-Einfügen-Vorgang. Da Daves Zelleinstellungsvorgang im Quellbereich von Charlies Kopieren-und-Einfügen-Vorgang übernommen wurde, wurde Daves Zelleinstellungsvorgang vor Charlies Kopieren-und-Einfügen-Vorgang in der kollaborativen Kalkulationstabelle übernommen, wie das Verfahren 600 laut 6 vorgibt. Auf diese Weise wurde die Zelleinstellungsbearbeitung von Dave auf in Charlies Zielbereich kopiert. Indem die sich überschneidenden Bearbeitungen in der richtigen Reihenfolge durchgeführt werden wird der Kopieren-und-Einfügen-Vorgang so angepasst, dass er den Zelleinstellungsvorgang berücksichtigt, und die ursprüngliche Absicht eines jeden Benutzers wird beibehalten. Sowohl Charlie als auch Dave sehen die kollaborative Kalkulationstabelle nun wie in der Ansicht in 920 gezeigt.
  • 10 zeigt, wie ein Zelleinstellungsvorgang von einem Benutzer, der sich mit dem Zielbereich eines Kopieren-und-Einfügen-Vorgangs eines anderen Benutzers überschneidet, gemäß den hier beschriebenen Systemen und Verfahren in Einklang gebracht werden kann. Zwei Benutzer, Charlie und Dave, bearbeiten eine kollaborative Kalkulationstabelle auf ihrem jeweiligen Gerät, und jeder tätigt eine Eingabe. Status 1010 beschreibt den Status des kollaborativen Dokuments, bevor die Änderung des jeweiligen Benutzers übernommen wurde. Status 1020 zeigt den Status des kollaborativen Dokuments, nachdem die Änderungen von Charlie und Dave in Einklang gebracht und übernommen wurden. In 1002 nimmt Charlie einen Kopieren-und-Einfügen-Vorgang vor, um den Inhalt von Zelle D2 im Quellbereich 1012 in die Zellen D3:D5 im Zielbereich 1014 zu kopieren. In Schritt 1004 tätigt Dave, der sich der Kopieren-und-Einfügen-Eingabe von Charlie nicht bewusst ist, eine Eingabe, um die Formel in Zelle D4 in „= B4·C4·1,09“ zu ändern. Daves Zelleinstellungseingabe betrifft den Zielbereich von Charlies Kopieren-und-Einfügen-Vorgang. In einigen Beispielen sind die Formel in Zelle D4 und andere Formeln relative Formeln wie in Bezug auf 7 beschrieben. Da ein Benutzer sich der Eingabe des anderen Benutzers, während er selbst eine Eingabe getätigt hat, nicht bewusst war, müssen die Änderungen in Übereinstimmung mit den hier beschriebenen Systemen und Verfahren in Einklang gebracht werden. Zelle 1022 bleibt im Vergleich zum Status 1010 unverändert. Die Zellen 1024a–b wurden aktualisiert, um die Ergebnisse von Charlies Kopieren-und-Einfügen-Vorgang wiederzugeben. Zelle 1026 wurde ebenfalls aktualisiert, um Charlies Kopieren-und-Einfügen-Vorgang wiederzugeben, sie wurde jedoch auch aktualisiert, um Daves Zelleinstellungsvorgang wiederzugeben. Da Daves Zelleinstellungsvorgang sich mit dem Zielbereich von Charlies Kopieren-und-Einfügen-Vorgang überschnitten hat, wurde Charlies Kopieren-und-Einfügen-Vorgang zuerst übernommen und Daves Zelleinstellungsvorgang als zweites. Diese Reihenfolge wird durch das Verfahren 600 aus 6 vorgegeben. Indem die miteinander in Konflikt stehenden Bearbeitungen in der richtigen Reihenfolge durchgeführt werden wird der Kopieren-und-Einfügen-Vorgang so angepasst, dass er den Zelleinstellungsvorgang berücksichtigt, und die ursprüngliche Absicht eines jeden Benutzers wird in den miteinander in Einklang gebrachten Änderungen beibehalten. Sowohl Charlie als auch Dave sehen die kollaborative Kalkulationstabelle nun wie in Status 1020 gezeigt auf ihrem jeweiligen Gerät.
  • 11 veranschaulicht das Ergebnis eines gekachelten Kopieren-und-Einfügen-Vorgangs in einer kollaborativen Kalkulationstabelle und umfasst Status 1110 und 1120. Status 1110 zeigt den Status der kollaborativen Kalkulationstabelle, bevor der Kopieren-und-Einfügen-Vorgang übernommen wird. Status 1110 umfasst einen Quellbereich 1112 und einen Zielbereich 1114. Wie hier verwendet beschreibt der Begriff „Kachelgruppierung“ einen Kopieren-und-Einfügen-Vorgang, bei dem der Zielbereich größer ist als der Quellbereich. Bei einem gekachelten Kopieren-und-Einfügen-Vorgang wird der Inhalt des Quellbereichs mehrmals im Zielbereich reproduziert, in Übereinstimmung mit der Größe des jeweiligen Bereichs. Eine Kachelgruppierung kann in jedem der hier beschriebenen Kopieren-und-Einfügen-Vorgänge verwendet werden. Der Quellbereich 1112 des gekachelten Kopieren-und-Einfügen-Vorgangs besteht aus zwei Zellen, Zellen A1 und A2. Zelle A1 enthält den Text „AA“, und Zelle A2 enthält den Text „BB“. Der Zielbereich 1114 des gekachelten Kopieren-und-Einfügen-Vorgangs besteht aus 12 Zellen im Bereich C2:E5.
  • Status 1120 gibt die Ergebnisse des gekachelten Kopieren-und-Einfügen-Vorgangs wieder, nachdem der Vorgang in der kollaborativen Kalkulationstabelle übernommen wurde. Der Status 1120 umfasst Zellen im Quellbereich 1122a–b und Zellen im Zielbereich 1124a–m. Die Zellen 1122a–b sind unverändert geblieben, da sie die Quellzellen des Vorgangs waren. Die Zellen 1124a–m beinhalten nun den gekachelten Inhalt der Zellen 1122a–b. Da der Zielbereich 1114 von den Spalten her dreimal größer ist als der Quellbereich 1112, wurden die Quellzellen drei Mal in den Spalten gekachelt, um den Status 1120 zu ergeben. Da der Bereich 1114 zudem auch von den Zeilen her zweimal größer ist als der Quellbereich 1112, wurden die Zellen im Zielbereich 1112 zwei Mal in den Zeilen gekachelt, um den Status 1120 zu ergeben. Hätte der Zielbereich 1114 eine zusätzliche Zeile enthalten (z. B. wenn er z. B. aus dem Bereich C2:E6 bestanden hätte), wäre der Quellbereich 1112 dennoch nur zwei Mal in den Zeilen gekachelt worden, um den Status 1120 zu ergeben. Dies wäre geschehen, da der Faktor, um den Bereich 1114 von den Zeilen her größer als Bereich 1112 war, zu Kachelgruppierungszwecken auf die nächste ganze Zahl abgerundet worden wäre.
  • Die Kachelgruppierung kann für einen Benutzer äußerst wünschenswert sein, da ein Benutzer eine kleine Anzahl an Quellzellen durch eine minimale Eingabe in einen sehr großen Zielbereich kopieren kann. Allerdings kann die Kachelgruppierung, wird sie nicht angemessen gehandhabt, bei Implementierung in einer kollaborativen Kalkulationstabelle zu übermäßigem Datenverkehr im Netzwerk führen. Dies kann geschehen, wenn die Daten im Zielbereich teilweise oder ganz an andere Geräte im Netzwerk wie z. B. den Server und andere Client-Geräte übertragen werden. Würde die Kachelgruppierung auf diese Weise in der kollaborativen Kalkulationstabelle aus Status 1120 implementiert, würde der Text in den jeweiligen Zellen 1124a–m über das Netzwerk übertragen werden. Die über das Netzwerk übertragenen Daten variieren demnach je nach Größe des Zielbereichs, sodass das übertragene Datenvolumen recht groß sein kann.
  • Wird die Kachelgruppierung in einer kollaborativen Kalkulationstabelle jedoch implementiert, indem nur die Anweisungen und Bereichs-Indizes über das Netzwerk übertragen werden, und die Kachelung unabhängig auf jedem lokalen Gerät stattfindet, kann der Datentransfer reduziert werden. Im Beispiel aus Status 1120 müssen nur die Bezeichnungen des Quellbereichs und des Zielbereichs über das Netzwerk an andere Geräte übertragen werden, was zu einem festen Datenaufkommen führt, unabhängig von der Größe der Quell- bzw. Zielbereiche. In einigen Beispielen können auch im Zielbereich enthaltene Daten neben den Kopieren-und-Einfügen-Anweisungen übertragen werden. In diesen Beispielen variiert das über das Netzwerk übertragene Datenvolumen je nach Größe des Quellbereichs, der immer noch wesentlich kleiner sein kann als der Zielbereich. Diese Beispiele führen zu einem geringeren Datenverkehr im Netzwerk als in dem Fall, in dem die Daten aus dem Zielbereich ganz oder teilweise übertragen werden. Die in 11 veranschaulichte Kachelgruppierung kann in jedem der hier beschriebenen Kopieren-und-Einfügen-Vorgänge verwendet werden.
  • 12 ist ein Blockdiagramm eines Computergeräts wie sämtliche Komponenten der Systeme in den 111 für die Ausführung sämtlicher der hier beschriebenen Prozesse. Jede Komponente dieser Systeme kann in einem oder mehreren Computergeräten 1200 implementiert werden. In bestimmten Aspekten kann eine Vielzahl der Komponenten dieser Systeme in einem Computersystem 1200 enthalten sein. In bestimmten Ausführungsformen können eine Komponente und ein Speichergerät über mehrere Computergeräte 1200 implementiert werden.
  • Das Computergerät 1200 umfasst mindestens eine Kommunikationsschnittstellen-Einheit, einen Input-/Output-Controller 1210, einen Systemspeicher und ein oder mehrere Datenspeichergeräte. Der Systemspeicher umfasst mindestens eine Random-Access Memory (RAM 1202) und mindestens einen Festwertspeicher (ROM 1204). All diese Elemente stehen mit einem Prozessor (CPU 1206) in Verbindung, um den Betrieb des Computergeräts 1200 zu vereinfachen. Das Computergerät 1200 kann auf viele verschiedene Arten konfiguriert werden. Z. B. kann das Computergerät 1200 ein herkömmlicher Einzelrechner sein, oder alternativ dazu können die Funktionen des Computergeräts 1200 auf mehrere Computersysteme und -architekturen verteilt sein. Alternativ dazu kann ein Computersystem virtuell abgebildet werden, um die Funktionen mehrerer Computergeräte 1200 bieten zu können. In 12 ist das Computergerät 1200 über ein Netzwerk oder lokales Netzwerk mit anderen Servern oder Systemen verbunden.
  • Das Computergerät 1200 kann in einer verteilten Architektur konfiguriert sein, bei der Datenbanken und Prozessoren in verschiedenen Einheiten und an unterschiedlichen Orten untergebracht sind. Manche Einheiten führen primäre Verarbeitungsfunktionen aus und enthalten mindestens ein allgemeines Steuergerät oder einen Prozessor und einen Systemspeicher. Bei Ausführungsformen mit verteilter Architektur kann jede dieser Einheiten über die Kommunikationsschnittstellen-Einheit 1208 an einen Kommunikations-Hub oder -Port (nicht gezeigt) angeschlossen werden, der als primäre Kommunikationsverbindung zu anderen Servern, Clients oder Benutzercomputern und anderen verwandten Geräten dient. Der Kommunikationsknotenpunkt oder -port kann selbst über eine minimale Verarbeitungskapazität verfügen und dient primär als Kommunikationsrouter. Eine Reihe von Kommunikationsprotokollen können ein Teil des Systems darstellen, einschließlich, jedoch nicht ausschließlich: Ethernet, SAP, SASTM, ATP, BLUETOOTHTM, GSM und TCP/IP.
  • Die CPU 1206 umfasst einen Prozessor, wie z. B. einen oder mehrere herkömmliche Mikroprozessoren und einen oder mehrere zusätzliche Coprozessoren wie z. B. Mathematik-Coprozessoren zur Entlastung der CPU 1206. Die CPU 1206 kommuniziert mit der Kommunikationsschnittstellen-Einheit 1208 und dem Input-/Output-Controller 1210, über den die CPU 1206 mit anderen Geräten wie Servern, Benutzerterminals oder Benutzergeräten kommuniziert. Die Kommunikationsschnittstellen-Einheit 1208 und der Input-/Output-Controller 1210 können mehrere Kommunikationskanäle für die gleichzeitige Kommunikation mit z. B. anderen Prozessoren, Servern oder Client-Terminals aufweisen.
  • Die CPU 1206 kommuniziert zudem mit dem Datenspeichergerät. Das Datenspeichergerät kann eine angemessene Kombination aus magnetischen, optischen oder Halbleiterspeichern beinhalten und kann z. B. RAM 1202, ROM 1204, einen Speicherstick, eine optische Scheibe wie z. B. eine CD oder eine Festplatte umfassen. Die CPU 1206 und das Datenspeichergerät können jeweils z. B. vollständig in einem Einzelrechner oder anderen Computergerät untergebracht sein; oder sie können über ein Kommunikationsmedium wie z. B. einen USB-Port, ein serielles Schnittstellenkabel, ein Koaxialkabel, ein Ethernetkabel, eine Telefonleitung, einen Radiofrequenzsender/-empfänger oder andere ähnliche kabellose oder verkabelte Medien oder eine Kombination dieser miteinander verbunden sein. Die CPU 1206 kann z. B. über die Kommunikationsschnittstellen-Einheit 1208 mit dem Datenspeichergerät verbunden sein. Die CPU 1206 kann dafür konfiguriert sein, eine oder mehrere bestimmte Verarbeitungsfunktionen auszuführen.
  • Das Datenspeichergerät kann z. B. speichern: (i) ein Betriebssystem 1212 für das Computergerät 1200; (ii) eine oder mehrere Anwendungen 1214 (d. h. Computer-Programmcode oder ein Computerprogrammprodukt), die so konfiguriert sind, dass sie die CPU 1206 in Übereinstimmung mit den hier beschriebenen Systemen und Verfahren und insbesondere in Übereinstimmung mit den detailliert beschriebenen Verfahren in Bezug auf die CPU 1206 anleiten; oder (iii) Datenbank(en) 1216, die dafür konfiguriert sind, Informationen zu speichern, die dafür verwendet werden können, vom Programm benötigte Informationen zu speichern.
  • Das Betriebssystem 1212 und die Anwendungen 1214 können z. B. in komprimiertem, unkompilierten und verschlüsseltem Format gespeichert werden und können Computer-Programmcode beinhalten. Die Anweisungen des Programms können von einem computerlesbaren Medium, das nicht das Datenspeichergerät ist, wie z. B. von der ROM 1204 oder vom RAM 1202, in einen Hauptspeicher des Prozessors eingelesen werden. Auch wenn die Ausführung der Anweisungssequenzen im Programm die CPU 1206 dazu bringt, die hier beschriebenen Prozessschritte durchzuführen, kann ein festverdrahteter Schaltkreis anstatt oder in Kombination mit Software-Anweisungen für die Implementierung der Prozesse der vorliegenden Erfindung verwendet werden. Daher sind die hier beschriebenen Systeme und Methoden nicht auf eine spezifische Kombination aus Hardware und Software beschränkt.
  • Ein geeigneter Computer-Programmcode kann zur Durchführung ein oder mehrerer Funktionen in Zusammenhang mit der Durchführung der hier beschriebenen Prozesse zur Verfügung gestellt werden. Das Programm kann auch Programmelemente wie ein Betriebssystem 1212, ein Datenbank-Management-System und „Gerätetreiber“ umfassen, die es dem Prozessor ermöglichen, mit Computer-Peripheriegeräten (z. B. einem Videodisplay, einer Tastatur, einer Computermaus usw.) über den Input-/Output-Controller 1210 zu kommunizieren.
  • Wie hier verwendet bezieht sich der Begriff „computerlesbares Medium“ auf jedes nicht vorübergehende Medium, das Anweisungen an den Prozessor des Computergeräts 1200 (oder einen anderen Prozessor eines hier beschriebenen Gerätes) zur Ausführung liefert oder zu deren Lieferung beiträgt. Dieses Medium kann viele Formen annehmen, einschließlich unter anderem nichtflüchtige und flüchtige Medien. Nichtflüchtige Medien umfassen zum Beispiel optische, magnetische oder optomagnetische Datenträger oder integrierte Speicherschaltung, wie zum Beispiel Flash-Speicher. Zu den flüchtigen Medien gehören dynamisches RAM (DRAM), welches gewöhnlich als Hauptspeicher dient. Allgemeine Formen der maschinenlesbaren Medien bzw. computerlesbaren Medien beinhalten z. B. Disketten, Floppy Disks, Festplatten, Magnetbänder, jegliche anderen magnetischen Datenträger, CD-ROMs, DVDs, jegliche andere optische Medien, Lochkarten, Lochstreifen, alle anderen physischen Medien mit Lochmustern, RAM-, PROM-, EPROM- oder EEPROM-Speicher, Flash-EPROM, jegliche anderen Speicherchips oder -kassetten oder jedes andere Medium, von dem ein Prozessor lesen kann.
  • Verschiedene Formen computerlesbarer Medien können an der Übertragung einer oder mehrerer Sequenzen einer oder mehrerer Anweisungen an die CPU 1206 (oder einen anderen Prozessor eines hier beschriebenen Gerätes) zur Ausführung beteiligt sein. So können die Anweisungen zum Beispiel zunächst auf einer magnetischen Disk eines Ferncomputers getragen werden (ohne Abbildung). Der Ferncomputer kann diese Anweisungen in seinen dynamischen Speicher laden und die Anweisungen anschließend über eine Ethernet-Verbindung, ein Kabel oder sogar über eine Telefonleitung mit Modem senden. Ein lokal in einem Computergerät 1200 installiertes Kommunikationsgerät (z. B. ein Server) kann die Daten über den entsprechenden Verbindungsweg erhalten und die Daten auf einen System-Bus für den Prozessor ablegen. Der Systembus transportiert die Daten dann an den Hauptspeicher, von dem der Prozessor die Anweisungen anschließend abruft und ausführt. Die vom Hauptspeicher empfangenen Anweisungen können optional entweder vor oder nach der Ausführung durch den Prozessor gespeichert werden. Darüber hinaus können Anweisungen über einen Kommmunikationsport als elektrische, elektromagnetische oder optische Signale empfangen werden; dies sind Beispiele der drahtlosen Kommunikation oder Datenstreams, die diverse unterschiedliche Arten von Informationen übertragen.
  • Es ist klar, dass Aspekte der hier beschriebenen Systeme und Verfahren in vielen verschiedenen Arten von Software, Firmware und Hardware in den in den Zeichnungen abgebildeten Ausführungsformen implementiert werden können. Der tatsächliche Software-Code oder die tatsächliche spezialisierte Steuerungs-Hardware zur Implementierung von Aspekten in Übereinstimmung mit den hier beschriebenen Prinzipien der System und Verfahren ist nicht beschränkend. Der Betrieb und das Verhalten der Aspekte der Systeme und Verfahren wurden demnach ohne Bezugnahme auf den speziellen Software-Code beschrieben – es versteht sich, dass ein Durchschnittsfachmann in der Lage sein würde, Software zu entwerfen und Hardware zu kontrollieren, um die Aspekte auf der Grundlage der hiesigen Beschreibungen zu implementieren.
  • Ebenso werden Vorgänge in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Vorgänge in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Vorgänge ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.

Claims (10)

  1. System, das einen Prozessor umfasst, der für Folgendes konfiguriert ist: das Anzeigen, mithilfe eines Prozessors und basierend auf einem ersten Modell, das im System gespeichert ist, einer kollaborativen Kalkulationstabelle, die auf einem Server gehostet wird; das Erhalten, am Prozessor und von einem Benutzer, einer ersten Eingabe, die einen Quellbereich der Kalkulationstabelle, einen Zielbereich der Kalkulationstabelle und eine Anweisung zum Kopieren von Inhalt vom Quellbereich zum Zielbereich beinhaltet; das Erhalten, am Prozessor und vom Server, einer zweiten Eingabe zum Ändern eines Teils der Kalkulationstabelle, worin die zweite Eingabe eine Anweisung beinhaltet, die Kalkulationstabelle auf eine Weise zu verändern, die mindestens einen der Quellbereiche und den Zielbereich betrifft; das Umwandeln am Prozessor, wobei die erste Eingabe auf der zweiten Eingabe basiert, um eine umgewandelte erste Eingabe zu erhalten; das Ändern mithilfe des Prozessors des Modells auf der Grundlage der zweiten Eingabe, um ein zweites Modell zu erhalten; das weitere Ändern mithilfe des Prozessors des zweiten Modells auf der Grundlage der umgewandelten ersten Eingabe, um ein drittes Modell zu erhalten; und das Anzeigen mithilfe des Prozessors der kollaborativen Kalkulationstabelle auf der Grundlage des dritten Modells.
  2. System nach Anspruch 1, wobei der Prozessor ferner dafür konfiguriert ist, die erste Eingabe und eine erste Revisionsnummer, entsprechend dem ersten im System gespeicherten Modell, an den Server zu übertragen.
  3. System nach Anspruch 2, wobei der Prozessor ferner dafür konfiguriert ist, basierend auf dem Empfangen einer Bestätigung vom Server, ob die erste Eingabe umgewandelt werden soll, worin die Bestätigung mit der ersten Eingabe in Zusammenhang steht und eine zweite Revisionsnummer umfasst, die größer ist als die erste Revisionsnummer.
  4. System nach Anspruch 3, wobei der Prozessor ferner dafür konfiguriert ist zu ermitteln, basierend auf dem Empfangen der Bestätigung, ob das zweite Modell weiter geändert werden soll.
  5. System nach Anspruch 1, wobei der Prozessor ferner dafür konfiguriert ist, die umgewandelte erste Eingabe und eine Revisionsnummer, die dem zweiten im System gespeicherten Modell entspricht, an den Server zu übertragen.
  6. System nach Anspruch 1, worin: der Zielbereich größer ist als der Quellbereich; und die Anweisung, Inhalt zu kopieren, eine Anweisung zum Kacheln von Inhalt aus dem Quellbereich in den Zielbereich umfasst.
  7. System, das einen Prozessor umfasst, der für Folgendes konfiguriert ist: das Erhalten, ausgehend von einem ersten Benutzergerät, einer ersten Eingabe zum Ändern einer kollaborativen Kalkulationstabelle, die auf einem Server gehostet wird; das Erhalten, ausgehend von einem zweiten Benutzergerät, einer zweiten Eingabe mit einem Quellbereich der Kalkulationstabelle, einem Zielbereich der Kalkulationstabelle und einer Anweisung zum Kopieren von Inhalt aus dem Quellbereich in den Zielbereich, wobei die erste Eingabe eine Anweisung enthält, die Kalkulationstabelle auf eine Weise zu verändern, die mindestens einen der Quellbereiche und den Zielbereich betrifft; das Umwandeln der zweiten Eingabe auf der Grundlage der ersten Eingabe, um eine umgewandelte zweite Eingabe zu erhalten; und das Übertragen der umgewandelten zweiten Eingabe an das erste Benutzergerät.
  8. System nach Anspruch 7, wobei der Prozessor ferner dafür konfiguriert ist, auf der Grundlage eines Vergleichs einer ersten Revisionsnummer, die mit der ersten Eingabe in Zusammenhang steht, mit einer zweiten Revisionsnummer, die mit der zweiten Eingabe in Zusammenhang steht, festzulegen, ob die zweite Eingabe umgewandelt werden soll.
  9. System nach Anspruch 7, wobei der Prozessor ferner für Folgendes konfiguriert ist: das Ändern auf der Grundlage der ersten Eingabe eines auf dem Server gespeicherten Modells der Kalkulationstabelle, um ein erstes geändertes Modell zu erhalten; und das weitere Ändern auf der Grundlage der umgewandelten zweiten Eingabe des ersten geänderten Modells, um ein zweites geändertes Modell zu erhalten.
  10. System nach Anspruch 9, wobei der Prozessor ferner für Folgendes konfiguriert ist: das Übertragen zum ersten Benutzergerät einer Bestätigung der ersten Eingabe und einer ersten Revisionsnummer; das Übertragen zum zweiten Benutzergerät der ersten Eingabe und der ersten Revisionsnummer; Übertragung zum ersten Benutzergerät der umgewandelten zweiten Eingabe und einer zweiten Revisionsnummer, die größer ist als die erste Revisionsnummer; und das Übertragen an das zweite Benutzergerät einer Bestätigung der zweiten Eingabe und der zweiten Revisionsnummer.
DE202015009293.4U 2014-12-04 2015-11-25 Effizientes Kopieren und Einfügen (Copy & Paste) in eine kollaborative Kalkulationstabelle Active DE202015009293U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/560,954 2014-12-04
US14/560,954 US11244105B2 (en) 2014-12-04 2014-12-04 Efficient copy paste in a collaborative spreadsheet

Publications (1)

Publication Number Publication Date
DE202015009293U1 true DE202015009293U1 (de) 2017-02-08

Family

ID=54782884

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202015009293.4U Active DE202015009293U1 (de) 2014-12-04 2015-11-25 Effizientes Kopieren und Einfügen (Copy & Paste) in eine kollaborative Kalkulationstabelle

Country Status (5)

Country Link
US (2) US11244105B2 (de)
EP (2) EP4095737A1 (de)
CN (1) CN106663088B (de)
DE (1) DE202015009293U1 (de)
WO (1) WO2016089704A1 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783120B2 (en) * 2015-08-26 2023-10-10 Roar Software Pty Ltd. System and process for generating an internet application
US11036712B2 (en) * 2016-01-12 2021-06-15 Microsoft Technology Licensing, Llc. Latency-reduced document change discovery
US10175955B2 (en) * 2016-01-13 2019-01-08 Hamilton Sundstrand Space Systems International, Inc. Spreadsheet tool manager for collaborative modeling
CN109753641B (zh) * 2017-11-01 2023-11-28 珠海金山办公软件有限公司 一种更改对象位置的方法、装置、电子设备及存储介质
US20240070382A1 (en) * 2018-10-15 2024-02-29 Dayal Family LLC Method and System for Dynamic Naming of Component Expressions Within a Formula in a Cell in a Spreadsheet Application
US11610059B2 (en) * 2018-12-07 2023-03-21 Interject Data System, Inc. Systems and methods for a visual interface for grid-based programs
EP3827370A1 (de) * 2019-04-08 2021-06-02 Google LLC Verfolgung von inhaltsattributen in einem online-kollaborativen elektronischen dokument
US11755825B2 (en) * 2019-09-12 2023-09-12 Workiva Inc. Method, system, and computing device for facilitating private drafting
US11940953B2 (en) * 2019-11-25 2024-03-26 International Business Machines Corporation Assisted updating of electronic documents
CN111240564B (zh) * 2020-01-06 2022-03-04 北京字节跳动网络技术有限公司 一种素材展示方法、装置、电子设备及存储介质
US11100281B1 (en) 2020-08-17 2021-08-24 Workiva Inc. System and method for maintaining links and revisions
US11443108B2 (en) 2020-08-17 2022-09-13 Workiva Inc. System and method for document management using branching
US11100277B1 (en) 2021-02-15 2021-08-24 Workiva Inc. Systems, methods, and computer-readable media for flow-through formatting for links
US11354362B1 (en) 2021-05-06 2022-06-07 Workiva Inc. System and method for copying linked documents
CN113472776B (zh) * 2021-06-30 2022-12-27 亿图软件(湖南)有限公司 一种多人实时协作方法及系统
CN113704257B (zh) * 2021-08-06 2023-09-26 网易(杭州)网络有限公司 数据表的更新方法和装置
US11640495B1 (en) 2021-10-15 2023-05-02 Workiva Inc. Systems and methods for translation comments flowback
US20230328122A1 (en) * 2022-04-07 2023-10-12 Sigma Computing, Inc. Live editing a workbook with multiple clients
CN116050362B (zh) * 2023-03-23 2023-07-04 青岛诺亚信息技术有限公司 一种Web表格动态数据绑定方法、介质及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006239A (en) 1996-03-15 1999-12-21 Microsoft Corporation Method and system for allowing multiple users to simultaneously edit a spreadsheet
EP1202206A3 (de) * 2000-10-24 2004-01-21 International Business Machines Corporation Verfahren und System in einem elektronischen Kalkulationsblatt zur bleibenden Selbst-Reproduktion mehrerer Zellbereiche durch eine Kopieren-Einfügen-Funktion
US6912690B2 (en) * 2000-10-24 2005-06-28 International Business Machines Corporation Method and system in an electronic spreadsheet for persistently copy-pasting a source range of cells onto one or more destination ranges of cells
US7792788B2 (en) * 2005-03-04 2010-09-07 Microsoft Corporation Method and system for resolving conflicts operations in a collaborative editing environment
US7756824B2 (en) * 2007-10-26 2010-07-13 Microsoft Corporation Spreadsheet collaboration between rich and browser clients
US8656290B1 (en) 2009-01-08 2014-02-18 Google Inc. Realtime synchronized document editing by multiple users
US9298834B2 (en) 2009-05-26 2016-03-29 Adobe Systems Incorporated User presence data for web-based document collaboration
US20120101980A1 (en) 2010-10-26 2012-04-26 Microsoft Corporation Synchronizing online document edits
US9053079B2 (en) * 2011-12-12 2015-06-09 Microsoft Technology Licensing, Llc Techniques to manage collaborative documents
US8583614B1 (en) 2012-01-30 2013-11-12 Lucid Software, Inc. Automatic offline synchronization of browser documents
US9460073B2 (en) * 2013-02-27 2016-10-04 Google Inc. Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment
US9747582B2 (en) * 2013-03-12 2017-08-29 Dropbox, Inc. Implementing a consistent ordering of operations in collaborative editing of shared content items

Also Published As

Publication number Publication date
WO2016089704A1 (en) 2016-06-09
EP3149610B1 (de) 2022-08-24
CN106663088A (zh) 2017-05-10
US11244105B2 (en) 2022-02-08
CN106663088B (zh) 2021-05-07
US20160162461A1 (en) 2016-06-09
US20220237371A1 (en) 2022-07-28
EP3149610A1 (de) 2017-04-05
EP4095737A1 (de) 2022-11-30

Similar Documents

Publication Publication Date Title
DE202015009293U1 (de) Effizientes Kopieren und Einfügen (Copy & Paste) in eine kollaborative Kalkulationstabelle
DE202015009309U1 (de) Systeme für die Bearbeitung einer Datei in einer nicht nativen Applikation unter Verwendung einer Applikations-Engine
DE112010004652B4 (de) Zuverlässige Replikation mit hohem Durchsatz von umgewandelten Daten in Datensystemen
DE202017106594U1 (de) Bereitstellen von Zugriff auf eine in einem Datenspeichersystem gespeicherte Datei
DE102017111438A1 (de) Api-lernen
DE112015003926B4 (de) Verfahren, System und Computerprogramm zum Publish/Subscribe-Messaging unter Verwendung einer Nachrichtenstruktur
DE202013012465U1 (de) End-to-End-Exposition von nativen Datentypen an Drittanbieteranwendungen
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE102013003055A1 (de) Verfahren und Vorrichtung zum Durchführen von Suchen in natürlicher Sprache
DE102016216843A1 (de) Verteiltes Zusammenführen von Dateien
DE10048940A1 (de) Erzeugen von Dokumenteninhalten durch Transcodierung mit Hilfe von Java Server Pages
DE202010018481U1 (de) Asynchroner verteilter Objekt-Upload für replizierte Assoziativspeichercluster
DE102013200355A1 (de) Zusammenfügen von Dokumenten aud der Grundlage der Kenntnis eines Dokumentenschemas
DE112018005076T5 (de) Erstellen einer rangfolge von dokumenten auf grundlage ihres semantischen reichtums
DE112019005881T5 (de) Kryptografische überprüfung von datenbanktransaktionen
DE202014010948U1 (de) Nicht-kollaborative Filter in einem kollaborativen Dokument
DE112018000227T5 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
DE112019005879T5 (de) Indizes für nicht materialisierte ansichten
WO2012017056A1 (de) Verfahren und vorrichtung zur automatischen verarbeitung von daten in einem zellen-format
EP1647898A1 (de) Serverlose Replikation von Datenbanken
DE112020004493T5 (de) Zwischenspeicherfähigkeit von single-page-anwendungen
Ehrlich et al. Self-Sovereign Identity as the Basis for Universally Applicable Digital Identities
DE112007002327T5 (de) Persistente Sperren auf Ressourcen zur Steuerung der Nebenläufigkeit
DE10115380A1 (de) Verfahren zum Ändern eines Parameters eines Betriebssystems eines Computersystems
DE202015009247U1 (de) System zur berechnung anwendung und darstellung von dokument deltas

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017240000

Ipc: G06F0040166000

R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years