DE202015009277U1 - Systems for managing processing proposals in a text editing environment for collaborative documents - Google Patents

Systems for managing processing proposals in a text editing environment for collaborative documents Download PDF

Info

Publication number
DE202015009277U1
DE202015009277U1 DE202015009277.2U DE202015009277U DE202015009277U1 DE 202015009277 U1 DE202015009277 U1 DE 202015009277U1 DE 202015009277 U DE202015009277 U DE 202015009277U DE 202015009277 U1 DE202015009277 U1 DE 202015009277U1
Authority
DE
Germany
Prior art keywords
document
proposal
template
suggestion
proposals
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
DE202015009277.2U
Other languages
German (de)
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 DE202015009277U1 publication Critical patent/DE202015009277U1/en
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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • 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/169Annotation, e.g. comment data or footnotes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Document Processing Apparatus (AREA)

Abstract

System zum Verwalten von Bearbeitungsvorschlägen in einem kollaborativen Dokument, wobei das System Folgendes umfasst: Mittel zum Erzeugen einer Dokumentenvorlage, die dem kollaborativen Dokument zugewiesen ist; Mittel zum Empfangen eines ersten Bearbeitungsvorschlags am kollaborativen Dokument von einem ersten Benutzer; Mittel zum Zuweisen eines ersten Vorschlagsbefehls zum ersten Bearbeitungsvorschlag basierend auf einem Typ des ersten Bearbeitungsvorschlags und einem Typ der Dokumentenvorlage; Mittel zum Anwenden des ersten Vorschlagsbefehls auf die Dokumentenvorlage, um den ersten Bearbeitungsvorschlag innerhalb des kollaborativen Dokuments vorzulegen; Mittel zum Empfangen einer Annahmeanzeige für den ersten Bearbeitungsvorschlag; und Mittel zum Aktualisieren der Dokumentenvorlage mit dem ersten Vorschlagsbefehl als Reaktion auf die eingegangene Annahmeanzeige.A system for managing editing proposals in a collaborative document, the system comprising: means for creating a template of the document associated with the collaborative document; Means for receiving a first edit proposal on the collaborative document from a first user; Means for assigning a first proposal command to the first processing proposal based on a type of the first processing proposal and a type of the document template; Means for applying the first suggestion command to the template to present the first suggestion within the collaborative document; Means for receiving an acceptance indication for the first processing proposal; and means for updating the document template with the first suggestion command in response to the received acceptance indication.

Description

Gebiet der Erfindung Field of the invention

Im Allgemeinen bezieht sich diese Offenbarung auf elektronische Dokumente, insbesondere auf Systeme und Verfahren zur Verwaltung von Bearbeitungsvorschlägen in einer Textbearbeitungsumgebung für kollaborative Dokumente. In general, this disclosure relates to electronic documents, and more particularly to systems and methods for managing edit proposals in a collaborative document text editing environment.

Hintergrund background

Während der Erarbeitung eines elektronischen Dokuments ist es häufig wünschenswert, mehrere Lektoren Änderungsvorschläge machen zu lassen und den Entwurf des elektronischen Dokuments kommentieren zu lassen. Ein Autor könnte beispielsweise einen ersten Entwurf eines elektronischen Dokuments erstellen und eine Kopie des elektronischen Dokuments zur Kommentierung an mehrere Lektoren schicken. Jeder Lektor kann im elektronischen Dokument unabhängig Änderungsvorschläge machen oder Kommentare einfügen und eine überarbeitete Version des elektronischen Dokuments zurück an den Autor schicken. Diese Schritte werden wiederholt, bis der Autor und die Lektoren mit einer Version des elektronischen Dokuments zufrieden sind. Diese Vorgehensweise ist jedoch zeitaufwendig und ineffizient. During the process of preparing an electronic document, it is often desirable to have several reviewers make suggestions for amendment and to comment on the draft of the electronic document. For example, an author could create a first draft of an electronic document and send a copy of the electronic document to several reviewers for comment. Each editor can make suggestions for changes or comments in the electronic document and send a revised version of the electronic document back to the author. These steps are repeated until the author and the editors are satisfied with a version of the electronic document. However, this approach is time consuming and inefficient.

Kurzdarstellung Summary

Die in dieser Anmeldung offenbarten Systeme und Verfahren stellen eine Plattform zur Dokumentenbearbeitung bereit, um Bearbeitungsvorschläge in einem kollaborativen Dokument zu verwalten. Der Dokument-Editor kann eine Dokumentenvorlage erzeugen, die dem kollaborativen Dokument zugewiesen ist. Wenn ein erster Bearbeitungsvorschlag für das kollaborative Dokument eingeht, wird dem ersten Bearbeitungsvorschlag ein erster Vorschlagsbefehl basierend auf einem Vorbild des ersten Änderungsvorschlags und einem Vorbild der Dokumentenvorlage zugewiesen. Der Dokument-Editor kann den ersten Vorschlagsbefehl auf die Dokumentenvorlage anwenden, um den ersten Bearbeitungsvorschlag innerhalb des kollaborativen Dokuments vorzulegen. Wenn eine Annahmeanzeige für den ersten Bearbeitungsvorschlag eingeht, kann die Dokumentenvorlage als Reaktion auf die eingegangene Annahmeanzeige mit dem ersten Vorschlagsbefehl aktualisiert werden. The systems and methods disclosed in this application provide a document editing platform for managing editing proposals in a collaborative document. The document editor can create a template that is assigned to the collaborative document. When a first processing proposal for the collaborative document is received, a first suggestion command is assigned to the first processing proposal based on a model of the first change proposal and a template of the document template. The document editor can apply the first suggestion command to the document template to present the first edit proposal within the collaborative document. If an acceptance indication is received for the first processing proposal, the document template may be updated in response to the received acceptance notification with the first suggestion command.

Kurze Beschreibung der Zeichnungen Brief description of the drawings

Die oben genannten und weitere Eigenschaften der vorliegenden Offenbarung, einschließlich ihrer Besonderheiten und verschiedenen Vorteile, werden besser verständlich durch die folgende detaillierte Beschreibung zusammen mit den begleitenden Zeichnungen, in denen:  The above and other features of the present disclosure, including specifics and various advantages, will be better understood by the following detailed description when taken in conjunction with the accompanying drawings, in which:

1 ist gemäß einer konkretisierenden Ausführungsform ein Blockschaltbild eines Computersystems 100 zum Integrieren von kollaborativ vorgeschlagenen Änderungen und zum Veröffentlichen eines elektronischen Dokuments. 1 is a block diagram of a computer system according to a concretizing embodiment 100 to integrate collaboratively proposed changes and to publish an electronic document.

2A2B stellen ein exemplarisches Ablaufdiagramm bereit, das gemäß einer konkretisierenden Ausführungsform Merkmale der Verwaltung von Bearbeitungsvorschlägen innerhalb einer Dokumentenvorlage darstellt. 2A - 2 B provide an exemplary flowchart illustrating features of managing processing suggestions within a template in accordance with a more concrete embodiment.

3 stellt ein exemplarisches Ablaufdiagramm bereit, das gemäß einer konkretisierenden Ausführungsform Merkmale von Vorgehensweisen bei der Vorschlagsfilterung für eine Dokumentenvorlage darstellt. 3 provides an exemplary flowchart illustrating features of template document filtering procedures in accordance with a more concrete embodiment.

4A4B zeigen ein exemplarisches Ablaufdiagramm 400, das das gemäß einer konkretisierenden Ausführungsform Merkmale der Zusammenführung von Bearbeitungsvorschlägen abbildet. 4A - 4B show an exemplary flowchart 400 that maps the features of the merge of processing proposals according to a concretizing embodiment.

5 zeigt ein Ablaufdiagramm eines Verfahrens 500, das vom Rezensionsmanager 102 zur Verwendung der Priorisierungskategorien benutzt wird, um zu ermitteln, in welcher Reihenfolge die Vorschläge innerhalb eines Dokuments zusammengeführt werden sollen. 5 shows a flowchart of a method 500 that from the review manager 102 to use the prioritization categories to determine the order in which the proposals should be merged within a document.

6 zeigt ein exemplarisches Ablaufdiagramm 600, das gemäß einer konkretisierenden Ausführungsform Merkmale zur Bestimmung einer Variante „Transformation nicht berücksichtigen“ für eine Dokumentenvorlage abbildet. 6 shows an exemplary flowchart 600 which, according to a concretizing embodiment, maps features for determining a variant "disregard transformation" for a document template.

7 stellt ein exemplarisches Ablaufdiagramm 700 bereit, das gemäß einer konkretisierenden Ausführungsform Merkmale der Benachrichtigung von Redakteuren über Änderungen an einem kollaborativen Dokument durch andere Mitarbeiter darstellt. 7 provides an exemplary flowchart 700 which, according to a more concrete embodiment, provides features of notifying editors about changes to a collaborative document by other employees.

8 stellt ein exemplarisches Ablaufdiagramm 800 bereit, das Merkmale des Umwandelns von Bearbeitungen in einen Vorschlag darstellt. 8th provides an exemplary flowchart 800 ready, which represents features of transforming edits into a suggestion.

9 ist eine schematische Darstellung eines exemplarischen Computersystems, das in Übereinstimmung mit einer oder mehreren Implementierungen in dieser Offenbarung verwendet werden kann. 9 FIG. 12 is a schematic illustration of an exemplary computer system that may be used in accordance with one or more implementations in this disclosure.

Ausführliche Beschreibung Detailed description

Zum umfassenden Verständnis der in dieser Offenbarung beschriebenen Systeme und Verfahren werden im folgenden bestimmte Ausführungsformen beschrieben, einschließlich eines Systems und einer Methode zur Verwaltung von Bearbeitungsvorschlägen in einer Textbearbeitungsumgebung. 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 Treiber umfassen, die einen Prozessor oder Rechner, wie einen Computer, ein Logikgerät oder ein anderes Gerät oder einen Prozessor umfassen, der mit Hardware, Firmware und Software bestückt ist, um eine oder mehrere der hier beschriebenen computerisierten Methoden durchzuführen. For a full understanding of the systems and methods described in this disclosure, certain embodiments are described below, including a system and method for managing edit proposals in a text-editing environment. However, a properly trained user will find that the systems and methods described herein can be modified and adapted to suit the particular application, and also that the systems and methods described herein can be used in other suitable applications and that Additions and changes do not deviate from their extent. In general, the computerized systems described herein may include one or more drivers that include a processor or computer, such as a computer, a logic device, or other device or processor that is populated with hardware, firmware, and software to control one or more of the computer hardware perform computerized methods described herein.

1 ist gemäß einer konkretisierenden Ausführungsform ein Blockschaltbild eines Computersystems 100 zum Integrieren von kollaborativ vorgeschlagenen Änderungen und zum Veröffentlichen eines elektronischen Dokuments. Das System 100 beinhaltet einen Server 104 und drei Benutzergeräte 109, 113 und 117, die über ein Netzwerk 120 miteinander verbunden sind. Der Server 104 beinhaltet eine elektronische Datenbank 103 und einen Rezensionsmanager 102, der Aktualisierungen in verschiedenen Versionen eines Zentraldokuments 106 verwaltet. Das Zentraldokument 106 kann in der elektronischen Datenbank 103 auf dem Server 104 gespeichert werden; oder auf einer getrennten Speichervorrichtung. 1 is a block diagram of a computer system according to a concretizing embodiment 100 to integrate collaboratively proposed changes and to publish an electronic document. The system 100 includes a server 104 and three user devices 109 . 113 and 117 that have a network 120 connected to each other. The server 104 includes an electronic database 103 and a review manager 102 , the updates in different versions of a master document 106 managed. The central document 106 can in the electronic database 103 on the server 104 get saved; or on a separate storage device.

Um den Prozess der Zusammenarbeit an elektronischen Dokumenten effizienter zu gestalten, wird zur Integration von kollaborativ vorgeschlagenen Änderungen an einem elektronischen Dokument eine Textbearbeitungsumgebung für kollaborative Dokumente bereitgestellt. In der Textbearbeitungsumgebung für kollaborative Dokumente können Benutzer an verschiedenen Benutzergeräten gleichzeitig auf das Zentraldokument 106 zugreifen, um das Dokument zu rezensieren und Änderungen vorzuschlagen. Jedem Benutzer wird ein Benutzertypus zugewiesen (wie etwa ein Redakteur, Lektor oder Leser), der den Level der Zugangsberechtigung zu und Bearbeitungsmöglichkeiten von verschiedenen Versionen des Dokuments bestimmt. Wie in 1 dargestellt, kann ein Benutzer am Benutzergerät 109 über die Redakteur-Oberfläche 110 mit dem Zentraldokument 106 interagieren, ein Lektor am Benutzergerät 113 kann mit dem Zentraldokument 106 über die Lektoren-Oberfläche 114, und ein Leser am Benutzergerät 117 mit dem Zentraldokument 106 über die Leser-Oberfläche 118 interagieren. To make the process of collaboration on electronic documents more efficient, a text editing environment for collaborative documents is provided to integrate collaborative proposed changes to an electronic document. In the text editing environment for collaborative documents, users on different user devices can simultaneously access the master document 106 to review the document and suggest changes. Each user is assigned a type of user (such as an editor, lecturer, or reader) who determines the level of access authorization and editing capabilities of different versions of the document. As in 1 shown, a user on the user device 109 via the editor interface 110 with the central document 106 interact, an editor on the user device 113 can with the master document 106 via the lecturer interface 114 , and a reader on the user device 117 with the central document 106 via the reader interface 118 to interact.

Ein Lektor eines Dokuments kann das Dokument lesen, Bearbeitungsvorschläge machen und Kommentare bereitstellen, hat aber möglicherweise keine Erlaubnis, vorgeschlagene Änderungen anzunehmen oder abzulehnen. Der Lektor kann des Weiteren Bearbeitungsvorschläge und Kommentare von anderen Lektoren des Dokuments einsehen. Ein Redakteur hat für das Dokument eine höhere Berechtigungsstufe als der Lektor und kann Bearbeitungsvorschläge annehmen oder ablehnen und kann auch vom Lektor gemachte Kommentare löschen. Darüber hinaus besitzt der Redakteur auch die Zugangsberechtigung für Änderungen oder Kommentare am Dokument selbst. Die von einem Redakteur eingegangenen Änderungen können wie angenommene Änderungsvorschläge behandelt werden. Der Leser des Dokuments hat einen niedrigeren Zugangsberechtigungslevel als der Lektor und kann nur eine bereinigte veröffentlichte Version des Dokuments sehen, die keine Anzeigen von Bearbeitungsvorschlägen oder Kommentaren enthält. Wenn beispielsweise ein Redakteur das Dokument ansieht, kann der Redakteur einen Livestream kollaborativer Updates einsehen, die von verschiedenen Benutzern zur gleichen Zeit vorgenommen wurden, was die für die Erstellung des Dokuments benötigte Zeit signifikant verringert. Auf diese Weise bieten die hier offenbarte Systeme und Verfahren durch die Möglichkeit der effizienten Zusammenarbeit einer Gruppe von Benutzern, die Änderungsvorschläge zu einem Dokument machen, deutliche Vorteile gegenüber einem System, bei dem Lektoren unabhängig voneinander Änderungsvorschläge zu einem Dokument machen. An editor of a document can read the document, make edit suggestions, and provide comments, but may not have permission to accept or reject suggested changes. The editor can also view editing suggestions and comments from other reviewers of the document. An editor has a higher privilege level for the document than the editor and can accept or reject editing suggestions and can also delete comments made by the editor. In addition, the editor also has the right to modify or comment on the document itself. Changes made by an editor can be treated as accepted amendments. The reader of the document has a lower privilege level than the editor and can only see a cleaned-up published version of the document that does not contain any advertisements of edit suggestions or comments. For example, when an editor views the document, the editor can view a livestream of collaborative updates made by different users at the same time, significantly reducing the time required to create the document. In this way, the ability to effectively collaborate among a group of users who make proposed amendments into a document provides the systems and methods disclosed here with a clear advantage over a system in which reviewers independently make proposed amendments to a document.

Anwendungen könnten es zulassen wollen, Änderungen als Vorschläge nachzuverfolgen, was es notwendig machen würde, dass sie vor ihrer Einarbeitung in das Dokument angenommen oder abgelehnt werden. Diese Vorgehensweise macht es erforderlich, diese Änderungen so darzustellen, dass sie von der zugrundeliegenden Vorlage des kollaborativen Dokuments unterscheidbar sind und es zulassen, dass unterschiedliche Änderungen demselben Vorschlag zugewiesen werden. Applications may wish to allow changes to be tracked as suggestions, which would require them to be accepted or rejected before they are incorporated into the document. This approach makes it necessary to present these changes in a way that makes them distinguishable from the underlying template of the collaborative document and allows different changes to be assigned to the same proposal.

2A2B zeigen ein exemplarisches Ablaufdiagramm, das verschiedene Merkmale der Verwaltung von Bearbeitungsvorschlägen innerhalb einer Dokumentenvorlage darstellt. Beginnend mit 201 kann eine Dokumentenvorlage unter Zuweisung zu einem kollaborativen Dokument erzeugt werden. Die Dokumentenvorlage kann beispielsweise an einem Server (z. B. 104 in 1) erzeugt werden, um einer Zentralkopie des elektronischen Dokuments zugewiesen zu werden. Änderungsvorschläge können von einem Benutzer über ein Benutzergerät eingehen (z. B. 109 in 1), bei 202. Die Dokumentenvorlage kann einen Dokumenten-Bearbeitungsmodus definieren, wobei Änderungen am Dokument als Vorschläge gekennzeichnet werden und von Redakteuren angenommen oder abgelehnt werden können. Die Dokumentenvorlage kann beispielsweise prüfen, ob ein Benutzer die Zugriffsberechtigung hat, einen Bearbeitungsvorschlag zu machen, z. B. ob der Benutzer ein Lektor, Redakteur oder Leser ist, bei 203, und einem Benutzer, der von einem Benutzergerät aus einen Bearbeitungsvorschlag machen darf, eine „Vorschlags“-Option bereitstellen. Dieser Modus kann den Modus „Nur Kommentieren“ ersetzen, und es Benutzern mit einer Kommentarberechtigung erlauben, sowohl Kommentare als auch Vorschläge zu machen. Im Allgemeinen sind von einem Redakteur durchgeführte Änderungen auch von einem vorschlagenden Benutzer machbar. 2A - 2 B show an exemplary flowchart illustrating various features of the management of processing proposals within a document template. Starting with 201 A template can be created by assigning it to a collaborative document. For example, the document template can be stored on a server (eg 104 in 1 ) to be assigned to a central copy of the electronic document. Modification suggestions can be made by a user via a user device (eg 109 in 1 ), at 202 , The template may define a document editing mode, with changes to the document identified as suggestions and accepted or rejected by editors. The document template can check, for example, whether a user has the access authorization to make a processing proposal, for. Whether the user is a lecturer, editor or reader 203 , and provide a "suggestion" option to a user who is allowed to make a processing proposal from a user device. This mode can replace the Comment Only mode and allow users with a commenting permission to make both comments and suggestions. In general, changes made by an editor are also feasible by a proposing user.

Bei 204 kann der Server die Semantik ermitteln, die auf der Basis der Bearbeitungsvorschläge anzuwenden ist. Vorschläge können beispielsweise auf modellspezifische Weise dargestellt werden. Im Allgemeinen werden sie dargestellt, indem vermerkt wird, welche Teile des Modells vorgeschlagene Einfügungen/Löschungen/Änderungen sind. Für ein Textfolgemodell werden zum Beispiel Bereiche von vorgeschlagenen Einfügungen und Löschungen vorgehalten. Man kann Befehle so betrachten, dass sie innerhalb eines bestimmten adressierbaren Bereichs agieren. Beispiele beinhalten eine Folge von Abstandshaltern oder Entitätszuordnung, eine Liste von Folien oder ein Formensatz für Präsentationen. In Anbetracht ihres adressierbaren Bereichs können Befehle, die in einen Vorschlag aufgenommen werden können, wie folgt in Tabelle 1 dargestellt werden: Tabelle 1: Beispielbefehle Befehl Semantik anwenden Beispiele Erstellen Objekt in den Bereich einfügen. InsertSpacersMutation InsertCommand Löschen Objekt aus Bereich löschen. DeleteCommand DeleteSpacersMutation Modifizieren Die dem Objekt zugeordnete Eigenschaft modifizieren. ApplyStyleMutation ShapePropertiesCommand Verschieben Objekt zwischen zwei Orten im Bereich verschieben. MovePageCommand Ersetzen Objekt durch ein anderes innerhalb desselben Bereichs ersetzen. Keine. Könnte möglicherweise einige ReplaceSpacersMutation enthalten at 204 the server can determine the semantics to apply based on the processing suggestions. Suggestions may be presented, for example, in a model-specific manner. In general, they are presented by noting which parts of the model are suggested inserts / deletions / changes. For example, for a text-following model, ranges of suggested inserts and deletions are maintained. You can look at commands to act within a specific addressable range. Examples include a sequence of spacers or entity mapping, a list of slides, or a presentation form set. Given their addressable range, commands that can be included in a proposal can be represented in Table 1 as follows: Table 1: Example commands command Apply semantics Examples Create Insert object in the area. InsertSpacersMutation InsertCommand Clear Delete object from area. DeleteCommand DeleteSpacersMutation Modify Modify the property associated with the object. ApplyStyleMutation ShapePropertiesCommand Move Move object between two places in the area. Movepage Command Replace Replace object with another within the same area. None. Could possibly contain some ReplaceSpacersMutation

Ein Vorschlagsbefehl kann einem Bearbeitungsvorschlag bei 205 zugewiesen werden. Zur Unterstützung von Änderungsvorschlägen kann jeder Befehl einen entsprechenden Vorschlagsbefehl haben. Im Vorschlagsmodus wird anstelle der regulären Version des Befehls die Vorschlagsversion des Befehls ausgeführt. Semantikbeispiele für die Vorschlagsbefehle, die von den in Tabelle 1 aufgeführten Beispielbefehlen abgeleitet wurden, können unten in Tabelle 2 aufgeführt werden: Tabelle 2: Beispiele für Vorschlagsbefehle Befehl Semantik anwenden Beispiele Erstellen Objekt einfügen Objekt einfügen und als vorgeschlagene Einfügung markieren. Löschen Objekt löschen Objekt als vorgeschlagene Löschung markieren. Modifizieren Die dem Objekt zugeordnete Eigenschaft modifizieren. Die dem Objekt zugeordnete Eigenschaft in einem Parallelbereich ändern. Verschieben Objekt zwischen zwei Orten im Bereich verschieben. Objekt mit neuer vorgeschlagener Position kennzeichnen. Ersetzen Objekt durch ein anderes innerhalb desselben Bereichs ersetzen. Objekt einfügen und sowohl eingefügtes Objekt als auch ersetztes Objekt als vorgeschlagenen Ersatz des jeweils anderen markieren. A suggestion command may accompany a processing proposal 205 be assigned to. To support proposed changes, each command can have a corresponding suggestion command. In suggestion mode, the default version of the command is executed instead of the regular version of the command. Semantic examples of the suggestion commands derived from the example commands listed in Table 1 can be found in Table 2 below: Table 2: Examples of suggestion commands command Apply semantics Examples Create Insert object Insert object and mark as proposed insertion. Clear Delete object Mark object as suggested deletion. Modify Modify the property associated with the object. Change the property associated with the object in a parallel area. Move Move object between two places in the area. Mark object with new proposed position. Replace Replace object with another within the same area. Insert object and mark both inserted object and replaced object as proposed replacement of each other.

Wie oben dargelegt wurde, kann der Vorschlagsbefehl SuggestCreate das Objekt erstellen, er markiert es aber auch als vorgeschlagene Einfügung. Dies bedeutet, dass vorgeschlagene Einfügungen den adressierbaren Bereich genau wie reguläre Einfügungen beeinflussen – zukünftige Befehle gehen von der Existenz der Objekte aus. Im Gegensatz zu einer regulären Löschung löscht SuggestDelete das Objekt tatsächlich nicht, sondern markiert es für die Löschung. Dadurch kann das ursprüngliche Objekt adressiert und verändert werden, bis der Vorschlag angenommen oder abgelehnt wird. SuggestModify bewahrt eine Reihe von parallel vorgeschlagenen Eigenschaften für ein Objekt auf. Hinweis: keiner der Framework-Befehle benötigt Vorschlagsversionen. Die Dokumentenvorlage kann dann den Vorschlagsbefehl ausführen, um bei 206 den Bearbeitungsvorschlag vorzulegen. As stated above, the SuggestCreate suggestion command can create the object, but it also marks it as a suggested insertion. This means that proposed inserts affect the addressable area just like regular inserts - future instructions assume the existence of the objects. In contrast to a regular deletion SuggestDelete actually does not delete the object, but marks it for deletion. This allows the original object to be addressed and changed until the proposal is accepted or rejected. SuggestModify preserves a set of parallel suggested properties for an object. Note: none of the framework commands require proposal versions. The template can then execute the suggestion command at 206 to submit the processing proposal.

Weiter mit 2B, nach der Vorlage des Änderungsvorschlags bei der Dokumentenvorlage bei 207 gibt es ähnlich wie bei den Vorschlagsbefehlen für jeden Befehl entsprechende Befehle zum Annehmen und Ablehnen. Wenn eine Benutzerrückmeldung als Reaktion auf den Bearbeitungsvorschlag bei 208 eingeht, und wenn die Annahme bei 209 angezeigt wird, kann die Dokumentenvorlage auf diese Weise den Bearbeitungsvorschlag in eine angenommene Bearbeitung bei 210 umwandeln und die Dokumentenvorlage bei 211 aktualisieren. Ein auf der Basis der angenommenen Bearbeitung aktualisiertes Dokument kann für die Benutzer bei 212 veröffentlicht werden. Wenn andererseits bei 209 eine Ablehnung angezeigt wird, kann der Bearbeitungsvorschlag bei 213 aus dem Dokument entfernt werden. Das Beispiel für das Annehmen oder Ablehnen der Semantik wird unten in Tabelle 3 dargestellt: Tabelle 3: Beispiel Semantik Annehmen/Ablehnen Befehl Semantik anwenden Semantik vorschlagen Semantik annehmen Semantik ablehnen Erstellen Objekt einfügen Objekt einfügen und als vorgeschlagene Einfügung markieren. Markierung als vorgeschlagene Einfügung aufheben. Objekt löschen. Löschen Objekt löschen Objekt als vorgeschlagene Löschung markieren. Objekt löschen. Markierung als vorgeschlagene Löschung aufheben. Modifizieren Die dem Objekt zugeordnete Eigenschaft modifiziere n. Objekteigenschaft in Parallelbereich ändern. Eigenschaft in echtem Bereich ändern und Parallel-Änderung entfernen. Änderung der Eigenschaft in Parallelbereich entfernen. Verschieben Objekt zwischen zwei Orten im Bereich verschieben. Objekt mit neuer vorgeschlagener Position kennzeichnen. Kennzeichnung entfernen und Objekt tatsächlich auf diese Position bewegen. Kennzeichnung entfernen Ersetzen Objekt durch ein anderes innerhalb desselben Bereichs ersetzen. Objekt einfügen und sowohl das eingefügte Objekt als auch das ersetzte Objekt als vorgeschlagenen Ersatz des jeweils anderen markieren. Ersetztes Objekt löschen und Markierung als eingefügtes Objekt aufheben. Eingefügtes Objekt löschen und Markierung als ersetztes Objekt aufheben. Continue with 2 B , after submission of the proposed amendment to the template 207 Similar to the suggestion commands, there are corresponding accept and reject commands for each command. If a user feedback in response to the edit proposal at 208 comes in, and if the acceptance at 209 is displayed, the document template can in this way at the processing proposal in an accepted processing 210 convert and the document template 211 To update. An updated document based on the accepted processing may be provided to the users 212 to be published. On the other hand, if 209 If a rejection is displayed, the processing suggestion can be 213 be removed from the document. The example of accepting or declining the semantics is shown in Table 3 below: Table 3: Example of accept / decline semantics command Apply semantics Suggest semantics Accept semantics Reject semantics Create Insert object Insert object and mark as proposed insertion. Cancel mark as suggested insertion. Delete object. Clear Delete object Mark object as suggested deletion. Delete object. Cancel marking as proposed deletion. Modify The property associated with the object modifies n. Change object property in parallel area. Change property in real area and remove parallel change. Remove property change in parallel area. Move Move object between two places in the area. Mark object with new proposed position. Remove the marking and actually move the object to this position. Remove marking Replace Replace object with another within the same area. Insert an object and mark both the inserted object and the replaced object as the proposed replacement of each other. Delete the replaced object and deselect it as an inserted object. Delete inserted object and unmark as replaced object.

In Tabelle 3 kann man sehen, dass AcceptCreate die Markierung des Objekts als vorgeschlagene Einfügung aufheben kann und es damit regulär eingefügten Objekten gleichstellt. RejectCreate kann das Objekt löschen. Ganz ähnlich löscht AcceptDelete das Objekt, und RejectDelete hebt seine Markierung als vorgeschlagene Löschung auf. AcceptModify verschiebt die parallelen Eigenschaften in die regulären Eigenschaften für dieses Objekt. Dies überschreibt die regulären Eigenschaften und entfernt die parallelen Eigenschaften. RejectModify kann die parallelen Eigenschaften entfernen.  In Table 3, you can see that AcceptCreate can unmark the object as a suggested insertion, making it equal to regularly inserted objects. RejectCreate can delete the object. Similarly, AcceptDelete deletes the object and RejectDelete deselects it as a suggested deletion. AcceptModify shifts the parallel properties into the regular properties for this object. This overrides the regular properties and removes the parallel properties. RejectModify can remove the parallel properties.

Jeder Vorschlagsbefehl hat eine ID, so dass mehrere Befehle konzeptuell als ein einziger Vorschlag verlinkt werden können. Diese IDs werden in der Vorlage in der folgenden Form aufbewahrt:

  • • Wenn Objekte als vorgeschlagene Einfügung oder Löschung markiert sind, wird diesem Vorschlag eine ID zugewiesen. Objekte können mehrere IDs für vorgeschlagene Einfügungen oder Löschungen besitzen.
  • • Wenn Eigenschaften für ein Objekt vorgeschlagen werden, werden diese in einem parallelen Bereich modifiziert. Dieser Bereich ist mit einer ID verknüpft, so dass mehrere Eigenschaftsänderungen innerhalb eines einzigen Vorschlags zusammengehalten werden. Objekte können mehrere parallele Bereiche für Eigenschaftsmodifizierungen besitzen.
  • • Wenn Verschiebungen vorgeschlagen werden, bleibt das Objekt an seinem Platz und wird mit dem neuen vorgeschlagenen Index gekennzeichnet. Dieser Index ist mit einer Vorschlags-ID verknüpft, so dass mehrere Vorschlags-IDs verschiedene Verschiebe-Indices vorschlagen können.
  • • Wird ein Ersetzen vorgeschlagen, wird angrenzend an das ursprüngliche Objekt ein neues Objekt eingefügt, und beide werden als Ersatz für das jeweils andere gekennzeichnet. Diese Kennzeichnungen als Ersatz sind mit Vorschlags-IDs verknüpft.
Zusätzlich dazu haben Befehle zum Annehmen und Ablehnen von Vorschlägen ebenfalls eine ID. Mit dieser ID kann der Benutzer bestimmen, welche Vorschläge tatsächlich angenommen/abgelehnt werden, und zwar für die Fälle, bei denen mehrere Vorschläge für dieselbe Löschung oder dieselbe Eigenschaftsänderung vorliegen. Hinweis: Vorschlags-IDs sind dafür ausreichend zu kennzeichnen, was für Anwendungszwecke angenommen oder abgelehnt wird. Jedoch könnten die vollständigen Befehlsdaten, wie etwa die Abstandshalter-Bereiche, benötigt werden, um richtig gegen diese Befehle transformieren zu können. Each suggestion command has an ID so that several commands can be conceptually linked as a single suggestion. These IDs are kept in the template in the following form:
  • • If objects are marked as proposed insertion or deletion, an ID is assigned to this proposal. Objects can have multiple IDs for suggested inserts or deletes.
  • • If properties are proposed for an object, they are modified in a parallel area. This area is linked to an ID so that multiple property changes are held together within a single proposal. Objects can have multiple parallel areas for property modifications.
  • • If shifts are suggested, the object remains in place and is marked with the new proposed index. This index is linked to a suggestion ID so that multiple suggestion IDs can suggest different relocation indices.
  • • If a replacement is suggested, a new object is inserted adjacent to the original object, and both are marked as substitutes for the other. These substitutions are linked to suggestion IDs.
In addition, commands to accept and reject proposals also have an ID. With this ID, the user can determine which proposals are actually accepted / rejected for those cases where there are multiple proposals for the same deletion or property change. Note: Suggestion IDs are sufficient to mark what is accepted or denied for use. However, the complete instruction data, such as the spacer areas, might be needed to properly transform against these instructions.

Das folgende Beispiel liefert Beispiel-Befehle für SuggestCreate und SuggestDelete:

  • 1. Das Einfügen von Text vorschlagen: a. SuggestlnsertSpacers(ID: „a", Kennung: 5, Abstandshalter: „hello")
  • 2. Das Löschen von Text vorschlagen: a. SuggestDeleteSpacers(ID: "b", Start: 10, Ende: 20)
  • 3. Den ersten Vorschlag annehmen: a. AcceptlnsertSpacers(ID: "a", Start: 5, Ende: 9)
  • 4. Den zweiten Vorschlag ablehnen: a. RejectDeleteSpacers(ID: "b", Start: 10, Ende: 20)
The following example provides example commands for SuggestCreate and SuggestDelete:
  • 1. Suggest the insertion of text: a. SuggestlnsertSpacers (ID: "a", identifier: 5, spacer: "hello")
  • 2. Suggest the deletion of text: a. SuggestDeleteSpacers (ID: "b", start: 10, end: 20)
  • 3. Accept the first proposal: a. AcceptlnsertSpacers (ID: "a", start: 5, end: 9)
  • 4. Reject the second proposal: a. RejectDeleteSpacers (ID: "b", start: 10, end: 20)

In einem weiteren Beispiel kann eine Anwendung von SuggestModify in der folgenden Tabelle dargestellt werden: Tabelle 4. Beispiele für Vorschlagsfunktionen

Figure DE202015009277U1_0002
Figure DE202015009277U1_0003
In another example, an application of SuggestModify can be represented in the following table: Table 4. Examples of suggestion functions
Figure DE202015009277U1_0002
Figure DE202015009277U1_0003

Die Umkehrung der Befehle Vorschlagen, Annehmen und Ablehnen kann durchgeführt werden. Da es sich um reguläre Befehle handelt, brauchen die Befehle Vorschlagen, Annehmen und Ablehnen Umkehrungen zur Unterstützung des Rückgängig-Machens dieser Operationen. Die Vorschlags- und Ablehnungsbefehle sind Umkehrungen voneinander, da Vorschlagen einen Vorschlag kreiert und Ablehnen ihn löscht, wie in der folgenden Tabelle dargestellt: Tabelle 5. Beispiel Ablehnungs-Semantik Befehl Semantik anwenden Beispiele Erstellen Objekt einfügen und als vorgeschlagene Einfügung markieren Objekt löschen Löschen Objekt als vorgeschlagene Löschung markieren. Markierung als vorgeschlagene Löschung aufheben. Modifizieren Die dem Objekt zugeordnete Eigenschaft in einem Parallelbereich ändern. Änderung der Eigenschaft in Parallelbereich entfernen. Verschieben Objekt mit neuer vorgeschlagener Position kennzeichnen. Kennzeichnung entfernen. Ersetzen Objekt einfügen und sowohl das eingefügte Objekt als auch das ersetzte Objekt als vorgeschlagenen Ersatz des jeweils anderen markieren. Eingefügtes Objekt löschen und Markierung des ersetzten Objekts aufheben. Reversing the suggest, accept, and reject commands can be performed. Because these are regular commands, the Suggest, Accept, and Reject commands require inversions to help undo these operations. The suggest and reject commands are inversions of each other because suggesting creates a proposal and rejecting it deletes it, as shown in the following table: Table 5. Example Reject semantics command Apply semantics Examples Create Insert object and mark as proposed insertion Delete object Clear Mark object as suggested deletion. Cancel marking as proposed deletion. Modify Change the property associated with the object in a parallel area. Remove property change in parallel area. Move Mark object with new proposed position. Remove marking. Replace Insert an object and mark both the inserted object and the replaced object as the proposed replacement of each other. Delete inserted object and deselect the replaced object.

Anwenden hat dennoch möglicherweise keine natürliche Umkehrung. Dies bedeutet, dass neue Befehle möglicherweise das Übernehmen eines Vorschlags umkehren müssen. Diese Befehle haben keine Umkehrungen. Alternativ kann die Umkehrung einer Annahme als die Umkehrung des ursprünglichen Befehls plus einem Vorschlag des ursprünglichen Befehls abgebildet werden. Hier kann ein Kompromiss zwischen der Anzahl der Befehle beobachtet werden, wenn für diese Befehle eine gute OT-Semantik vorliegt. Die folgende Tabelle zeigt die Umkehrsemantik für jeden Annahme-Befehl und wie diese als die Umkehrung des ursprünglichen Befehls plus einem Vorschlag abzubilden ist. Tabelle 6. Exemplarische Umkehrung der Annahme-Semantik Befehl Semantik annehmen Umkehrung der Annahme-Semantik Umkehrung des ursprünglichen Befehls plus Vorschlag Erstellen Markierung als vorgeschlagene Einfügung aufheben. Als vorgeschlagene Einfügung markieren. Objekt entfernen (Delete). Objekt einfügen und als vorgeschlagene Einfügung markieren (SuggestCreate). Löschen Objekt löschen. Objekt einfügen und zum Löschen markieren. Objekt einfügen (Create). Zum Löschen markieren (SuggestDelete). Modifizieren Eigenschaft in echtem Bereich modifizieren und parallele Modifikation entfernen. Ursprüngliche Eigenschaft in echtem Bereich wiederherstellen und parallele Modifikation wiederherstellen. Ursprüngliche Eigenschaft wiederherstellen (Modify). Eigenschaft in parallelem Bereich modifizieren (SuggestModify). Verschieben Kennzeichnung entfernen und Objekt tatsächlich an diese Position verschieben Objekt an seiner ursprünglichen Position wiederherstellen und vorgeschlagene Verschiebung wiederherstellen Objekt an seiner ursprünglichen Position wiederherstellen (Move). Vorgeschlagene Verschiebe-Kennzeichnung wiederherstellen. Ersetzen Ersetztes Objekt löschen und Markierung des eingefügten Objekts aufheben. Ersetztes Objekt wiederherstellen und ersetztes und ursprüngliches als vorgeschlagene Ersatzobjekte markieren. Eingefügtes Objekt durch ursprüngliches Objekt ersetzen (Replace). Objekt wieder einfügen und Objekte als vorgeschlagene Ersatzobjekte kennzeichnen (SuggestReplace). Nevertheless, applying may not have a natural reversal. This means that new commands may need to reverse the acceptance of a proposal. These commands have no inversions. Alternatively, the inverse of an assumption may be mapped as the inverse of the original command plus a suggestion of the original command. Here a compromise between the number of instructions can be observed if these instructions have good OT semantics. The following table shows the reverse semantics for each accept command and how to map this as the inverse of the original command plus a proposal. Table 6. Exemplary reversal of the assumption semantics command Accept semantics Reversal of assumption semantics Reversal of the original command plus proposal Create Cancel mark as suggested insertion. Mark as suggested insert. Remove object. Insert object and mark as proposed insertion (SuggestCreate). Clear Delete object. Insert object and mark it for deletion. Insert object (Create). Mark for deletion (SuggestDelete). Modify Modify property in real area and remove parallel modification. Restore original property in real area and restore parallel modification. Restore original property (Modify). Modify property in parallel area (SuggestModify). Move Remove the label and actually move the object to this position Restore the object to its original position and restore the suggested displacement Restore object to its original position (Move). Restore proposed shift tag. Replace Delete replaced object and deselect the inserted object. Replace the replaced object and select replaced and original as suggested replacement objects. Replace inserted object with original object (Replace). Insert object again and mark objects as suggested replacement objects (SuggestReplace).

Wie oben gezeigt speichert SuggestModify im Allgemeinen die vorgeschlagenen Eigenschaften getrennt von den tatsächlichen Eigenschaften ab. Wenn die Eigenschaften jedoch einen geschachtelten adressierbaren Bereich beinhalten, wie etwa eine Liste, kann dies problematisch sein. er ParagraphStyle enthält beispielsweise in eine Reihe von Tabulatoren. Wenn jemand das Einfügen (oder Löschen) eines Tabulators vorgeschlagen hat, kann dasselbe Verhalten wie reguläres Erstellen/Löschen erforderlich sein, und zwar aus denselben Gründen. Das Vorschlagen des Einfügens eines Tabulators muss diesen also in die tatsächliche Liste einfügen und als eingefügt markieren. Das Vorschlagen der Löschung eines Tabulators muss diesen als Löschung markieren. Deshalb kann das Verwenden von SuggestModify die Eigenschaft in einem parallelen Bereich nur anwenden, wenn sie sich nicht innerhalb eines geschachtelten Bereichs befindet. Andernfalls verwendet sie die übergreifende Semantik. Tabelle 7. Beispiel – Tabulatoren

Figure DE202015009277U1_0004
Figure DE202015009277U1_0005
As shown above, SuggestModify generally stores the proposed properties separately from the actual properties. However, if the properties include a nested addressable range, such as a list, this can be problematic. For example, ParagraphStyle contains a number of tabs. If someone has suggested inserting (or deleting) a tab, the same behavior as regular create / delete may be required for the same reasons. The suggestion of inserting a tabulator must therefore insert this into the actual list and mark it as inserted. Proposing the deletion of a tabulator must mark this deletion. Therefore, using SuggestModify can only apply the property in a parallel area if it is not within a nested area. Otherwise, it uses the overall semantics. Table 7. Example - Tabs
Figure DE202015009277U1_0004
Figure DE202015009277U1_0005

Wie alle Befehle werden Vorschlagsbefehle auf dem Client über das Bearbeitungssystem erstellt. Eines der Ziele dieser Integration ist es, dass einzelne Bearbeitungen nicht mit Vorschlägen in Verbindung stehen. Dies trägt zur Minimierung des Mehraufwands zur Unterstützung von Änderungsvorschlägen für neue Funktionen bei. Der Grundansatz ist es, jeden Befehl zu nehmen, der von der regulären Bearbeitung angewendet worden wäre, die Vorschlagsversion des Befehls zu erstellen und diese stattdessen zu übernehmen. Dies macht jedoch ein Problem sichtbar: Die Semantik des Vorschlagsbefehls ist nicht mit dem regulären Befehl identisch. Ein SuggestDelete löscht beispielsweise tatsächlich nicht das Objekt. Deshalb kann sich die Bearbeitung nicht auf die Verwendung von Befehlen verlassen, die bestimmte Änderungen am ModelState erzeugen. Um dies zu lösen, kann eine Kopie des ursprünglichen ModelState gemacht werden und die reguläre Bearbeitungsfunktion kann auf diese Kopie angewendet werden. Dies kann dafür sorgen, dass alle Annahmen der Bearbeitung darüber, wie sich der ModelState verändert, korrekt sind. Dann können diejenigen Befehle verwendet werden, die ursprünglich angewendet wurden, um die Vorschlagsversion eines jeden von diesen zu erzeugen. Jedoch kann aufgrund der unterschiedlichen Semantik jeder Vorschlagsbefehl auf der Basis von früheren Vorschlagsbefehlen angepasst werden. Befehle, die von einem DragDropEdit-Vorschlag erzeugt wurden, können beispielsweise beinhalten:

  • 1. DeleteSpacers(5, 10)
  • 2. InsertSpacers "hello" @ 50
Like all commands, suggestion commands are created on the client through the editing system. One of the goals of this integration is that individual edits are not related to suggestions. This helps to minimize overhead to support proposed changes to new features. The basic approach is to take any command that would have been applied by the regular edit, create the suggestion version of the command and apply it instead. However, this makes a problem visible: The semantics of the suggestion command is not identical to the regular command. For example, a SuggestDelete does not delete the object. Therefore, editing can not rely on the use of commands that make certain changes to ModelState produce. To solve this, a copy of the original ModelState can be made and the regular editing function can be applied to this copy. This can ensure that all assumptions about editing how the ModelState changes are correct. Then, those commands that were originally used to generate the default version of each of them can be used. However, due to the different semantics, each suggestion command may be adjusted based on previous suggestion commands. For example, commands generated by a DragDropEdit proposal may include:
  • 1. DeleteSpacers (5, 10)
  • 2. InsertSpacers "hello" @ 50

Vorschlagsversionen dieser Befehle können beinhalten:

  • 1. SuggestDeleteSpacers(5, 10)
  • 2. SuggestlnsertSpacers "hello" @ 56
Suggested versions of these commands can include:
  • 1. SuggestDeleteSpacers (5, 10)
  • 2. SuggestionSpacers "hello" @ 56

Um die Vorschlagsversion der Befehle zu erzeugen, kann folgendes durchgeführt werden:

  • 1. SuggestDeleteSpacers(5, 10) aus DeleteSpacers(5, 10) erzeugen.
  • 2. Aus SuggestDeleteSpacers den passenden Transformationsbefehl erzeugen.
  • 3. SuggestlnsertSpacers "hello" @ 50 aus InsertSpacers "hello" @ 50 erzeugen.
  • 4. SuggestInsertSpacers gegen den Transformationsbefehl transformieren, ergibt SuggestlnsertSpacers "hello" @ 56.
To create the default version of the commands, the following can be done:
  • 1. Create SuggestDeleteSpacers (5, 10) from DeleteSpacers (5, 10).
  • 2. Create the appropriate transformation command from SuggestDeleteSpacers.
  • 3. Create SuggestionSpacers "hello" @ 50 from InsertSpacers "hello" @ 50.
  • 4. Transforming SuggestInsertSpacers against the transform command yields SuggestlnsertSpacers "hello" @ 56.

In einer Implementierung können exemplarische Objektklassen, die an einer Vorschlagsbearbeitungsumgebung für Dokumente beteiligt sind, eine ähnliche Form wie die folgenden Pseudo-Code-Segmente annehmen:

Figure DE202015009277U1_0006
Figure DE202015009277U1_0007
In one implementation, example object classes involved in a proposal editing environment for documents may take a similar form to the following pseudo-code segments:
Figure DE202015009277U1_0006
Figure DE202015009277U1_0007

Das Annehmen und Ablehnen von Vorschlägen wird auch über Bearbeitungen vorgenommen: über AcceptEdit und über RejectEdit. Diese Bearbeitungen können nur von Redakteuren durchgeführt werden. Sie werden ausgelöst, wenn annehmen/ablehnen aus dem Vorschlagskommentar gewählt wird. Die Bearbeitung erhält die Vorschlags-ID zum Annehmen/Ablehnen, und überprüft dann die Vorlage, um zu ermitteln, welche Änderungen mit dieser ID verknüpft sind. Die entsprechenden Befehle zum Annehmen/Ablehnen können dann auf diese Änderungen angewendet werden. Beachten: da dies vom Überprüfen der Vorlage und vom Erzeugen von Befehlen zum Annehmen/Ablehnen abhängt, gibt es keine gemeinsame Implementierung dieser Bearbeitungen. Exemplarische Objektklassen, die an der Annahme oder Ablehnung eines Vorschlags beteiligt sind, können eine ähnliche Form wie die folgenden Pseudo-Code-Segmente annehmen:

Figure DE202015009277U1_0008
Accepting and rejecting suggestions is also done via edits: AcceptEdit and RejectEdit. These edits can only be done by editors. They are triggered if accept / reject is selected from the suggestion comment. The edit receives the suggestion ID for accept / decline, and then checks the template to determine which changes are associated with that ID. The appropriate accept / decline commands can then be applied to these changes. Note: since this depends on checking the template and creating commands to accept / reject, there is no common implementation of these edits. Exemplary feature classes that participate in the acceptance or rejection of a proposal may take a similar form to the following pseudo-code segments:
Figure DE202015009277U1_0008

Bei einer Implementierung können die Vorschlagenden SuggestDeletes anstelle von regulären Deletes ausgeben, so dass Objekte zum Löschen markiert werden und nicht tatsächlich gelöscht werden. Wenn es sich jedoch um ein Objekt handelt, das ursprünglich vom selben Benutzer vorgeschlagen wurde, darf der Benutzer es löschen. Wenn ein Benutzer zum Beispiel das Einfügen von „dei Katze“ vorschlägt, kann er auf den Vorschlag zugreifen und den Tippfehler korrigieren. Dies wird dadurch erreicht, dass der entsprechende Befehl auf der Basis des aktuellen Kontexts von getSuggestCommand zurückgegeben wird. Um stärker eingeschränkte Semantiken zuzulassen, kann eine eigener Befehl für Vorschlagende erstellt werden, eine Bewertung herauszugeben und dann zu verwenden, um sicherzustellen, dass sie keine beliebigen Objekte löschen können. In one implementation, suggestors may issue SuggestDeletes instead of regular deletes so that objects are marked for deletion rather than actually deleted. However, if it is an object originally proposed by the same user, the user is allowed to delete it. For example, if a user suggests inserting "the cat," he can access the suggestion and correct the typo. This is accomplished by returning the appropriate command based on the current context of getSuggestCommand. To allow more limited semantics, a custom suggestion handler can be created to give a score and then use it to make sure that it can not delete any objects.

Bei einer Implementierung kann die Access Control List (ACL), die dem Dokument zugewiesen ist, auf Vorschläge überprüft werden. Benutzer haben beispielsweise in der Kommentatoren-Rolle bereits die Möglichkeit, Befehle auf die Vorlage anzuwenden, so dass sie Befehle ausführen können, die die Position ihrer Kommentare nachverfolgen. Dennoch gibt es Einschränkungen auf die Befehle, die ausgeführt werden können, und zwar über die Oberfläche CommandPermissionChecker. Mit dem Vorschlagen von Änderungen sollte es leicht sein, diese Überprüfung durchzuführen, da es eine eigene Reihe von Befehlen gibt, die Vorschlagende ausgeben können:

  • • Vorschlagsbefehle, so dass sie Vorschläge machen können.
  • • Befehle zum Ablehnen, so dass sie Vorschläge rückgängig machen können (und womöglich zum Ablehnen ihrer eigenen Bearbeitungen).
  • • Den besonderen Lösch-Befehl zum Löschen innerhalb von Vorschlägen.
  • • MultiCommands und ReverseCommand (enthalten nur andere erlaubte Befehle).
  • • NullCommand.
In one implementation, the Access Control List (ACL) assigned to the document can be checked for suggestions. For example, users in the commentator role already have the ability to apply commands to the template so that they can execute commands that track the position of their comments. However, there are restrictions on the commands that can be executed through the CommandPermissionChecker interface. Suggesting changes should make it easy to perform this check because there is a separate set of commands that proposers can output:
  • • Suggestions so they can make suggestions.
  • • Reject commands so that they can undo suggestions (and possibly reject their own edits).
  • • The special deletion command for deleting within suggestions.
  • • MultiCommands and ReverseCommand (only contain other allowed commands).
  • • NullCommand.

Dies verhindert, dass Vorschlagende tatsächliche Änderungen am Dokument vornehmen können. Dennoch ist ein stärker einschränkender ACL-Überprüfungsmechanismus vorstellbar, wobei Vorschlagende daran gehindert werden können, auf gegenseitige Vorschläge einzuwirken. Dieser stärker einschränkende Überprüfungsmechanismus wird zurzeit nicht bei Kommentaren ausgeführt – Kommentatoren dürfen Kommentare für Ankerkommentare anwenden, unabhängig davon, wer der Eigentümer dieses Kommentars ist. Die Ausführung dieses stärker einschränkenden Überprüfungsmechanismus wäre kompliziert, da es Kenntnis darüber erfordert, wer der Eigentümer jeder Vorschlags-ID ist, was nicht als Teil der Dokumentenvorlage abgespeichert wird. Stattdessen werden diese Befehle zuverlässig nicht vom UI ausgegeben, und die ACL-Überprüfungen können basierend auf der Rolle, und nicht basierend auf dem Individuum durchgeführt werden. This prevents proposers from actually making changes to the document. Nonetheless, a more restrictive ACL review mechanism is conceivable, and proposers can be prevented from interacting with each other. This more restrictive review mechanism is currently not running on comments - commenters are allowed to comment on anchor comments, regardless of who owns the comment. The execution of this more restrictive verification mechanism would be complicated because it requires knowledge of who owns each proposal ID, which is not stored as part of the template. Instead, these instructions are reliably not output from the UI, and the ACL checks may be performed based on the role rather than on the individual.

Vorschläge von verschiedenen Benutzern, Accounts und/oder Vorschlags-IDs können zusammengeführt werden. Im Vorschlagsmodus erzeugen nicht alle Bearbeitungen Befehle mit neuen Vorschlags-IDs. Das Tippen eines Satzes sollte beispielsweise in verschiedenen Bearbeitungen einen einzigen Vorschlag erzeugen. Dies wird „zusammengeführte Vorschläge“ genannt. Da Vorschläge pauschal angenommen oder abgelehnt werden müssen, ermittelt das Zusammenführen diese Granularität. Eine exemplarische Zusammenführung von Vorschlägen wird im folgenden Beispiel dargestellt:

  • 1. Im Vorschlagsmodus ein Zeichen eingeben: a. SuggestlnsertSpacers(ID: „a", Kennung: 5, Abstandshalter: "h")
  • 2. Ein weiteres Zeichen eingeben: a. SuggestlnsertSpacers(ID: „a", Kennung: 6, Abstandshalter: "i") i. Hinweis: die ID ist dieselbe. Beide Einfügungen sind nun Teil desselben Vorschlags.
  • 3. Den Vorschlag annehmen: a. AcceptInsertSpacers(ID: "a", Start: 5, Ende: 6)
  • 4. oder den Vorschlag ablehnen: a. RejectInsertSpacers(ID: "a", Start: 5, Ende: 6)
Proposals from different users, accounts and / or proposal IDs can be merged. In suggestion mode, not all edits produce commands with new suggestion IDs. Typing a sentence should, for example, be a single suggestion in different edits produce. This is called "merged proposals". Since proposals must be accepted or denied on a flat-rate basis, merging determines this granularity. An example merge of proposals is shown in the following example:
  • 1. Enter a character in suggestion mode: a. SuggestlnsertSpacers (ID: "a", identifier: 5, spacer: "h")
  • 2. Enter another character: a. SuggestlnsertSpacers (ID: "a", identifier: 6, spacer: "i") i Note: the id is the same Both inserts are now part of the same suggestion.
  • 3. Accept the proposal: a. AcceptInsertSpacers (ID: "a", start: 5, end: 6)
  • 4. or reject the proposal: a. RejectInsertSpacers (ID: "a", start: 5, end: 6)

Vor der Ausführung eines Befehls kann die Vorlage überprüft werden, um zu ermitteln, mit welchem Vorschlag, falls überhaupt, dieser Befehl zusammengeführt würde. Wenn alle Befehle in einer Bearbeitung Vorschlags-IDs ergeben, deren Eigentümer der aktuelle Benutzer ist, dann können diese Vorschlags-IDs verwendet werden. Andernfalls kann eine neue Vorschlags-ID erzeugt werden. Werden IDs auf diese Weise überprüft, können Fälle wie etwa Drag/Drop und Finden über Vorschläge hinweg unterstützt und ersetzt werden. Die folgenden Beispiele stellen den Prozess der Zusammenführung dar: Tabelle 8. Beispiel: Zusammengeführte Vorschläge Befehle in der Bearbeitung Zusammenführungs-ID Zusammenführen? Ergebnis Vorschlagsbefehl ApplyStyle innerhalb von Vorschlag A, dessen Eigentümer der aktuelle Benutzer ist A Ja SuggestApplyStyle(A) ApplyStyle innerhalb des regulären Textes Null Nein SuggestApplyStyle(new ID) ApplyStyle innerhalb von Vorschlag B, dessen Eigentümer jemand anderer ist B Nein SuggestApplyStyle(new ID) ApplyStyle auf Vorschlag A und normalen Text Null Nein SuggestApplyStyle(new ID) 1) ApplyStyle innerhalb von Vorschlag A, dessen Eigentümer der aktuelle Benutzer ist 2) ApplyStyle innerhalb von Vorschlag B, dessen Eigentümer der aktuelle Benutzer ist 1) A 2) B Ja 1) SuggestApplyStyle(A) 2) SuggestApplyStyle(B) Before executing a command, the template can be checked to determine which proposal, if any, would merge this command. If all the commands in an edit result in proposal IDs owned by the current user, then these default IDs can be used. Otherwise, a new proposal ID can be generated. By validating IDs in this way, cases such as drag / drop and find across proposals can be supported and replaced. The following examples illustrate the merge process: Table 8. Example: Merged proposals Commands in editing Merge ID Merge? Result proposal command ApplyStyle within Proposition A, which is owned by the current user A Yes SuggestApplyStyle (A) ApplyStyle within the regular text zero No SuggestApplyStyle (new ID) ApplyStyle within Proposition B, owned by someone else B No SuggestApplyStyle (new ID) ApplyStyle on Proposition A and normal text zero No SuggestApplyStyle (new ID) 1) ApplyStyle within Proposition A whose owner is the current user 2) ApplyStyle within Proposal B owned by the current user 1) A 2) B Yes 1) SuggestApplyStyle (A) 2) SuggestApplyStyle (B)

Ein Problem bei dieser Vorgehensweise ist, dass sie es erfordert, die zusammengeführten Vorschlagsdaten zu berechnen, während die ursprünglichen Bearbeitungen in der Kopie des ModelState umgesetzt werden. Die zusammengeführten Vorschlagsdaten werden berechnet, bevor jede entpackte Anweisung ausgeführt wird, wie Umkehrung. Die zusammengeführten Vorschlagsdaten müssten auch aus der ursprünglichen Bearbeitung heraus zurückgegeben werden, wie die Rückgängig-Befehle. Ein Mechanismus, der ein ähnliches Muster implementiert, wie für die Umkehrung verwendet, kann übernommen werden, um die zusammengeführten Vorschlagsdaten zu berechnen und zurückzugeben. Ein Befehls-Präprozessor kann beispielsweise für die Zusammenführung der Vorschläge verwendet werden, und der Präprozessor kann ebenfalls für die Umkehrung angepasst werden.  A problem with this approach is that it requires compiling the merged suggestion data while translating the original edits into the copy of the ModelState. The merged suggestion data is calculated before any unpacked statement is executed, such as reversal. The merged suggestion data would also have to be returned out of the original edit, like the undo commands. A mechanism that implements a similar pattern to that used for the inversion can be applied to calculate and return the merged suggestion data. For example, a command preprocessor may be used to merge the suggestions, and the preprocessor may also be adapted for inversion.

Ein weiteres Beispiel für die Anwendung der Vorschlags-Dokumentenvorlage ist die Verarbeitung von zusammengesetzten Vorschlägen. Zusammengesetzte Vorschläge sind Vorschläge, die innerhalb von anderen Vorschlägen erzeugt werden. Ein Benutzer schlägt beispielsweise die Einfügung eines Satzes vor, und ein anderer Benutzer schlägt die Einfügung eines Worts innerhalb dieses Satzes vor. Aus der Perspektive der Bearbeitungsvorlage sehen zusammengesetzte Vorschläge genau wie zwei reguläre Vorschläge aus: mit zwei unabhängigen, einmaligen Vorschlags-IDs. Wenn es kein spezielles UI für das Zusammensetzen gibt, dann werden diese Vorschläge einfach als zwei unterschiedliche Vorschläge in den Kommentaren angezeigt, aber als sich überschneidende Bereiche im kollaborativen Dokument, sehr ähnlich wie zurzeit die sich überschneidenden Kommentare. Redakteure hätten die Möglichkeit, den innersten Vorschlag unabhängig von dem äußersten Vorschlag anzunehmen. Dies verhält sich genau so, als ob die Redakteure die Änderungen selbst vornehmen würden. Wenn für die Zusammenführung von Vorschlägen ein eigenes UI verwendet wird, kann die Beziehung zwischen den Vorschlags-IDs an einem anderen Ort gespeichert werden. Das aktuelle UI schlägt beispielsweise vor, zusammengesetzte Vorschläge innerhalb eines einzelnen Kommentars anzuzeigen, also kann diese Beziehung in den Kommentaren gespeichert werden. Another example of using the proposal template is the processing of composite proposals. Compound proposals are suggestions that are made within other proposals. For example, one user suggests inserting one sentence and another user suggests inserting a word within that sentence. From the perspective of the edit template, compound proposals look just like two regular proposals: with two independent, unique suggestion IDs. If there is no specific UI for compositing, then these suggestions will simply appear as two different suggestions in the comments, but as overlapping areas in the collaborative document, much like the overlapping comments at the moment. Editors would be able to accept the innermost proposal, regardless of the outermost suggestion. This is exactly as if the editors were making the changes themselves. If a UI is used to merge proposals, the relationship between the proposal IDs can be stored in a different location. For example, the current UI suggests displaying compound suggestions within a single comment, so this relationship can be stored in the comments.

Um zu ermitteln, ob ein Bearbeitungsvorschlag mit einer weiteren Bearbeitung zusammengesetzt werden soll, kann ein Mechanismus, der dem oben erwähnten zur Bestimmung der Zusammenführung ähnelt, verwendet werden. Angesichts der Reihe der Vorschlags-IDs für jeden Befehl kann eine ähnliche Heuristik verwendet werden: Wenn alle IDs gleich sind, und der aktuelle Benutzer nicht der Eigentümer des Vorschlags ist, dann kann die spezielle Vorschlags-ID zusammengesetzt werden. In order to determine whether to assemble a processing proposal with further processing, a mechanism similar to the one mentioned above for determining the combination can be used. Given the number of suggestion IDs for each instruction, a similar heuristic can be used: if all the IDs are the same and the current user is not the owner of the proposal, then the particular suggestion ID can be assembled.

Ein weiteres Beispiel für die Verwendung der Vorschlags-Dokumentenvorlage ist es, Wechselvorschläge zu verarbeiten. Wechselvorschläge sind Vorschläge, die im Konflikt miteinander stehen. Wenn beispielsweise ein Benutzer die Löschung eines Satzes vorschlägt, während ein weiterer Benutzer die Einfügung eines Wortes in diesen Satz vorschlägt. Für Wechselvorschläge wird kein besonderer Speicherplatz bereitgestellt. Wenn ein eigenes UI für Wechselvorschläge gewünscht wird, können die Wechselvorschläge auf der Client-Seite erkannt werden, indem die Vorlage überprüft wird. Another example of using the proposal template is to process change proposals. Change proposals are proposals that conflict with each other. For example, if one user suggests deleting one sentence while another user suggests inserting a word into that sentence. There is no special storage space available for bills of exchange. If you want to have your own UI for bills of exchange, the bills of exchange on the client side can be identified by checking the template.

Die Dokumentenvorlage kann ein UI bereitstellen, um dem Benutzer Vorschläge zu präsentieren, z. B. einen „Ansichtsmodus“. Die Dokumentenvorlage kann im „Lesemodus“ den Status der Vorlagenvorschläge lesen und entsprechend wiedergeben. Sie kann beispielsweise ermitteln, dass bestimmte Abstandshalter vorgeschlagene Einfügungen sind, und sie in der Kollaborativ-Farbe für den Benutzer wiedergeben, der den Vorschlag gemacht hat. Alternativ kann sie ermitteln, dass bestimmte Abstandshalter vorgeschlagene Löschungen sind, und beide als durchgestrichen und in der entsprechenden Farbe wiedergeben. The template may provide a UI to present suggestions to the user, e.g. B. a "view mode". The document template can read the status of template suggestions in "read mode" and play back accordingly. For example, it can determine that certain spacers are suggested inserts and render them in the collaborative color for the user who made the proposal. Alternatively, it can determine that certain spacers are suggested deletions, and render both as crossed out and in the corresponding color.

Ein Vorschlag kann in den Kommentaren Begleitdaten haben, und ein Kommentar wird für jeden Vorschlag angezeigt. Die Kommentare speichern die folgenden Basisdaten abgekoppelt von der Vorschlags-ID:

  • 1. Benutzer, der den Vorschlag gemacht hat.
  • 2. Zeitstempel des Vorschlags.
  • 3. Einige Metadaten, die erklären, worum es sich bei dem Vorschlag handelt.
  • 4. Ob der Vorschlag angenommen oder abgelehnt wurde.
A suggestion may have companion data in the comments, and a comment will be displayed for each suggestion. The comments store the following basic data decoupled from the proposal ID:
  • 1. User who made the proposal.
  • 2. Timestamp of the proposal.
  • 3. Some metadata that explains what the proposal is about.
  • 4. Whether the proposal was accepted or rejected.

Benutzer dürfen Vorschläge kommentieren wie bei regulären Kommentaren. Zusätzlich dazu verfügen Vorschläge über Schaltflächen, die es den Redakteuren ermöglichen, sie anzunehmen/abzulehnen. Wenn dies passiert, wird der Befehls-Thread gekennzeichnet, sehr ähnlich dem Lösen und erneuten Öffnen von Kommentaren. Vorschlagskommentare enthalten Text, der erklärt, was der Vorschlag macht. Dies wird von den Metadaten abgeleitet. Die Metadaten sind strukturiert und spezifisch für die App, obwohl einige auch allgemeiner Natur sein können. Beispiele möglicher Metadaten können eine Form annehmen, die der folgenden ähnlich ist:

Figure DE202015009277U1_0009
Zusätzliche Daten zur Unterstützung von zusammengesetzten Vorschlägen können eingegeben werden. Kopieren und Einfügen beachtet zusätzlich dazu, was mit den Kommentars-Daten geschieht. Users may comment on suggestions as with regular comments. In addition, proposals have buttons that allow editors to accept / reject them. When this happens, the command thread will be flagged, much like opening and reopening comments. Suggestions contain text that explains what the proposal does. This is derived from the metadata. The metadata is structured and specific to the app, though some may be generic. Examples of possible metadata may take a form similar to the following:
Figure DE202015009277U1_0009
Additional data for supporting composite proposals can be entered. Copy and Paste also notes what happens to the comment data.

Ein weiteres Anwendungsbeispiel für die Vorschlags-Dokumentenvorlage ist die Bearbeitung von Metadaten. Um die Metadaten eines Vorschlags zu generieren, kann die EditMetadata-Funktion aufgerufen werden, die diesem Zweck bereits dient, um Bearbeitungen für den Zugriff zu verbalisieren. EditMetadata gibt Details dazu an, was genau die Bearbeitung macht. Die Klasse pro Bearbeitung, die mit den Metadaten die entsprechenden Kommentare erzeugt, kann übernommen werden. Another application example for the proposal template is the editing of metadata. To generate the metadata of a proposal, you can call the EditMetadata function, which already serves this purpose to verbalize edits for access. EditMetadata gives details on what exactly the editing is doing. The class per edit, which generates the corresponding comments with the metadata, can be adopted.

Reguläre Bearbeitungen in den Vorschlägen können über die Dokumentenvorlage ausgeführt werden. Benutzer im Bearbeitungsmodus dürfen alles, inklusive Vorschläge, beeinflussen. Wenn ein Redakteur einen Vorschlag ändert, wird diese Änderung sofort umgesetzt – sie wird nicht zusammengesetzt oder als Vorschlag erzeugt. Um die Autorenschaft darüber, wer tatsächlich was vorschlägt, nachverfolgen zu können, kann der Kommentar mit Text versehen werden, der erklärt, was der Redakteur getan hat. Dies kann dadurch erfolgen, dass die Metadaten für die Bearbeitung erzeugt und an den Kommentar-Thread für diesen Vorschlag angehängt werden. Regular edits in the proposals can be executed via the template. Users in edit mode can influence everything, including suggestions. If an editor changes a suggestion, that change will be implemented immediately - it will not be compounded or produced as a suggestion. In order to track authorship over who actually suggests what, the commentary can be provided with text explaining what the editor has done. This can be done by creating the metadata for editing and appending it to the comment thread for this proposal.

Ein weiteres Anwendungsbeispiel für die Vorschlags-Dokumentenvorlage ist das Filtern von Vorschlägen. 3 liefert exemplarische Ablaufdiagramme, die Merkmale der Vorgehensweise beim Filtern von Vorschlägen für eine Dokumentenvorlage darstellen. Another application example for the default document template is the filtering of proposals. 3 provides exemplary flowcharts that illustrate features of the procedure for filtering proposals for a template.

Die Dokumentenvorlage O 301 kann einen Modus bereitstellen, wobei Redakteure Vorschläge herausfiltern können. Diese Filter können nach Benutzer oder Vorschlagstyp (Einfügungen, Formatierungen etc.) organisiert sein. Um Flexibilität dabei zu gewähren, welche Filter genau unterstützt werden können, kann Filtern zugelassen werden, indem eine willkürliche Reihe von Befehlen ausgeführt wird und dann die Client- und Server-Befehle transformiert werden, während sie hin und zurückgesendet werden. Um einen Filter zu erstellen, kann ein Befehl C 302 auf die Vorlage O 301 angewendet werden. Dies erzeugt eine neue Vorlage M 303, die für Client-Ansicht und -Controller verwendet werden kann, und die dafür sorgt, dass die Client- und Steuerungs-Logik unabhängig von der Filterung unverändert bleiben. The template O 301 can provide a mode where editors can filter out suggestions. These filters can be organized by user or proposal type (inserts, formatting, etc.). To give flexibility in which filters can be accurately supported, filtering can be allowed by executing an arbitrary series of commands and then transforming the client and server commands as they are sent back and forth. To create a filter, a command C 302 on the template O 301 be applied. This creates a new template M 303 , which can be used for client view and controller, and ensures that the client and control logic remain unchanged regardless of filtering.

Bei der Erzeugung der Filter-Anweisung C 302 kann auch die Umkehrung I(C) 304 erzeugt werden. Zusätzlich dazu können zwei Vorlagen, 301 und 303, behalten werden: die ursprüngliche Vorlage 301 vor dem Filtern und die neue Vorlage 303 nach dem Filtern. Diese beiden Vorlagen können es ermöglichen, beim Transformieren die entsprechenden Umkehrungen zu erzeugen. When generating the filter statement C 302 can also be the inverse I (C) 304 be generated. In addition to this, two templates, 301 and 303 to be kept: the original template 301 before filtering and the new template 303 after filtering. These two templates can allow you to create the corresponding inversions when transforming.

Der Filter-Algorithmus kann auf ähnliche Weise wie im Folgenden dargestellt funktionieren (dargestellt in 3(a)):

  • 1. Die Filter-Anweisung C 302 erzeugen.
  • 2. Die Filter-Umkehrungsanweisung I(C) 304 durch reguläre Umkehrung erzeugen.
  • 3. Vorlage kopieren und dabei die ursprüngliche O 301 und die Kopie M 303 behalten, die zur neuen Vorlage wird.
  • 4. Befehl C 302 auf die neue Vorlage M 303 anwenden.
The filter algorithm can work in a similar way as shown below (shown in 3 (a) ):
  • 1. The filter statement C 302 produce.
  • 2. The Filter Reversal Instruction I (C) 304 generate by regular inversion.
  • 3. Copy the template while keeping the original O 301 and the copy M 303 which becomes the new original.
  • 4. Command C 302 to the new template M 303 apply.

Jede vom Client-Controller erzeugte Anweisung kann direkt auf M angewendet werden. Um diese Befehle zum Server zu senden, müssen sie gegen I(C) transformiert werden. In einem Beispiel kann der volle Algorithmus wie folgt ausgeführt werden (dargestellt in 3(b)):

  • 1. Befehl X 305 auf die Vorlage M 303 anwenden. Dies ergibt die neue Vorlage M‘ 307.
  • 2. X 305 gegen I(C) 304 transformieren, was X‘ 309 und I(C)‘ 310 ergibt.
  • 3. X‘309 auf die ursprüngliche Vorlage O 301 anwenden. Dies ergibt die neue ursprüngliche Vorlage O‘ 312.
  • 4. X‘ 309 an den Server senden.
  • 5. Der neue Filter-Umkehrungsbefehl ist jetzt I(C)‘ 310.
  • 6. Den neuen Filter-Befehl durch Umkehren von I(C)‘ 310 erstellen.
Ähnlich dazu können alle Befehle, die vom Server eingehen, direkt auf O 301 angewendet werden. Um diese Clients auf M 303 anzuwenden, können sie gegen C 302 transformiert werden. In einem Beispiel kann der volle Algorithmus wie folgt ausgeführt werden (dargestellt in 3(c)):
  • 1. Befehl X 305 auf die ursprüngliche Vorlage O 301 anwenden. Dies ergibt die neue ursprüngliche Vorlage 0‘ 312.
  • 2. X 305 gegen C 302 transformieren, was X‘ 309 und C‘ 315 ergibt.
  • 3. X‘ 309 auf die Vorlage M 303 anwenden. Dies ergibt die neue Vorlage M‘ 307.
  • 4. Der neue Filterbefehl ist jetzt C‘ 315.
  • 5. Den neuen Filter-Umkehrungsbefehl durch Umkehren von C‘ 315 erzeugen.
Any instruction generated by the client controller can be applied directly to M. To send these commands to the server, they must be transformed to I (C). In one example, the full algorithm may be executed as follows (shown in FIG 3 (b) ):
  • 1. Command X 305 on the template M 303 apply. This gives the new template M ' 307 ,
  • 2. X 305 against I (C) 304 transform what X ' 309 and IC)' 310 results.
  • 3. X'309 to the original template O 301 apply. This gives the new original template O ' 312 ,
  • 4. X ' 309 send to the server.
  • 5. The new filter inversion command is now I (C) ' 310 ,
  • 6. The new filter command by reversing I (C) ' 310 create.
Similarly, all commands coming in from the server can go directly to O 301 be applied. To these clients on M 303 they can be used against C 302 be transformed. In one example, the full algorithm may be executed as follows (shown in FIG 3 (c) ):
  • 1. Command X 305 to the original template O 301 apply. This gives the new original template 0 ' 312 ,
  • 2. X 305 against C 302 transform what X ' 309 and C ' 315 results.
  • 3. X ' 309 on the template M 303 apply. This gives the new template M ' 307 ,
  • 4. The new filter command is now C ' 315 ,
  • 5. The new filter inversion command by reversing C ' 315 produce.

Um den Vorschlagsfilter aufzuheben, kann I(C) 304 auf die Vorlage M 303 angewendet werden, was sie nun zu einem Äquivalent der ursprünglichen Vorlage O 301 macht. Hinweis: anstelle der Verwendung der Umkehrung kann stattdessen die Vorlage M 303 durch die ursprüngliche Vorlage O 301 ersetzt werden. Dies bedeutet, dass I(C) 304 möglicherweise nicht angewendet werden muss, und stattdessen Auslassungsbefehle anstelle von Umkehrungen verwendet werden können. Auf diese Weise kann der Transformationsschicht kein Zugriff auf die ursprüngliche Vorlage gegeben werden. Dennoch kann die ursprüngliche Vorlage auf dem neuesten Stand gehalten werden, da sie zur Stabilisierung verwendet werden kann. To cancel the default filter, I (C) 304 on the template M 303 what they now become an equivalent of the original template O 301 power. Note: instead of using the inversion, the template M 303 through the original template O 301 be replaced. This means that I (C) 304 may not need to be applied, and instead omission commands can be used instead of inversions. In this way, the transformation layer can no access to the original template will be given. Nevertheless, the original template can be kept up to date as it can be used for stabilization.

Ein weiteres Beispiel für die Verwendung der Vorschlags-Dokumentenvorlage ist die Implementierung von Server-Änderungen. Vorschläge sind nur für Benutzer im Bearbeitungs- oder Kommentarmodus sichtbar. Ansichts-, Vorschau- und Veröffentlichungsmodi können keine Vorschläge anzeigen. Dies kann eine ähnliche Logik wie beim Filtern auf Server-Seite erforderlich machen. Der Server kann in der Lage sein, eine Vorlage zu produzieren, aus der die Vorschläge gestrichen wurden, und wann diese Vorlage anstelle der regulären Vorlage benutzt werden sollte. Beispiele, wobei Vorschläge entfernt werden können, beinhalten:

  • 1. Ansichts-, Vorschau- und Veröffentlichungsmodi.
  • 2. Export.
  • 3. Indizierbaren Text und Thumbnails.
Another example of using the suggestion template is the implementation of server changes. Suggestions are visible only to users in Edit or Comment mode. View, preview, and publish modes can not display suggestions. This may require similar logic to server-side filtering. The server may be able to produce a template from which the suggestions have been deleted, and when that template should be used instead of the regular template. Examples where suggestions may be removed include:
  • 1. View, preview, and publish modes.
  • 2. Export.
  • 3. Indexable text and thumbnails.

Hinweis: für einige der o.g. Fälle, wie etwa Export und indizierbaren Text, kann abhängig von der Zugriffsebene eine andere Logik implementiert werden, um einen Funktionalitätsverlust zu verhindern. Note: for some of the above. Cases such as export and indexable text, depending on the level of access, may implement a different logic to prevent loss of functionality.

Vorgeschlagene Einfügungen werden dadurch dargestellt, dass ein Textbereich mit einer vorgeschlagenen Einfügungs-ID markiert wird. Einfügungen von Absätzen werden ähnlich dargestellt – die Absatzmarke wird für die Einfügung markiert. Nachstehend ein exemplarisches Pseudo-Code-Segment der Einfügung „hello“ als nachverfolgte Änderung in einem Extensible Markup Language (XML) Format.

Figure DE202015009277U1_0010
Suggested insertions are represented by marking a text area with a proposed insertion ID. Insertions of paragraphs are displayed similarly - the paragraph mark is marked for insertion. Below is an exemplary pseudo-code segment of the "hello" insertion as a tracked change in an Extensible Markup Language (XML) format.
Figure DE202015009277U1_0010

Die Markierung w:ins wird verwendet um anzugeben, dass ihr Inhalt für die Einfügung nachverfolgt wird. Die Markierung enthält ID (w:id), Autor (w:author) und Datum (w:date) der Änderung. Im obigen Beispiel enthält die Einfügung eine Textausführung (w:r) mit „hello“ als Text (w:t). Nachstehend ein exemplarisches Pseudo-Code-Segment der Einfügung eines Zeilenumbruchs nach „hello“ als nachverfolgte Änderung in einem XML-Format:

Figure DE202015009277U1_0011
The w: ins tag is used to indicate that its contents are tracked for insertion. The tag contains ID (w: id), author (w: author) and date (w: date) of the change. In the above example, the insertion contains a text execution (w: r) with "hello" as text (w: t). Below is an exemplary pseudo-code segment of inserting a newline after "hello" as a tracked change in an XML format:
Figure DE202015009277U1_0011

Die Markierung w:ins ohne Inhalt wird verwendet, um anzuzeigen, dass der Zeilenumbruch für die Einfügung markiert ist. Die Markierung enthält ID (w:id), Autor (w:author) und Datum (w:date) der Änderung.  The w: ins-content mark is used to indicate that the line break is marked for insertion. The tag contains ID (w: id), author (w: author) and date (w: date) of the change.

Ein weiteres Anwendungsbeispiel für die Vorschlags-Dokumentenvorlage ist die Verarbeitung von Löschungen im Text. Vorgeschlagene Löschungen werden dadurch dargestellt, dass ein Textbereich mit einer vorgeschlagenen Löschungs-ID markiert wird. Absatzlöschungen werden ähnlich dargestellt – die Absatzmarke wird für die Löschung markiert. Another application example for the proposal template is the processing of deletions in the text. Suggested deletions are represented by marking a text area with a proposed deletion ID. Paragraph deletions are displayed similarly - the Paragraph tag is marked for deletion.

Nachstehend ein exemplarisches Pseudo-Code-Segment der Markierung von „hello“ als nachverfolgte Löschung ein einem XML-Format.

Figure DE202015009277U1_0012
Below is an exemplary pseudo-code segment of the "hello" tag as a traced deletion in an XML format.
Figure DE202015009277U1_0012

Die Markierung w:del wird verwendet um anzugeben, dass ihr Inhalt für die Löschung nachverfolgt wird. Die Markierung enthält ID (w:id), Autor (w:author) und Datum (w:date) der Änderung. Im obigen Beispiel enthält die Löschung eine Textausführung (w:r) mit „hello“ als Text (w:delText). Nachstehend ein exemplarisches Pseudo-Code-Segment der Markierung des Zeilenumbruchs nach „hello“ als nachverfolgte Löschung in einem XML-Format.

Figure DE202015009277U1_0013
The w: del flag is used to indicate that its content is being tracked for deletion. The tag contains ID (w: id), author (w: author) and date (w: date) of the change. In the example above, the deletion contains a text execution (w: r) with "hello" as text (w: delText). Below is an exemplary pseudo-code segment of the line break after "hello" as a traced deletion in an XML format.
Figure DE202015009277U1_0013

Die Markierung w:ins ohne Inhalt wird verwendet, um anzuzeigen, dass der Zeilenumbruch für die Löschung nachverfolgt wird. Die Markierung enthält ID (w:id), Autor (w:author) und Datum (w:date) der Änderung.  The w: ins-content flag is used to indicate that the carriage return is tracked for deletion. The tag contains ID (w: id), author (w: author) and date (w: date) of the change.

Vorgeschlagene Formatvorlagen werden über eine Zuordnung von der Vorschlags-ID zu den vorgeschlagenen Eigenschaften dargestellt. Diese Zuordnung wird auf einen Textbereich angewendet. Nachstehend ein exemplarisches Pseudo-Code-Segment der Anwendung von „bold“ als nachverfolgte Änderung in einem XML-Format. Dieses Wort ist bereits kursiv.

Figure DE202015009277U1_0014
Proposed styles are displayed by mapping from the proposal ID to the proposed properties. This mapping is applied to a text area. Below is an exemplary pseudo-code segment of the bold application as a tracked change in an XML format. This word is already italic.
Figure DE202015009277U1_0014

Es gibt eine Textausführung (w:r) mit einer Markierung für die Ausführungseigenschaften (w:Pr) und Text (w:t). Die Ausführungseigenschaften enthalten die aktuellen Eigenschaften einschließlich der nachverfolgten Änderung: fett (w:b) und kursiv (w:i). Sie enthalten auch eine Änderungsmarkierung für die Ausführungseigenschaften (w:PrChange), die die Eigenschaften vor der Anwendung des nachverfolgten Formats enthält, das nur kursiv ist (w:i). Die Markierung für die Eigenschaftsänderung enthält auch ID (w:id), Autor (w:author) und Datum (w:date) der Änderung.  There is a text execution (w: r) with a flag for the execution properties (w: Pr) and text (w: t). The execution properties include the current properties, including the tracked change: bold (w: b) and italics (w: i). They also include a change flag for the execution properties (w: PrChange) that contains the properties before using the tracked format, which is only italic (w: i). The property change flag also contains ID (w: id), author (w: author), and date (w: date) of the change.

Vorgeschlagene Absatzformate werden über eine Zuordnung von der Vorschlags-ID zu den vorgeschlagenen Eigenschaften dargestellt. Diese Zuordnung wird auf die Absatzmarke angewendet. Nachstehend ein exemplarisches Pseudo-Code-Segment der Anwendung von „center“ als nachverfolgte Änderung an einem Absatz, der „hello“ enthält, in einem XML-Format. Der Absatz enthielt bereits Zeilenabstandseinstellungen.

Figure DE202015009277U1_0015
Proposed paragraph formats are represented by a mapping from the proposal ID to the proposed properties. This mapping is applied to the paragraph mark. Below is an exemplary pseudo-code segment of the application of "center" as a tracked change to a paragraph containing "hello" in an XML format. The paragraph already contained line spacing settings.
Figure DE202015009277U1_0015

Es gibt eine Absatzausführung (w:p) mit einer Markierung für die Absatzeigenschaften (w:pPr) und einer Textausführung (w:r). Die Absatzeigenschaften enthalten die aktuellen Eigenschaften einschließlich der nachverfolgten Änderung: Zeilenabstand (w:spacing) und Ausrichtung (w:jc). Sie enthalten auch eine Änderungsmarkierung für die Ausführung der Eigenschaften (w:pPrChange), die die Eigenschaften vor der Anwendung des nachverfolgten Formats enthält, das nur Zeilenabstand ist (w:spacing). Die Markierung für die Eigenschaftsänderung enthält auch ID (w:id), Autor (w:author) und Datum (w:date) der Änderung.  There is a paragraph execution (w: p) with a paragraph for the paragraph properties (w: pPr) and a text version (w: r). The paragraph properties include the current properties, including the tracked change: line spacing (w: spacing) and orientation (w: jc). They also contain a change marker for the execution of the properties (w: pPrChange) that contains the properties before the application of the tracked format, which is just line spacing (w: spacing). The property change flag also contains ID (w: id), author (w: author), and date (w: date) of the change.

Vorgeschlagene Listenformate werden über eine Zuordnung von der Vorschlags-ID zu den vorgeschlagenen Eigenschaften dargestellt. Diese Zuordnung wird auf die Absatzmarke angewendet. Änderungsvorschläge, die sich auf die Listen-Entität auswirken, werden ebenfalls über eine Zuordnung von einer Vorschlags-ID auf Eigenschaften dargestellt. Diese Zuordnung wird auf die Listen-Entität angewendet. Suggested list formats are represented by a mapping from the proposal ID to the proposed properties. This mapping is applied to the paragraph mark. Modification proposals that affect the list entity are also displayed using an assignment from a proposal ID to properties. This mapping is applied to the list entity.

Nachstehend ein exemplarisches Pseudo-Code-Segment der Hinzufügung des Absatzes, der „hello“ enthält, zu einer Liste als nachverfolgte Änderung in einem XML-Format.

Figure DE202015009277U1_0016
Below is an exemplary pseudo-code segment of adding the paragraph containing "hello" to a list as a tracked change in an XML format.
Figure DE202015009277U1_0016

Es gibt eine Absatzausführung (w:p) mit einer Markierung für die Absatzeigenschaften (w:pPr) und einer Textausführung (w:r). Die Absatzeigenschaften enthalten die aktuellen Eigenschaften einschließlich der nachverfolgten Änderung: Anwendung des „ListParagraph“ genannten Formats (w:pStyle), und Hinzufügen des Absatzes zur Listen-ID „3“ (w:numId) auf Schachtelungsebene „0“ (w:i1v1). Sie enthalten auch eine Änderungsmarkierung für die Ausführungseigenschaften (w:pPrChange), die die Eigenschaften vor der Anwendung des nachverfolgten Formats enthält, das leer ist (w:pPr/). Die Markierung für die Eigenschaftsänderung enthält auch ID (w:id), Autor (w:author) und Datum (w:date) der Änderung.  There is a paragraph execution (w: p) with a paragraph for the paragraph properties (w: pPr) and a text version (w: r). The paragraph properties contain the current properties, including the tracked change: application of the format named "ListParagraph" (w: pStyle), and adding the paragraph to list ID "3" (w: numId) at nesting level "0" (w: i1v1) , They also include a change flag for the execution properties (w: pPrChange) that contains the properties before applying the tracked format that is empty (w: pPr /). The property change flag also contains ID (w: id), author (w: author), and date (w: date) of the change.

Eine weitere hier beschriebene Ausführungsform beinhaltet Systeme und Verfahren zum Zusammenführen von Bearbeitungen innerhalb eines kollaborativ bearbeiteten Dokuments. Ein Dokument-Editor kann Benutzern erlauben, Bearbeitungen als Vorschläge durchzuführen, die nachverfolgt werden können und vor der Übernahme ins Dokument angenommen oder abgelehnt werden. Diese Vorschläge liegen als deutlich erkennbare Änderungen am Dokument vor, die unabhängig voneinander angenommen oder abgelehnt werden können. Während ein Benutzer einzelne Aktionen durchführt, um das Dokument zu bearbeiten, wie etwa das Eingeben von Zeichen, ist es nicht wünschenswert, dass jede dieser Aktionen einzeln einen separaten Vorschlag erzeugt. Insbesondere, wenn ein Lektor eines Dokuments das Dokument öffnet und Bearbeitungsvorschläge für das Dokument erzeugt, sollten nicht alle Bearbeitungen Befehle mit neuen Vorschlags-Kennungen erzeugen. Das Tippen eines Satzes sollte beispielsweise in verschiedenen Bearbeitungen einen einzigen Vorschlag erzeugen. Diese werden zusammengeführte Vorschläge genannt, da der einzelne Vorschlag aus mehrteiligen Bearbeitungen oder Varianten entstand. Da Vorschläge pauschal angenommen oder abgelehnt werden müssen, ermittelt das Zusammenführen die Granularität für Vorschläge. Another embodiment described herein includes systems and methods for merging edits within a collaboratively edited document. A document editor may allow users to make edits as suggestions that can be tracked and accepted or rejected before being included in the document. These proposals are clearly identifiable changes to the document that are independently accepted or rejected can. While a user performs individual actions to manipulate the document, such as entering characters, it is not desirable for each of these actions to individually generate a separate proposal. In particular, when a document editor opens the document and generates edit proposals for the document, not all edits should generate commands with new default identifiers. Typing a sentence, for example, should produce a single suggestion in different edits. These are called merged proposals because the single proposal was created from multiple parts or variants. Because proposals must be accepted or rejected at a flat rate, merging determines granularity for suggestions.

Die Systeme und Verfahren der sechsten exemplarischen Ausführungsform der vorliegenden Offenbarung ermitteln, ob eine aktuelle Änderung an der Vorlage mit einem existierenden Vorschlag zusammengeführt werden soll, oder ob diese Änderung einen neuen Vorschlag erzeugen soll. Die Systeme und Verfahren der vorliegenden Offenbarung sind allgemein genug, um bei jeder beliebigen Änderung oder Änderungssammlung an einer Dokumentenvorlage gut zu funktionieren. Existierende Systeme berücksichtigen nicht die ganze Dokumentenvorlage und behalten weder Konsistenz noch Benutzerabsichten bei. The systems and methods of the sixth exemplary embodiment of the present disclosure determine whether an actual change to the template should be merged with an existing suggestion, or whether that change should produce a new suggestion. The systems and methods of the present disclosure are general enough to work well with any change or change collection to a template. Existing systems do not consider the entire document template and maintain neither consistency nor user intent.

4A4B zeigen ein exemplarisches Ablaufdiagramm 400, das Merkmale der Zusammenführung von vorgeschlagenen Bearbeitungen veranschaulicht. Beginnend bei 401, als Reaktion auf einen eingegangenen Bearbeitungsvorschlag (z. B. 202 in 2A), kann ein Dokument-Editor auf einem Server oder Benutzergerät ermitteln, ob der eingegangene Bearbeitungsvorschlag mit einem existierenden Bearbeitungsvorschlag zusammengeführt werden soll, oder ob ein neuer Vorschlag erstellt werden soll. Der Dokument-Editor kann eine oder mehr Varianten ermitteln, die dem Bearbeitungsvorschlag zugewiesen sind. Änderungen können beispielsweise an einer Dokumentenvorlage über eine Reihe von schrittweisen winzig kleinen Varianten beschrieben werden. In der Textbearbeitungsumgebung eines Dokuments, wie etwa einem Textbearbeitungsprogramm, können Varianten das Einfügen von Zeichen, das Löschen von Zeichen, das Anwenden von Formatvorlagen oder jede Andere Art von Änderung beinhalten, die an einem Textdokument vorgenommen werden kann. Ein einzelner Bearbeitungsvorschlag für ein Dokument kann in verschiedene Varianten resultieren, die auf die Vorlage angewendet werden. 4A - 4B show an exemplary flowchart 400 , which illustrates features of merging proposed edits. Starting at 401 , in response to a received processing proposal (eg 202 in 2A ), a document editor on a server or user device can determine whether the received processing proposal should be merged with an existing processing proposal, or whether a new proposal should be created. The document editor can identify one or more variants assigned to the edit proposal. For example, changes to a template can be described through a series of incrementally tiny variations. In the text-editing environment of a document, such as a text-editing program, variants may include inserting characters, deleting characters, applying styles, or any other type of change that can be made to a text document. A single edit proposal for a document can result in different variants applied to the template.

Der Bearbeitungsvorschlag kann beispielsweise das Hinzufügen eines Wortes oder Satzes einschließlich mehrerer Zeicheneinfügungen beinhalten. In einem weiteren Beispiel kann der Bearbeitungsvorschlag das Ersetzen eines existierenden Satzes durch einen anderen Satz beinhalten. Dieser Bearbeitungsvorschlag würde mehrere Zeichenlöschungen und mehrere Zeicheneinfügungen beinhalten. In einem weiteren Beispiel kann der Bearbeitungsvorschlag das Einfügen eines oder mehrerer Zeichen und das Anwenden einer Änderung der Formatvorlage an den eingefügten Zeichen beinhalten. In jedem Beispiel beinhaltet der Bearbeitungsvorschlag mehrere Varianten am Dokument. Es ist allgemein wünschenswert, während des sequentiellen Eingangs von Varianten zu ermitteln, ob eine aktuelle Variante mit einer vorangegangenen Variante zusammengeführt werden soll, und zwar als Teil einer einzigen Bearbeitung, oder ob eine aktuelle Variante als Teil einer neuen Bearbeitung gekennzeichnet werden soll. For example, the edit proposal may include adding a word or phrase including multiple character inserts. In another example, the edit proposal may include replacing an existing set with another set. This edit proposal would include multiple character deletions and multiple character inserts. In another example, the edit proposal may include inserting one or more characters and applying a style change to the inserted character. In each example, the processing proposal contains several variants on the document. It is generally desirable to determine, during the sequential entry of variants, whether a current variant should be merged with a previous variant, as part of a single edit, or whether a current variant should be marked as part of a new edit.

Hier werden Systeme und Verfahren bereitgestellt, die ermitteln, ob eine aktuelle Änderung an einem Dokument mit einem existierenden Bearbeitungsvorschlag zusammengeführt werden soll, oder ob ein neuer Bearbeitungsvorschlag auf der Basis der aktuellen Änderung erstellt werden soll. Ein Dokument-Editor verfügt über Logik zur Ermittlung, welche Varianten im Dokument auf der Basis der Aktionen des Benutzers und des aktuellen Status des Dokument-Editors umzusetzen sind. It provides systems and procedures that determine whether a current change to a document should be merged with an existing edit proposal, or whether a new edit proposal should be created based on the current change. A document editor has logic to determine which variants in the document to implement based on the actions of the user and the current status of the document editor.

Der Dokument-Editor kann dann, bei 402, eine Funktion für jede Variante definieren. Die Funktion ermittelt, mit welchen Vorschlägen eine Variante zusammengeführt werden kann. Diese Funktion kann für die besonderen Varianten und Dokumentenvorlagen in der Bearbeitungsanwendung definiert werden. Als Beispiel kann in einem Dokument-Editor die Variante, Zeichen einzufügen, zusammengeführt werden mit jedem vorgeschlagenen Text, der vor, nach oder um den eingefügten Text herum vorkommt. The document editor can then, at 402 to define a function for each variant. The function determines with which proposals a variant can be merged. This function can be defined for the special variants and document templates in the editing application. For example, in a document editor, the variant of inserting characters may be merged with any proposed text occurring before, after, or around the inserted text.

Zusätzlich kann diese Funktion eine Zusammenführungs-Priorität für die Variante ermitteln. In einem Beispiel sind Varianten in einer Prioritäten-Reihenfolge sortiert, so dass einschneidendere Änderungen am Dokument vor weniger einschneidenden Änderungen berücksichtigt werden können. Wenn zum Beispiel ein Bearbeitungsvorschlag sowohl eine Einfügung von Text als auch eine Anwendung einer Formatvorlage beinhaltet, kann die Position der Einfügung ein wahrscheinlicherer Kandidat für die Zusammenführung sein als die Position der Anwendung der Formatvorlage. In diesem Fall kann die Einfügungsvariante vor der Änderung der Anwendung der Formatvorlage priorisiert werden. In addition, this function can determine a merge priority for the variant. In one example, variants are sorted in a priority order so that more drastic changes to the document may be taken into account before less drastic changes. For example, if a edit proposal includes both an insertion of text and a style application, the position of the insert may be a more likely candidate for the merge than the position of the style application. In this case, the insertion variant may be prioritized prior to changing the style application.

Während Varianten auf die Vorlage angewendet werden, wird die Funktion ausgeführt, die eine Liste aller möglichen Zusammenführungsvorschläge und -prioritäten erkennt, bei 403. Dann kann die Dokumentenvorlage ermitteln, ob eine der Varianten aus der Liste herausgefiltert werden muss, bei 405. Alle Vorschläge, deren Eigentümer nicht der aktuelle Benutzer ist, können beispielsweise aus der Liste entfernt oder herausgefiltert werden, bei 406. Ein derartiges Filtern der Liste sorgt dafür, dass Vorschläge, die vom aktuellen Benutzer gemacht werden, nicht mit den Vorschlägen, die von anderen Benutzern gemacht werden, zusammengeführt werden, und erzeugt stattdessen neue Vorschläge, deren Eigentümer der aktuelle Benutzer ist. Alternativ kann die Funktion einen oder mehrere Filter beinhalten, so dass alle möglichen Prioritäten von Zusammenführungs-Vorschlägen in der Liste, die von der Funktion erkannt werden, nur dem aktuellen Benutzer zugewiesen werden und nicht anderen Benutzern. While variants are applied to the template, the function that identifies a list of all possible merge suggestions and priorities is executed 403 , Then the document template can determine if one of the variants has to be filtered out of the list 405 , For example, all suggestions that are not owned by the current user can be removed or filtered out of the list 406 , Such filtering of the list ensures that proposals made by the current user are not merged with the suggestions made by other users, and instead generates new proposals owned by the current user. Alternatively, the function may include one or more filters such that all possible merge suggestions priorities in the list recognized by the function are assigned to only the current user and not other users.

Im Allgemeinen hat bei der Entscheidung, ob Bearbeitungsvorschläge zusammengeführt werden sollen, das Einfügen und Löschen von regulärem Text die höchste Priorität. Die Vorschläge, mit denen Einfügungen und Löschungen von Text zusammengeführt werden können, werden gemäß der vorgenannten Heuristik festgelegt. Insbesondere ergeben Einfügungen Vorschläge zur Zusammenführung von Einfügungen oder Löschungen vor oder nach der Einfügungsposition. Löschungen ergeben Vorschläge zur Zusammenführung für alle Löschungen oder Einfügungen vor, nach oder innerhalb des gelöschten Bereichs. Formatbezogene Änderungen sind von zweitrangiger Priorität. Dies beinhaltet beispielsweise Text- und Absatzformate, Änderungen an Listen und Links. Diese Bearbeitungen werden nur zusammengeführt, wenn der formatierte Bereich gänzlich in der Löschung oder Einfügung enthalten ist. Sie werden auch mit anderen Formatvorschlägen zusammengeführt, wenn der Bereich derselbe ist, oder sich innerhalb anderer Formatvorlagen befindet und dieselben Eigenschaften betrifft. Die Löschung von zweitrangigem Text hat zweitrangige Priorität und wird mit anderen Löschungen desselben Textes zusammengeführt. Zweitrangiger Text ist Text außerhalb des Haupttextteils des Dokuments, der sich im Allgemeinen auf das Dokument bezieht, wie etwa Kopfzeilen, Fußzeilen und Fußnoten. Die Einfügung von zweitrangigem Text hat die niedrigste Priorität und ergibt keine Vorschläge zur Zusammenführung. Dieser Text erzeugt immer einen neuen Vorschlag (wie etwa im Fall von Kopfzeilen und Fußzeilen), oder er bezieht sich auf Haupttext, wie zum Beispiel Fußnoten, und verwendet deswegen die Heuristik für die Zusammenführung von Haupttext. In general, when deciding whether to merge edit proposals, inserting and deleting regular text has the highest priority. The suggestions with which insertions and deletions of text can be merged are determined according to the heuristic mentioned above. In particular, inserts provide suggestions for merging inserts or deletions before or after the insertion position. Deletes provide suggestions for merging for all deletes or inserts before, after, or within the deleted area. Format-related changes are of secondary importance. This includes, for example, text and paragraph formats, changes to lists and links. These edits are merged only if the formatted area is entirely included in the deletion or insertion. They are also merged with other style suggestions if the scope is the same, or within other styles, and has the same properties. The deletion of secondary text is a secondary priority and will be merged with other deletions of the same text. Secondary text is text outside the main body of the document, which generally refers to the document, such as headers, footers, and footnotes. The insertion of secondary text has the lowest priority and does not provide merge suggestions. This text always generates a new suggestion (as in the case of headers and footers), or it refers to main text, such as footnotes, and therefore uses the heuristic for merging body text.

Bei der Bestimmung, wie Bearbeitungsvorschläge zusammengeführt werden, kann das Verfahren der exemplarischen Ausführungsform ein Kategorien-Framework beinhalten, das die Priorität festlegt, die den Zusammenführungen, die in die entsprechende Kategorie fallen, zugewiesen ist. Jedem Vorschlag kann eine Kennung für einen Zusammenführungsvorschlag zugeordnet werden, die die vorgeschlagene Aktion identifiziert und ebenfalls die Prioritäten-Kategorie des Änderungsvorschlags. Diese Prioritäten-Kategorien sind in Beispielkategorien von erstrangigen, zweitrangigen und neutralen Zusammenführungen eingeteilt, abhängig von der Priorität, mit der der Bearbeitungsvorschlag zusammengeführt wird. In determining how processing suggestions are merged, the method of the exemplary embodiment may include a category framework that sets the priority assigned to the junctions that fall into the corresponding category. Each proposal can be assigned an identifier for a merge proposal that identifies the proposed action and also the priority category of the proposed change. These priority categories are grouped into example categories of first, second, and neutral mergers, depending on the priority with which the proposal is merged.

In einem Beispiel beinhaltet die erstrangige Prioritäten-Kategorie Vorschläge wie etwa Einfügungen und Löschungen von Nicht-Abschnitts-Abstandshaltern. Vorschläge der zweitrangigen Prioritäten-Kategorie beinhalten die Anwendung einer anderen Formatvorlage auf den Dokumententext, Tethering, Updaten oder Löschen einer Entität, oder Löschen eines Abschnitts. Vorschläge der neutralen Prioritäten-Kategorie beinhalten das Einfügen eines Abschnitts, das Hinzufügen einer Entität und verschiedene andere Vorschlagsbefehle. In one example, the top priority category includes suggestions such as inserts and deletions of non-section spacers. Proposals of the secondary priority category include applying a different style to the document text, tethering, updating or deleting an entity, or deleting a section. Suggestions of the neutral priority category include inserting a section, adding an entity, and various other suggestion commands.

Weiter mit 4B, nachdem die gefilterte Liste bei 407 ermittelt wurde, werden alle möglichen Zusammenführungs-Vorschläge der höchsten vorhandenen Priorität bei 408 überprüft, um festzustellen, ob bei 410 eine Zusammenführung stattfinden soll. Wenn alle Varianten dieser Priorität zusammenpassende Vorschläge haben, dann kommt es zur Zusammenführung. Andernfalls sollte es nicht zur Zusammenführung kommen, und ein neuer Vorschlag wird bei 411 erzeugt. Continue with 4B After adding the filtered list 407 has been determined, all possible merge proposals will become the highest existing priority 408 Check to see if at 410 a reunion is to take place. If all variants of this priority have matching proposals, then they merge. Otherwise, there should not be a merger and a new proposal will be added 411 generated.

Wenn es zur Zusammenführung kommt, dann ermittelt das hier beschriebene System und Verfahren, welcher Vorschlag der möglichen Vorschläge in der gefilterten Liste für die Zusammenführung bei 415 verwendet werden soll. Etliche Methoden können ermitteln, welcher Vorschlag für die Zusammenführung verwendet werden soll, und die hier beschriebenen Beispiele dienen nur zur exemplarischen Veranschaulichung. When the merge occurs, the system and method described here determines which proposal of the possible suggestions in the filtered list for the merge 415 should be used. Several methods can determine which proposal to use for the merge, and the examples described here are for illustrative purposes only.

In einem Beispiel können häufigere Vorschläge bei der Verwendung für die Zusammenführung bevorzugt werden. Eine besondere Methode ist die Bevorzugung von häufigeren Vorschlägen. Mit einigen Schritten kann dies implementiert werden. Zuerst wird ein Histogramm erstellt, das angibt, wie oft jeder Vorschlag vorkommt. Zweitens werden die Varianten in der Reihenfolge von am häufigsten bis am wenigsten häufig berücksichtigt, und jede Variante, die mit einem bestimmten Vorschlag zusammengeführt werden kann, kann verwendet werden. Drittens wird für jede Variante, die keinen möglichen Zusammenführungsvorschlag besitzt, der am häufigsten vorkommende Vorschlag mit der höchsten Priorität verwendet. Nach dem Ermitteln, welcher Vorschlag für die Zusammenführung verwendet werden soll, können die Änderungsvorschläge bei 416 zusammengeführt werden. In one example, more frequent suggestions may be preferred when used for the merge. One particular method is to favor more frequent suggestions. This can be implemented in a few steps. First, a histogram is created that indicates how many times each suggestion occurs. Second, variants are considered in order from most common to least frequent, and any variant that can be merged with a given proposal can be used. Third, for each variant that does not have a possible merger proposal, the most frequently occurring proposal with the highest priority used. After determining which proposal to use for the merge, the proposed changes may be added to 416 be merged.

Wie hier beschrieben, ist ein Ziel der vorliegenden Offenbarung, einen Mechanismus für die gemeinsame Zusammenführung von Vorschlägen über verschiedene Bearbeitungen hinweg zu definieren, und einen Mechanismus dafür zu ermitteln, diese Zusammenführungs-Daten zu sammeln, während die Bearbeitungsvorschläge auf die Dokumentenvorlage angewendet werden. Das nachstehende Beispiel zeigt eine Implementierung des Systems, wenn zwei Zeichen getippt werden, und das System ermittelt, dass die beiden Zeichen im gleichen Vorschlag zusammengehören:

  • 1. Im Vorschlagsmodus ein Zeichen eingeben: a. SuggestlnsertSpacers(ID: „a", Kennung: 5, Abstandshalter: "h")
  • 2. Ein weiteres Zeichen eingeben: a. SuggestlnsertSpacers(ID: „a", Kennung: 6, Abstandshalter: "i") i. Hinweis: die ID ist dieselbe. Beide Einfügungen sind nun Teil desselben Vorschlags.
  • 3. Den Vorschlag annehmen: a. AcceptlnsertSpacers(ID: "a", Start: 5, Ende: 6)
  • 4. Oder den Vorschlag ablehnen: a. RejectlnsertSpacers(ID: "a", Start: 5, Ende: 6)
As described herein, an object of the present disclosure is to define a mechanism for merging proposals across different edits, and to determine a mechanism for collecting this merging data while applying the editing suggestions to the document template. The following example shows an implementation of the system when two characters are typed, and the system determines that the two characters belong together in the same proposal:
  • 1. Enter a character in suggestion mode: a. SuggestlnsertSpacers (ID: "a", identifier: 5, spacer: "h")
  • 2. Enter another character: a. SuggestlnsertSpacers (ID: "a", identifier: 6, spacer: "i") i Note: the id is the same Both inserts are now part of the same suggestion.
  • 3. Accept the proposal: a. AcceptlnsertSpacers (ID: "a", start: 5, end: 6)
  • 4. Or reject the proposal: a. RejectlnsertSpacers (ID: "a", start: 5, end: 6)

Bevor eine Anweisung umgesetzt wird, kann die Dokumentenvorlage ermitteln, welcher Vorschlag, falls überhaupt, mit dieser Anweisung zusammengeführt würde (z. B. 415 in 4B). Wenn alle Befehle in einer Bearbeitung Vorschlags-Kennungen zugewiesen sind, deren Eigentümer der aktuelle Benutzer ist, dann können diese Vorschlags-Kennungen verwendet werden. Andernfalls kann eine neue Vorschlags-Kennung erzeugt und verwendet werden. Indem dies pro Kennung durchgeführt wird, können Änderungen, die Ausschneiden/Einfügen oder Finden/Ersetzen enthalten, wirksam umgesetzt werden. Before a statement is translated, the template can determine which proposal, if any, would be merged with this statement (eg. 415 in 4B ). If all commands in an edit are assigned default identifiers owned by the current user, then these default identifiers can be used. Otherwise, a new suggestion identifier may be created and used. By doing this per tag, changes that include cut / paste or find / replace can be effectively implemented.

In einem weiteren Beispiel beinhaltet, auf der Basis von Prioritäten-Kategorien, die Bearbeitungsvorschlägen zugewiesen sind, die zugrunde liegende Heuristik den Vollzug der Zusammenführung von Vorschlägen, und zwar bei einer Eingabe nach/vor/innerhalb einer Einfügung, einer Eingabe nach/vor/innerhalb einer Löschung, einer Eingabe vor einem Zeilenumbruch mit einer vorgeschlagenen Formatvorlage, bei einer Löschung vor/nach/innerhalb einer Löschung, einer Löschung vor/nach/innerhalb/um eine Einfügung herum, einer Eingabe innerhalb einer Löschung, einer Eingabe nach/vor/innerhalb einer Einfügung, bei der Änderung von Formatvorlagen innerhalb einer Einfügung, der Änderung von Formatvorlagen innerhalb einer Löschung, bei der Änderung von Formatvorlagen, die auf den genau gleichen Bereich angewendet werden wie eine andere Formatvorlage, bei der Änderung von Formatvorlagen innerhalb anderer Formatvorlagen, wenn die gleichen Eigenschaften betroffen sind, oder bei der Änderung von Formatvorlagen, die auf einen Zeilenumbruch nach einem Einfügungsvorschlag angewendet werden. Vorschläge werden nicht zusammengeführt bei einer Eingabe nach/vor/innerhalb von Formatvorlagen, bei einer Löschung vor/nach/innerhalb/um Formatvorlagen herum, einer Eingabe vor/nach einer Löschung, einer Eingabe vor/nach Ersetzen, einer Änderung von Formatvorlagen vor/nach Einfügung, einer Änderung von Formatvorlagen vor/nach einer Löschung, einer Änderung von Formatvorlagen, die sich mit Einfügungen überschneiden, einer Änderung von Formatvorlagen, die sich mit Löschungen überschneiden, oder einer Änderung der Formatvorlagen innerhalb, vor, nach oder sich überschneidend mit anderen Formatvorlagen, die sich nicht im selben Bereich befinden. In another example, based on priority categories associated with processing suggestions, the underlying heuristic involves performing merge suggestions upon input to / before / within an insertion, an input to / before / within a deletion, an entry before a line break with a proposed style, a deletion before / after / within a deletion, a deletion before / after / within / around an insertion, an entry within a deletion, an entry to / before / inside When you change styles within an inset, change styles within a deletion, change styles that are applied to the exact same area as another style, change styles within other styles, and so on same characteristics are affected, or in the case of alterations g of styles applied to a newline after an insert suggestion. Proposals will not be merged when typing in / before / inside styles, when deleting before / after / inside / around styles, typing before / after deletion, typing before / after, or changing styles before / after Insertion, a change in styles before / after a deletion, a change in styles that overlap with inserts, a change in styles that overlap deletions, or a change in styles within, before, after, or overlapping with other styles that are not in the same area.

Zwei besondere Fälle sind bei Zeilenumbrüchen und Formatvorlagen zu berücksichtigen: Eingabe vor einem Zeilenumbruch mit einer vorgeschlagenen Formatvorlage, und Formatvorlagen, die nach einem Einfügungsvorschlag auf einen Zeilenumbruch angewendet werden. Diese Sonderfälle werden ähnlich wie oben beschrieben implementiert: die Zusammenführungslogik für Einfügungen prüft, ob sich die Einfügung vor einem Zeilenumbruch mit einer vorgeschlagenen Formatvorlage befindet, und die Zusammenführungslogik für Formatvorlagen prüft, ob die Formatvorlage nach einer vorgeschlagenen Einfügung auf einen Zeilenumbruch angewendet wird. Diese Fälle erzeugen eine Lösung für mehrere Probleme. In einem Beispiel ist das Beginnen eines neuen Absatzes mit einem nicht vorgeschlagenen Zeilenumbruch nicht problematisch. In einem zweiten Beispiel wendet das Drücken von „bold“ während des Vorschlagens einer Bearbeitung eine vorgeschlagene Formatvorlage auf den Zeilenumbruch an. In einem dritten Beispiel fügt das Eingeben eines Zeichens ein Zeichen vor dem Zeilenumbruch ein. Der Vorschlag, das Zeichen einzusetzen, wird mit dem vorangehenden Vorschlag zusammengeführt. Two special cases have to be taken into account in the case of line breaks and styles: input before a line break with a proposed style, and styles applied to a line break after an insertion suggestion. These special cases are implemented in a manner similar to the one described above: the insert merge logic checks to see if the insert is before a newline with a suggested style, and the style merge logic checks to see if the style applies after a proposed line break insertion. These cases create a solution to several problems. In one example, starting a new paragraph with a non-proposed newline is not problematic. In a second example, pressing "bold" applies a suggested style to the line break while suggesting an edit. In a third example, entering a character inserts a character before the line break. The proposal to use the sign will be merged with the previous proposal.

5 zeigt ein Ablaufdiagramm eines Verfahrens 500, das vom Rezensionsmanager 102 zur Verwendung der Priorisierungskategorien benutzt wird, um zu ermitteln, in welcher Reihenfolge die Vorschläge innerhalb eines Dokuments zusammengeführt werden sollen. Das Verfahren 500 beinhaltet die Schritte zum Ermitteln, ob es Vorschläge der erstrangigen Kategorie gibt (Entscheidungsblock 502), und zum Ermitteln, ob es ID-Befehle der zweitrangigen Kategorie gibt (Entscheidungsblock 506), und die entsprechende Zusammenführung von Bearbeitungsvorschlägen auf der Basis dieser Ergebnisse. Wenn es Vorschläge der erstrangigen Prioritäten-Kategorie gibt, werden diese Zusammenführungen ausgeführt (Schritt 504). Wenn es Zusammenführungen der zweitrangigen Prioritäten-Kategorie gibt, werden diese ausgeführt (Schritt 508). Alternativ werden keine weiteren Zusammenführungen durchgeführt, wenn es keine Vorschläge der zweitrangigen Prioritäten-Kategorie gibt (Schritt 510). 5 shows a flowchart of a method 500 that from the review manager 102 to use the prioritization categories to determine the order in which the proposals are being made within a document. The procedure 500 includes the steps to determine if there are proposals of the senior category (decision block 502 ), and to determine if there are second-order category ID instructions (decision block 506 ), and the appropriate combination of processing proposals based on these results. If there are proposals of the priority priority category, these merges are executed (step 504 ). If there are junctions of the secondary priority category, they are executed (step 508 ). Alternatively, no further merges are performed if there are no second priority category proposals (step 510 ).

Das Zusammenführen von Bearbeitungsvorschlägen einschließlich Einfügungen wird nach mehreren Regeln durchgeführt. In einer Implementierung fügt das Drücken von ENTER im Kommentarmodus getrennte Anweisungen für jeden Zeilenumbruch ein. Das Eingeben von mehreren Absätzen ergibt eine zusammengeführte Bearbeitung, die die vorgeschlagenen Absätze beinhaltet. Merging of processing suggestions, including inserts, is performed according to several rules. In one implementation, pressing ENTER in comment mode inserts separate statements for each newline. Entering multiple paragraphs will result in a merged processing that includes the proposed paragraphs.

In manchen Fällen können mehrere Benutzer verschiedene Bearbeitungen an einem Text vorschlagen, einschließlich von miteinander im Widerspruch stehenden Vorschlägen. In Fällen von miteinander im Widerspruch stehenden Vorschlägen für Formatvorlagen sollten die Vorschläge in einen einzigen Vorschlag zusammengeführt werden. Bei manchen Implementierungen können die Redakteure die Möglichkeit haben, die miteinander im Widerspruch stehenden Bearbeitungsvorschläge rückgängig zu machen, anzunehmen oder abzulehnen, und der Gebrauch dieser Möglichkeiten kann dazu führen, dass alle miteinander im Widerspruch stehenden Vorschläge verschwinden. In some cases, multiple users may propose different edits to a text, including conflicting proposals. In the case of conflicting template proposals, the proposals should be merged into a single proposal. In some implementations, the editors may be able to undo, accept, or reject the conflicting editing suggestions, and the use of these options may result in all contradictory proposals disappearing.

Die Bearbeitungsvorschläge an Formatvorlagen für Absätze werden getrennt von Bearbeitungen des Absatztextes bearbeitet. In einem Beispiel verändert das Ändern der vorgeschlagenen Fußzeile nicht die Formatvorlagen der Absatz-Entitäten. In einem weiteren Beispiel ist das System zum Zusammenführen der Bearbeitung dafür eingerichtet, Probleme zu bearbeiten, bei denen der Vorschlag „add entity“ nie zusammengeführt wird. In einem dritten Beispiel funktioniert das Ändern eines vorgeschlagenen Links nicht immer. Editing style proposals for paragraphs are edited separately from edits of the paragraph text. In one example, changing the suggested footer does not change the styles of the paragraph entities. In another example, the merge processing system is set up to handle problems where the add entity proposal is never merged. In a third example, changing a suggested link does not always work.

Im Allgemeinen wird das Verfahren zur Feststellung, ob Bearbeitungsvorschläge zusammenzuführen sind, entsprechend einer Reihe von Prinzipien bewerkstelligt. Einzelne Aktionen werden immer als einzelne Vorschläge angezeigt. Zusammenführungen werden für Änderungen von Formatvorlagen gänzlich innerhalb von Einfügungen ausgeführt, Änderungen von Formatvorlagen mit derselben Entität werden während der Eingabe eines zusammenhängenden Bereichs von vorgeschlagenem Text ausgewählt, während der Eingabe innerhalb von eingefügtem Text und für Objekte, die zusammengeführt werden können, einschließlich von Inlinebildern, Gleichungen, Autotext, Fußnoten und Lesezeichen. In manchen Einfügungen von Tabellen, positionierten Bildern, Kopfzeilen, Fußzeilen und Inhaltsverzeichnissen kann mit anderen Bearbeitungen nicht zusammengeführt werden. In general, the method of determining whether to merge processing proposals is accomplished according to a number of principles. Individual actions are always displayed as individual suggestions. Merges are performed entirely within insertions for style changes, style changes with the same entity are selected while entering a contiguous range of proposed text, while typing within inserted text and for objects that can be merged, including inline images, Equations, autotext, footnotes and bookmarks. Some insertions of tables, positioned images, headers, footers, and TOCs can not be merged with other edits.

Der hier beschriebene Lösungsansatz hat mehrere Vorteile. Erstens können Vorschläge, die von einem bestimmten Benutzer gemacht wurden, nur mit Vorschlägen zusammengeführt werden, die von demselben Benutzer gemacht wurden. Zweitens würde eine einzelne Aktion eines Benutzers nie mehr als einen Vorschlag erzeugen. Drittens wird die Konsistenz zwischen Varianten innerhalb einer Bearbeitung gewahrt. Mit anderen Worten: alle Varianten werden entweder mit existierenden Vorschlägen zusammengeführt oder einem neuen Vorschlag zugewiesen. Viertens wird die Konsistenz gewahrt, wenn eine einzelne Bearbeitung sich auf viele existierende Vorschläge auswirkt. Indem Vorschläge bevorzugt werden, mit denen jede Variante bevorzugt zusammengeführt wird, werden die konstituierenden Varianten von Bearbeitungen, die sich auf viele Vorschläge auswirken, mit den Vorschlägen zusammengeführt, auf die sie sich einzeln auswirken. The approach described here has several advantages. First, proposals made by a particular user can only be merged with suggestions made by the same user. Second, a single action of a user would never produce more than one suggestion. Third, the consistency between variants within a processing is preserved. In other words, all variants are either merged with existing proposals or assigned to a new proposal. Fourth, consistency is maintained when a single edit affects many existing suggestions. By favoring proposals that merge each variant in preference, the constituent variants of edits that affect many proposals merge with the proposals that affect them individually.

Eine weitere hier beschriebene Ausführungsform beinhaltet Projektionen, die auf eine Dokumentenvorlage angewendet werden. Auf die Dokumentenvorlagen von Client-Systemen oder Benutzergeräten können Projektionen angewendet werden. Projektionen können beispielsweise verwendet werden, um bestimmte Arten von Inhalten zu streichen oder um bestimmte Teile des Dokuments zu anonymisieren. Projektionen können als Varianten beschrieben werden, die auf die Vorlage angewendet werden. Wenn eine Projektion auf eine Vorlage angewendet wird, werden Varianten erzeugt, die, wenn sie umgesetzt werden, die Vorlage unter der Projektion erstellen. Eine Projektion, die Tabellen streicht, würde beispielsweise eine Tabelle-Löschen-Variante für jede Tabelle erzeugen, was eine Vorlage ohne Tabellen ergibt. Another embodiment described herein includes projections that are applied to a document template. Projections can be applied to the document templates of client systems or user devices. For example, projections may be used to delete certain types of content or to anonymize certain portions of the document. Projections can be described as variants applied to the template. When a projection is applied to a template, variants are created that, when translated, create the template under the projection. For example, a projection that strokes tables would create a table-delete variant for each table, resulting in a template without tables.

Um eine Variante an einen Mitarbeiter zu senden, dessen Vorlage einer Projektion unterliegt, sollte diese Variante gegen diejenigen Varianten transformiert werden, die die Projektion beschreiben. Das Senden einer Text-Einfügen-Variante erfordert beispielsweise an einer Vorlage, von der Text ausgefiltert wurde, dass der Einfügungstext gegen Text-Löschen-Varianten entsprechend dem herausgefilterten Text transformiert wird. [0097] Zusätzlich sollten manche Varianten gänzlich ausgelassen werden, wenn unter einer Projektion gesendet wird. Wenn eine Projektion beispielsweise Tabellen aus einem Dokument entfernt, sollte eine Variante zum Erstellen einer neuen Tabelle nicht an Clients mit dieser Projektion gesendet werden. Für einzelne Varianten ist dies einfach zu implementieren. Insbesondere sollten Varianten zur Auslassung für bestimmte Projektionen identifiziert werden, und die identifizierten Varianten sollten nicht gesendet werden. To send a variant to an employee whose template is subject to a projection, this variant should be transformed against those variants that describe the projection. For example, sending a text-paste variant on a template that has text filtered out requires that Insert text against text delete variants according to the filtered out text. In addition, some variants should be omitted entirely when broadcasting under a projection. For example, if a projection removes tables from a document, a variant to create a new table should not be sent to clients with that projection. For some variants this is easy to implement. In particular, variants for omission should be identified for particular projections, and the identified variants should not be sent.

Dennoch kann sich die Auslassung von bestimmten Varianten auf zukünftige Varianten auswirken, da zukünftige Varianten sich darauf verlassen oder davon ausgehen, dass ausgelassene Varianten vorhanden sind. Wenn beispielsweise zwei Varianten gesendet werden (z. B. [Text einfügen bei Index 100, Text einfügen bei Index 200]), kann die zweite Einfügung davon ausgehen, dass die erste Einfügung implementiert wurde. Auf diese Weise ist, wenn die erste Einfügung ausgelassen wird, und die zweite Einfügung ungeprüft gesendet wird, dann die gesendete Einfügung beim falschen Index. Nevertheless, the omission of certain variants can affect future variants, since future variants rely on or assume that omitted variants are present. For example, if two variants are sent (for example, [insert text at index 100, insert text at index 200]), the second insertion may assume that the first insertion has been implemented. In this way, if the first insert is omitted, and the second insert is sent unchecked, then the sent insert is at the wrong index.

Um dies zu lösen, werden Auslassungs-Transformationsvarianten festgelegt. Auslassungs-Transformationsvarianten sind Varianten, gegen die zukünftige Varianten transformiert werden müssen, um aufgrund der Auslassung sich unterscheidende Semantiken erfassen zu können. Im vorstehenden Beispiel ist die Auslassungs-Transformationsvariante für [insert text at 100] [delete text at 100]. Durch die Transformation von [insert text at 200] gegen die Löschen-Variante wird [insert text at 200] zurückgeschoben und befindet sich dann am richtigen Index. Auf diese Weise kann die Auslassungs-Transformationsvariante bei zukünftigen Varianten eine Projektion eines Dokuments erfassen und so entsprechend in geeigneter Weise angepasst werden. To solve this, omission transformation variants are set. Omission transformation variants are variants against which future variants must be transformed in order to capture differing semantics due to the omission. In the example above, the ellipsis transformation variant is for [insert text at 100] [delete text at 100]. By transforming [insert text at 200] against the deletion variant, [insert text at 200] is pushed back and is then at the correct index. In this way, in future variants, the omission transformation variant can capture a projection of a document and thus be suitably adapted accordingly.

6 zeigt ein exemplarisches Ablaufdiagramm 600, das Merkmale zur Bestimmung einer Auslassungs-Transformationsvariante für eine Dokumentenvorlage abbildet. Die Verfahrensweise kann wie folgt zusammengefasst werden.

  • – Einen leeren Satz von Varianten R erstellen, bei 601.
  • – Den Satz von Varianten S erstellen, die verwendet werden, um die Projektion auf die aktuelle Vorlage anzuwenden, bei 602.
  • – Für jede Variante M im Satz der zu sendenden Varianten: – M‘ und S‘ erstellen, indem M gegen S transformiert wird bei 603. – Falls M‘ ausgelassen wird aufgrund der Projektion bei 605: – Die Auslassungs-Transformationsvariante O für C‘ erstellen bei 606. – O zu S‘ hinzufügen bei 607. – Ansonsten: – C' zu R hinzufügen bei 608. – S' als das neue S bestimmen bei 609. – R ist das Ergebnis.
6 shows an exemplary flowchart 600 , which maps features for determining an omission transformation variant for a document template. The procedure can be summarized as follows.
  • - Create an empty set of variants R, at 601 ,
  • - Create the set of variants S that will be used to apply the projection to the current template 602 ,
  • - For each variant M in the set of variants to be sent: - Create M 'and S' by transforming M to S at 603 , - If M 'is omitted due to the projection at 605 : - Create the omission transformation variant O for C ' 606 , - add O to S 'at 607 , - Otherwise: - Add C 'to R at 608 , - S 'as the new S determine 609 , - R is the result.

Zusammenfassung: beim Bestimmen einer Projektion kann man (1) mit einer angegebenen Vorlage bestimmen, welche Varianten die Projektion anwenden und (2), welche Varianten ausgelassen werden sollen, und was die Auslassungs-Transformationsvariante für diese bedeuten. Sobald diese festgelegt sind, können die Systeme und Verfahren der vorliegenden Offenbarung dazu verwendet werden, kollaborativ Varianten unter der Projektion zu versenden. Summary: when determining a projection, one can (1) determine with a given template which variants apply the projection and (2) which variants should be omitted, and what the omission transformation variant means for them. Once established, the systems and methods of the present disclosure may be used to collaboratively send out variants under projection.

Das Problem auf diese Weise zu lösen hat einige Vorteile. Erstens lässt es die vorliegende Offenbarung zu, dass Projektionen gänzlich auf Server-Seite angewendet werden, was es erlaubt zu erzwingen, dass Clients bestimmten Projektionen unterliegen. Zweitens verwendet die vorliegende Offenbarung Semantiken bestehender operationaler Transformationen in Echtzeit-Kollaborationsanwendungen. Solving the problem in this way has some advantages. First, the present disclosure allows for projections to be applied entirely to the server side, which allows clients to be subject to certain projections. Second, the present disclosure uses semantics of existing operational transformations in real-time collaboration applications.

In einem Beispiel werden Projektionen angewendet, um Änderungsvorschläge aus einer Version des Dokuments, die Lesern zur Verfügung steht, herauszufiltern. Die vorliegende Offenbarung macht es möglich, dass Änderungen am Dokument in geeigneter Weise angewendet werden, so dass Lesern eine aktualisierte Version des Dokuments vorgelegt wird. Um die Anzeige von Änderungsvorschlägen und Kommentaren aus dem „Lesemodus“ des Dokuments, das für Leser sichtbar ist, zu entfernen, kann das Anwendungsmodul, das den Lesemodus eines Dokuments implementiert, jede Kombination der folgenden Schritte enthalten. In one example, projections are applied to filter out change suggestions from a version of the document that is available to readers. The present disclosure allows for changes to the document to be appropriately applied so that an updated version of the document is presented to readers. To remove the display of change suggestions and comments from the "read mode" of the document that is visible to readers, the application module implementing the read mode of a document may include any combination of the following steps.

Das Konzept einer Projektion kann auf eine Dokumentenvorlage angewendet werden. Ein exemplarisches Pseudo-Code-Segment, das eine Objektklasse einer Projektion darstellt, kann einer der folgenden Form ähnliche Form annehmen:

Figure DE202015009277U1_0017
The concept of a projection can be applied to a template. An exemplary pseudo-code segment representing a feature class of a projection may take a similar form to the following:
Figure DE202015009277U1_0017

Für die Verwendung dieser Projektionen wird ModelState wie folgt modifiziert:

Figure DE202015009277U1_0018
Verwendungen werden durch die geeignete Projektion ersetzt, abhängig davon, ob Vorschläge immer gefiltert werden sollen. To use these projections ModelState is modified as follows:
Figure DE202015009277U1_0018
Uses are replaced by the appropriate projection, depending on whether proposals should always be filtered.

Das Filtern auf Basis einer Access Control List (ACL) kann verwendet werden. Manche Verwendungen von Vorschlägen erfordern kontextuelles Filtern basierend darauf, ob der Benutzer Lese- oder Bearbeitungszugriff auf das Dokument hat. Um dies zu erreichen, kann zur Konstruktion des Rechts eine Zuordnungsinstanz verwendet werden. Ein exemplarisches Pseudo-Code-Segment, das eine Objektklasse einer ACL-basierten Filterung darstellt, kann einer der folgenden Form ähnliche Form annehmen:

Figure DE202015009277U1_0019
Figure DE202015009277U1_0020
Die Zuordnungsinstanz gibt Projection.FULL für Redakteure und Rezensenten (Kommentatoren) und Projection. WITHOUT_SUGGESTIONS für Leser zurück. Zusätzlich kann ein Standardwert für Projection eingegeben werden, der die Zuordnungsinstanz verwendet, um die richtige Projektion für den AccessLevel zurückzugeben. Filtering based on an Access Control List (ACL) can be used. Some uses of proposals require contextual filtering based on whether the user has read or edit access to the document. To achieve this, an assignment instance can be used to construct the right. An exemplary pseudo-code segment representing an object class of ACL-based filtering may take a similar form to the following:
Figure DE202015009277U1_0019
Figure DE202015009277U1_0020
The attribution instance gives Projection.FULL to Editors and Reviewers (commentators) and Projection. WITHOUT_SUGGESTIONS for readers back. In addition, a default value can be entered for Projection, which uses the mapping instance to return the correct projection for the AccessLevel.

In einer weiteren Ausführungsform kann Änderungsfiltern implementiert werden. In manchen Anwendungen kann das kontextuelle Filtern der Vorlage basierend auf AccessLevel nicht ausreichend sein. Verwendungen, die Änderungen laden oder übermitteln, müssen möglicherweise auch gefiltert werden. Die folgenden Schritte können zum Filtern von Befehlen für Benutzer verwendet werden:

  • 1. Einen leeren Satz von Befehlen R erstellen.
  • 2. Den Satz von Befehlen S erstellen, die verwendet werden, um die aktuellen Vorlagen-Vorschläge herauszufiltern.
  • 3. Für jede Anweisung C in der Änderung: a. C‘ und S‘ erstellen, indem C gegen S transformiert wird. b. Wenn C‘ ein Vorschlagsbefehl ist: i. Die Auslassungs-Anweisung O für C‘ erstellen. ii. O zu S‘ hinzufügen. c. Ansonsten: i. C‘ zu R hinzufügen. d. S‘ als das neue S bestimmen.
  • 4. R ist das Ergebnis.
In another embodiment, change filtering may be implemented. In some applications, contextual filtering of the template based on AccessLevel may not be sufficient. Uses that load or submit changes may also need to be filtered. The following steps can be used to filter commands for users:
  • 1. Create an empty set of commands R.
  • 2. Create the set of commands S used to filter out the current template suggestions.
  • 3. For each instruction C in the change: a. Create C 'and S' by transforming C to S. b. If C 'is a suggestion command: i. Create the omission statement O for C '. ii. Add O to S '. c. Otherwise: i. Add C 'to R. d. S 'as the new S determine.
  • 4. R is the result.

Bei manchen Implementierungen kann das folgende Verfahren zum Erstellen von Filterbefehlen verwendet werden (die ein exemplarisches Pseudo-Code-Segment sein können und obenstehenden Schritt 2 zeigen). public interface Model<T extends Model<T>> {

Figure DE202015009277U1_0021
Figure DE202015009277U1_0022
Die Implementierung für Projection.FULL kann immer eine leere Liste zurückgeben. Implementierungen, die keine Vorschläge unterstützen, wie etwa Projection. WITHOUT_SUGGESTIONS, können einfach eine leere Liste zurückgeben. In manchen Implementierungen kann die Anwendung für die kollaborative Dokumentenbearbeitung Projection. WITHOUT_SUGGESTIONS implementieren, indem sie denselben Satz von Befehlen erzeugt, um alle aktuell in der Vorlage vorhandenen Vorschläge abzulehnen. In some implementations, the following method may be used to construct filter instructions (which may be an exemplary pseudo-code segment and show step 2 above). public interface model <T extends Model <T >> {
Figure DE202015009277U1_0021
Figure DE202015009277U1_0022
The implementation for Projection.FULL can always return an empty list. Implementations that do not support suggestions, such as Projection. WITHOUT_SUGGESTIONS, you can just return an empty list. In some implementations, the collaborative document editing application may be Projection. Implement WITHOUT_SUGGESTIONS by creating the same set of commands to reject any suggestions currently in the template.

Bei manchen Implementierungen kann das folgende Verfahren zum Erzeugen von Auslassungsbefehlen verwendet werden (die ein exemplarisches Pseudo-Code-Segment sein können und obenstehenden Schritt 3.b.i. zeigen). public class ProjectionDetails<T extends Model<T>> {

Figure DE202015009277U1_0023
In some implementations, the following method may be used to generate omission commands (which may be an exemplary pseudo-code segment and show step 3.bi above). public class ProjectionDetails <T extends Model <T >> {
Figure DE202015009277U1_0023

Dies kann wie folgt implementiert werden:

  • 1. AbstractCommand gibt null zurück.
  • 2. WrapperCommands erzeugt Fehler, wenn diese aufgerufen werden, da die Details nicht ohne Entpacken berechnet werden können.
  • 3. Vorschlagsbefehle geben die passenden Auslassungsbefehle zurück. Zum Beispiel: a. InsertSuggestedSpacers gibt ein DeleteSpacers für den eingefügten Bereich zurück. b. MarkSpacersForDeletion gibt ein UnmarkSpacersForDeletion für denselben Bereich zurück.
Dies kann in ModelStateImpl implementiert werden und verwendet werden, um die Befehle in Änderungen zu transformieren, bevor die Änderungen gesendet werden, und auch, um LoadResult zu filtern, bevor es zurückgegeben wird. Dies kann die folgende Änderung an einer API-Änderung beinhalten:
Figure DE202015009277U1_0024
This can be implemented as follows:
  • 1. AbstractCommand returns null.
  • 2. WrapperCommands generates errors when called, because the details can not be calculated without unpacking.
  • 3. Suggestion commands return the appropriate omission commands. For example: a. InsertSuggestedSpacers returns a DeleteSpacers for the pasted area. b. MarkSpacersForDeletion returns an UnmarkSpacersForDeletion for the same area.
This can be implemented in ModelStateImpl and used to transform the commands into changes before the changes are sent, and also to filter LoadResult before it is returned. This may include the following change to an API change:
Figure DE202015009277U1_0024

Bei manchen Implementierungen können Befehle vor der Verarbeitung entpackt werden, da jeder Befehl anders behandelt werden muss, abhängig davon, ob es sich um einen Vorschlagsbefehl handelt oder nicht. Bei manchen Implementierungen kann der Dokument-Editor eines kollaborativen Dokuments keinen Validierungs-Transformer für diesen Vorgang verwenden, da die Vorlage bei jedem Schritt nicht notwendigerweise valide ist. Bei manchen Implementierungen verwenden die Mitarbeiterauswahl-Änderungen die Vorlage bei der Überprüfung der Änderung, und speicherbare Änderungen verwenden die Vorlage bei der vorangehenden Überprüfung. In some implementations, instructions may be unpacked before processing because each instruction must be handled differently, depending on whether it is a suggestion instruction or not. In some implementations, the document editor of a collaborative document can not use a validation transformer for this operation because the template is not necessarily valid at each step. In some implementations, the employee selection changes use the template checking the change, and storable changes using the template in the previous review.

Bei manchen Implementierungen verlässt sich die vorliegende Offenbarung auf die Transformation, um Anweisung herauszufiltern, bevor sie an Leser gesendet werden. Bei dieser Herangehensweise ist die Leistung von Belang. Insbesondere kann sich die Transformation verlangsamen und kann bei jedem Speichern durchgeführt werden, wenn ein Dokument Vorschläge und Leser hat. Zur Lösung dieses Problems kann ein Leistungsdurchlauf für die Transformatoren durchgeführt werden. Da die allgemeine Herangehensweise n2 ist, kann der Gewinn begrenzt sein. Zur Vermeidung von Worst-Case-Szenarien kann die Anzahl der FilterBefehle, gegen die transformiert werden kann, begrenzt werden, und das Senden an Leser kann gestoppt werden, wenn diese Grenze erreicht ist. In some implementations, the present disclosure relies on the transformation to filter out instructions before they are sent to readers. In this approach, the performance of importance. In particular, the transformation may slow down and may be performed each time a document is submitted with suggestions and readers. To solve this problem, a power run for the transformers can be performed. Since the general approach is n2, the gain can be limited. To avoid worst-case scenarios, the number of filter commands that can be transformed can be limited, and sending to readers can be stopped when this limit is reached.

Von Belang ist weiterhin, dass Senden zurzeit hinter der ModelState-Sperre durchgeführt werden kann. Zur Lösung kann eine separate Sperre verwendet werden, wobei die separate Sperre Sendungen befiehlt, aber nicht andere Operationen am ModelState blockiert. Importantly, sending can currently be performed behind the ModelState lock. The solution may use a separate lock, with the separate lock commanding shipments but not blocking other operations on the ModelState.

In einer weiteren Ausführungsform kann die Erkennung der Zugriffsebene der Sitzung implementiert werden. Bei manchen Implementierungen sollte die Dokument-Editor-Anwendung für das kollaborative Dokument, um zu ermitteln, welche Sitzungen Browser-Kanal-Filterung brauchen, über Informationen verfügen, die angeben, welche Sitzungen Leser-Sitzungen sind. Es ist möglicherweise nicht ausreichend, den AccessLevel des Benutzers zu ermitteln, da die Zugriffsebene des Benutzers möglicherweise nicht unbedingt zum tatsächlichen Zugriff des Clients passt. Ein Redakteur kann beispielsweise anstelle eines Redakteurmodus eine Option zum Lesen des Dokuments in einem Lesemodus oder in einem Lektorenmodus wählen, oder ein Lektor kann eine Option zum Lesen des Dokuments in einem Lesemodus statt in einem Lektorenmodus wählen. Um dies zu implementieren, kann eine Funktion zum Erstellen von Sitzungen AppSessionManager so modifiziert werden, dass sie auch den AccessLevel der Sitzung erhält. Es kann auch einen Mechanismus zum Erkennen geben, welche Sitzungen einen bestimmten AccessLevel haben. In a further embodiment, the recognition of the access level of the session may be implemented. In some implementations, for the collaborative document document editor application, to determine which sessions require browser channel filtering, information should be provided that indicates which sessions are reader sessions. It may not be sufficient to determine the user's access level because the user's access level may not necessarily match the client's actual access. For example, an editor may select an option to read the document in a read mode or a reader mode rather than an editor mode, or a reader may choose an option to read the document in a read mode rather than a reader mode. To implement this, an AppSessionManager session builder can be modified to also receive the access level of the session. There may also be a mechanism for detecting which sessions have a particular access level.

Bei manchen Implementierungen kann, um den AccessLevel zu füllen, eine Funktion SessionInitiationInterceptor den AccessLevel des aktuellen Benutzers einholen, die Sitzung wird erstellt. Wenn es @SessionInitiator Endpunkte gibt, die Sitzungen auf einer erzwungenen niedrigeren Zugriffsebene initiieren (wie /view), dann können diese manuell überschrieben werden. Zum manuellen Überschreiben kann ein Parameter zu @SessionInitiator hinzugefügt werden, und zwar zur Verwendung mit dem optionalen AccessLevel anstelle des gültigen. Alternativ können die Endpunkte, die erzwungene niedrigere Zugriffsebenen ergeben, entfernt werden, wobei sie den Client zum Aktualisieren zwingen, wenn sie zugreifen können. In some implementations, to fill the AccessLevel, a SessionInitiationInterceptor function can get the access level of the current user and the session is created. If there are @SessionInitiator endpoints that initiate sessions on a forced lower access level (such as / view), then they can be manually overridden. For manual override, a parameter can be added to @SessionInitiator for use with the optional AccessLevel instead of the valid one. Alternatively, the endpoints that result in forced lower levels of access can be removed, forcing the client to update when they can access.

Bei einer weiteren Ausführungsform können die Verwendungen gemäß dem Folgenden kategorisiert werden: Verwendungen von Projektion. In another embodiment, the uses may be categorized according to the following: uses of projection.

WITHOUT_SUGGESTIONS: WITHOUT_SUGGESTIONS:

  • 1. Thumbnails. Dies sollte allgemein über ModelThumbnailer bearbeitet werden. 1. Thumbnails. This should generally be handled via ModelThumbnailer.
  • 2. Indizierung. Dies sollte allgemein über Indexer bearbeitet werden. 2. Indexing. This should generally be handled by indexers.
  • 3. Sozialer Markup. Dies sollte allgemein über Snippeter bearbeitet werden. 3. Social markup. This should generally be handled via snippeter.
  • 4. Crawler. 4. Crawler.
  • 5. Dokumentenkopien. 5. Document Copies.
  • 6. Vorschau und Veröffentlichung. 6. Preview and release.

Verwendungen von Projection.FULL: Uses of Projection.FULL:

  • 1. Rechtliche Ermittlungen und AbuseIAm. 1. Legal Investigations and AbuseIAm.
  • 2. Abläufe und Debug-Endpunkte. 2. Procedures and Debug Endpoints.
  • 3. Andere interne Verwendungen: Prüfen auf Vorgänger-Kommentare, Validierung, Rechtschreibprüfung, Transformation. 3. Other internal uses: Check for predecessor comments, validation, spell checking, transformation.

Verwendungen von Projection.fromAccessLevel: Uses of Projection.fromAccessLevel:

  • 1. Endpunkte nur für Redakteure verfügbar: Linkbearbeitung, Wiederherstellen, Maestro RPCs, Überarbeitungshistorie 1. Endpoints only available to editors: Link Editing, Restore, Maestro RPCs, Rework History
  • 2. Offline sync: ModelAction 2. Offline sync: ModelAction
  • 3. Export. Dies kann allgemein über Exporter bearbeitet werden. 3. Export. This can generally be edited via an exporter.

Manche Verwendungen können auf dem gültigen Zugang für die aktuelle Sitzung basieren. Mechanismen können vorhanden sein, die sicherstellen, dass die Sitzung und die Zugriffsebene übereinstimmend gehalten werden oder diese separat bearbeiten:

  • 1. SessionInitiator Aktionen und ihr gültiger Zugang: a. vonAccessLevel: Bearbeiten, Kommentieren b. WITHOUT_SUGGESTIONS: Ansicht, NativeWebView
  • 2. Verwendungen, die den gültigen Zugang für die Sitzung benötigen: a. Erstes Laden der Schriftarten der Vorlage. b. Drucken und Druckvorschau. c. Vorlagen-Catchup-Anfragen. d. Versenden von Befehlen.
Some uses may be based on valid access for the current session. There may be mechanisms to ensure that the session and the access level are kept consistent or work separately:
  • 1. Session Initiator actions and their valid access: a. from AccessLevel: Edit, Comment b. WITHOUT_SUGGESTIONS: View, NativeWebView
  • 2. Uses requiring valid access to the session: a. First loading the fonts of the template. b. Print and print preview. c. Template Catchup requests. d. Sending commands.

Unten befinden sich einige Beispiele von Verfahrensweisen, die hier in der Praxis beschrieben sind:

Figure DE202015009277U1_0025
Figure DE202015009277U1_0026
Below are some examples of practices that are described here in practice:
Figure DE202015009277U1_0025
Figure DE202015009277U1_0026

Bei manchen Implementierungen können, anstelle der Verwendung von operationaler Transformation zum Transformieren von Befehlen, bevor sie zum Leser gesendet werden, die Befehle anonymisiert werden, bevor sie nach unten gesendet werden, und dann dem Client vertraut, sie richtig zu transformieren. Diese Implementierung kann unerwünscht sein, da sie mit einer größeren und komplizierteren Änderung einhergeht. Insbesondere kann die Anonymisierung sowohl den Befehl als auch die Vorlagen-Voranwendung des Befehls erforderlich machen, also müsste dies zur Zeit der Anwendung erfolgen. Zum Client in anderen Pfaden gesendete Befehle, wie etwa Delta-Änderungen, würden eine Anwendung erfordern. Außerdem müsste das Anonymisierungssystem erstellt werden, ohne die Semantik der operationalen Transformation des Befehls (und möglicherweise der Anwendung) zu zerstören. Dies kann eine negative Auswirkung auf die Leistung des Clients (einschließlich Mobile) haben. Insbesondere können Transformationen auf dem Client für die Benutzer eine noch schlechtere Auswirkung auf die Leistung haben, und Methoden dafür, dies auf Client-Seite sauber zu bearbeiten, können es erforderlich machen, den Offline-Speicher zu ändern. In some implementations, instead of using operational transformation to transform commands before sending them to the reader, the commands may be anonymized before being sent down, and then trust the client to properly transform them. This implementation may be undesirable because it involves a larger and more complicated change. In particular, the anonymization may require both the command and the template pre-application of the command, so this would have to be done at the time of application. To the client in other paths Sent commands, such as delta changes, would require an application. In addition, the anonymization system would have to be built without destroying the operational transformation's semantics of the command (and possibly the application). This can have a negative impact on the performance of the client (including mobile). In particular, transformations on the client may have an even worse impact on performance for the users, and methods of cleanly handling it on the client side may require changing the offline memory.

Eine weitere Ausführungsform der hier beschriebenen Systeme und Verfahren beinhalten einen Benachrichtigungsmechanismus zur Benachrichtigung von Benutzern über Veränderungen am Dokument durch Mitarbeiter. In einer Online-Bearbeitungsumgebung für kollaborative Dokumente wünschen Redakteure im Allgemeinen, dass sie die Kontrolle über ihre Dokumente haben, und dass Mitarbeiter sie bearbeiten können. Redakteure möchten wissen, wer ihr Dokument geändert hat, wann es geändert wurde, und was geändert wurde. Die Systeme und Verfahren der vorliegenden Offenbarung sprechen dieses Problem an, indem sie eine Möglichkeit zur Benachrichtigung des Redakteurs (ebenso wie der Benutzer, die Benachrichtigungen abonniert haben) über Änderungen, die von Mitarbeitern an seinem Dokument vorgenommen wurden, zusammen mit einer Zusammenfassung der Änderungen. Another embodiment of the systems and methods described herein include a notification mechanism for notifying users of changes to the document by employees. In an online editing environment for collaborative documents, editors generally want them to be in control of their documents, and employees can work on them. Editors want to know who changed their document, when it was changed, and what was changed. The systems and methods of the present disclosure address this problem by providing a way of notifying the editor (as well as the user who subscribed to notifications) of changes made by staff to his document, along with a summary of the changes.

7 stellt ein exemplarisches Ablaufdiagramm 700 bereit, das Merkmale der Benachrichtigung von Redakteuren über Änderungen an einem kollaborativen Dokument durch andere Mitarbeiter darstellt. Existierende Systeme können Änderungen nachverfolgen, die verschiedene Benutzer an einem Dokument vorgenommen haben, aber stellen keine Änderungsbenachrichtigungen oder Zusammenfassungen der Änderungen für die Benutzer bereit, bei 701. In einer Ausführungsform können Änderungen, die von Mitarbeitern vorgenommen wurden, basierend auf der Zeit, die seit den Änderungen vergangen ist, batchverarbeitet werden, bei 702. Eine E-Mail oder Nachricht wird an den Eigentümer des Dokuments und an Benutzer, die Benachrichtigungen abonniert haben, gesendet. Die E-Mail oder Benachrichtigung kann Änderungen von vielen Mitarbeitern während einer angegebenen Zeitspanne enthalten. Jede Änderung in der Nachricht kann verschiedene Daten enthalten, wie etwa den Autor, den Zeitpunkt, zu dem die Änderung vorgenommen wurde, und eine Beschreibung der Änderung. Änderungen können von anderen Redakteuren oder von Mitarbeitern vorgenommen werden, die nicht volle Bearbeitungsrechte haben, wie etwa Rezensenten. Die von Rezensenten vorgenommenen Änderungen können als „Vorschläge“ aufgenommen werden und benötigen die Zustimmung eines Redakteurs vor der Anwendung auf ein Dokument. In manchen Implementierungen können Redakteure diese Änderungen direkt von der E-Mail oder Benachrichtigung aus annehmen oder ablehnen, indem sie die entsprechende Option wählen. 7 provides an exemplary flowchart 700 ready, which presents features of notifying editors about changes to a collaborative document by other employees. Existing systems can track changes made by different users to a document, but do not provide change notifications or summaries of changes to users 701 , In one embodiment, changes made by employees may be batch processed based on the time elapsed since the changes 702 , An e-mail or message is sent to the owner of the document and to users who have subscribed to notifications. The e-mail or notification may include changes by many employees during a specified period of time. Any change in the message may contain various data, such as the author, the time the change was made, and a description of the change. Changes may be made by other editors or by employees who do not have full editing rights, such as reviewers. The changes made by reviewers may be included as "suggestions" and require the consent of an editor prior to application to a document. In some implementations, editors may accept or decline these changes directly from the email or notification by selecting the appropriate option.

In manchen Implementierungen wird, während jede Änderung an einem Dokument vorgenommen wird, die Änderung an ein Benachrichtigungs-Softwaresystem gesendet, das das Änderungsereignis nach Dokument und Empfänger nachverfolgt. Der Eigentümer des Dokuments ist standardmäßig Abonnent von Benachrichtigungen, und andere Mitarbeiter können die Benachrichtigungen auch abonnieren. Änderungen im selben Bereich des Dokuments oder gleichzeitige Änderungen können gruppiert werden. Das Benachrichtigungs-Softwaresystem wartet dann eine konfigurierbare Zeitspanne ab, die darauf basieren kann, ob der Empfänger aktuell das Dokument ansieht oder nicht, bei 703. In some implementations, as each change is made to a document, the change is sent to a notification software system that tracks the change event by document and recipient. By default, the owner of the document subscribes to notifications, and other employees can also subscribe to the notifications. Changes in the same area of the document or simultaneous changes can be grouped. The notification software system then waits for a configurable amount of time based on whether the recipient is currently viewing the document or not 703 ,

Sobald die entsprechende Zeit vergangen ist, bei 704, werden alle Benachrichtigungsereignisse als Batch zusammengefasst und verarbeitet, bei 705. Für jede am Dokument vorgenommene Änderung kann ein separater Eintrag erzeugt werden (bei 706), der den Autor, den Zeitstempel der Änderung, die zuletzt vorgenommen wurde, und eine Textbeschreibung der Änderung auflistet. Once the appropriate time has passed, at 704 , all notification events are batched and processed 705 , For each change made to the document, a separate entry can be created (at 706 ) that lists the author, the timestamp of the change most recently made, and a textual description of the change.

In manchen Ausführungsformen beinhaltet die vorliegende Offenbarung Funktionen, die sicherstellen, dass Redakteure nicht übermäßig benachrichtigt werden. Änderungen, die rückgängig gemacht wurden und/oder im Dokument nicht mehr vorhanden sind, können ignoriert werden, und die Benachrichtigung für diese Änderungen kann unterdrückt werden. Wenn beispielsweise ein Mitarbeiter eine Änderung am Dokument vornimmt und die Zeitspanne verstreicht, kann der Redakteur eine E-Mail erhalten, die die Änderung beschreibt. Die Benachrichtigung über die Änderung kann jedoch unterdrückt werden, wenn der Mitarbeiter die Rückgängig-Funktionalität verwendet, die Änderung manuell rückgängig macht, oder wenn der Dokumentenabschnitt, in dem sich die Änderung befindet, vom Redakteur gelöscht wurde. In some embodiments, the present disclosure includes functions that ensure that editors are not overly notified. Changes that have been undone and / or are no longer present in the document can be ignored and the notification of these changes can be suppressed. For example, if an employee makes a change to the document and the time elapses, the editor may receive an e-mail describing the change. However, the notification of the change can be suppressed if the employee uses the undo functionality, manually undoes the change, or if the section of the document containing the change has been deleted by the editor.

Das Verwenden verschiedener Zeitspannen basierend darauf, ob ein Redakteur, der das Dokument ansieht, erlaubt es Redakteuren, die das Dokument aktiv ansehen, Aktionen an Bearbeitungen von Benutzern vorzunehmen, und verhindert, dass eine überflüssige Benachrichtigung versendet wird, während nach wie vor pünktliche Benachrichtigungen über Änderungen gesendet werden. Die Zeitspanne kann beispielsweise länger sein, wenn der Redakteur das Dokument aktiv ansieht, und kann kürzer sein, wenn der Redakteur das Dokument nicht aktiv ansieht. Using different time periods based on whether an editor viewing the document allows editors who actively view the document to take actions on user edits, and prevents a superfluous notification from being sent while still receiving punctual notifications about Changes are sent. The time span can be, for example be longer if the editor actively views the document, and may be shorter if the editor is not actively viewing the document.

Die hier beschriebenen Systeme und Verfahren stellen eine von Menschen lesbare Erklärung von an einem Dokument vorgenommenen Änderungen bereit und stellen dem Redakteur Informationen zur Verfügung, die verwendet werden können, um zu entscheiden, ob das Dokument jetzt, später, oder niemals angesehen wird. Diese Ermittlung ist möglicherweise nicht möglich, wenn dem Redakteur nur ein Zeitstempel zur Verfügung gestellt wird, der manuell überprüft werden muss, oder wenn der Redakteur sich darauf verlassen muss, dass die Mitarbeiter den Redakteur darüber informieren, dass Änderungen vorhanden sind, und was die Änderungen beinhalten. The systems and methods described herein provide a human-readable explanation of changes made to a document and provide the editor with information that can be used to decide whether the document is viewed now, later, or never. This determination may not be possible if the editor is only provided with a timestamp that needs to be manually verified, or if the editor needs to rely on the staff informing the editor that changes are in place and what the changes are include.

Hier beschriebene Ausführungsformen bieten gegenüber existierenden Systemen einige Vorteile. Das hier beschriebene Benachrichtigungssystem bedeutet beispielsweise, dass Redakteure nicht von Mitarbeitern manuell benachrichtigt werden müssen, wenn die Mitarbeiter Änderungen vorgenommen haben. Ähnlich dazu müssen Redakteure nicht selbst aktiv werden, um von Änderungen zu erfahren, da die E-Mails oder Benachrichtigungen innerhalb von Minuten nach der Änderung durch den Mitarbeiter versendet werden. Darüber hinaus gibt das Einbinden einer Beschreibung der Änderung in die Benachrichtigung dem Redakteur Kontext bezüglich der Änderungen. Das einfache Zur-Verfügung-Stellen eines Zeitstempels ist nicht genügend Information für den Redakteur, um zu entscheiden, ob eine Untersuchung von Änderungen berechtigt ist. Die vorliegende Offenbarung stellt dem Redakteur Informationen bereit, die es zulassen, dass er seine Zeit zwischen vielfachen Aufgaben besser einteilen kann, einschließlich des kollaborativ bearbeiteten Dokuments. Embodiments described herein offer several advantages over existing systems. For example, the messaging system described here means that editors do not have to be manually notified by employees when employees have made changes. Similarly, editors do not need to be active themselves to learn about changes, as the emails or notifications are sent within minutes of the change by the employee. In addition, including a description of the change in the notification gives the editor context regarding the changes. Simply providing a timestamp is not enough information for the editor to decide whether an investigation of changes is justified. The present disclosure provides the editor with information that allows him to better divide his time between multiple tasks, including the collaboratively edited document.

In manchen Implementierungen kann die Benachrichtigung keine Textbeschreibung beinhalten, aber auch eine Wiedergabe der Änderung im Kontext des restlichen Dokuments. Wenn ein Mitarbeiter beispielsweise Text durch neuen Text ersetzt hat, würde die Beschreibung in der Benachrichtigung nicht zur lauten „Ersetze ‚end‘ durch ‚letzter Teil von etwas‘“, sondern die Benachrichtigung kann auch die wenigen umgebenden Zeilen, Worte, oder Sätze des Dokuments beinhalten. In some implementations, the notification may not include a textual description, but also a representation of the change in the context of the remainder of the document. For example, if an employee replaces text with new text, the description in the notification would not be "replace, end ',' last part of something," but the notification may also include the few surrounding lines, words, or sentences of the document include.

In manchen Implementierungen kann die Benachrichtigung eine Zusammenfassung der Änderung beinhalten. Die folgende Beschreibung ist ein Beispiel für einen Vorgang zur Benachrichtigung von Redakteuren und Abonnenten über Änderungen in einem Dokument. Ein CommentNotificationListener kann auf Ereignisse prüfen, die immer dann auftreten können, wenn ein Kommentar oder eine Antwort erstellt, aktualisiert oder gelöscht wird. Die Ereignisse können verarbeitet werden, und eine Benachrichtigungs-Payload kann erstellt werden (wenn die Umstände zur Benachrichtigung berechtigen). Ein Benachrichtiger kann dann die Benachrichtigungs-Payload bündeln und sendet sie einem Benachrichtigungssystem, das die Nutzlast empfängt und zu einem Bucket von (Dokument, Empfänger) hinzufügt. Der Bucket kann eine konfigurierbare Zeitspanne lang gehalten werden (z. B. etwa 5 Minuten, wenn das Dokument geschlossen ist, 15 Minuten, wenn das Dokument vom Benutzer geöffnet ist, um benachrichtigt zu werden). Während mehr Kommentare oder Antworten hinzugefügt oder aktualisiert werden, werden sie demselben Bucket von (Dokument, Empfänger) hinzugefügt. Wenn die Zeitspanne verstrichen ist, nimmt das Benachrichtigungssystem alle Payloads in einem angegebenen Bucket und schickt diesen an einen Nachrichtenprozessor, der für die Bearbeitung des Buckets konfiguriert ist. Der Nachrichtenprozessor gibt den Bucket an einen Ereignisprozessor weiter, der die Benachrichtigungsereignisse verarbeitet, Ereignisse herausfiltert, die nicht gesendet werden sollen, die Ereignisse nach Kommentar-ID gruppiert, und die Ereignisse in HTML und Textnachrichtenkörper übersetzt. In some implementations, the notification may include a summary of the change. The following is an example of a process for notifying editors and subscribers of changes in a document. A CommentNotificationListener can check for events that can occur whenever a comment or response is created, updated, or deleted. The events can be processed and a notification payload can be created (if circumstances warrant the notification). A notifier may then bundle the notification payload and send it to a notification system that receives the payload and adds it to a bucket of (document, recipient). The bucket may be held for a configurable amount of time (eg, about 5 minutes when the document is closed, 15 minutes when the document is opened by the user to be notified). As more comments or answers are added or updated, they are added to the same bucket of (document, recipient). When the time has elapsed, the notification system takes all payloads in a specified bucket and sends it to a message processor configured to handle the bucket. The message processor passes the bucket to an event processor that processes the notification events, filters out events that should not be sent, groups the events by comment ID, and translates the events into HTML and body text.

Obwohl verschiedene hier beschriebene Ausführungsformen dargestellt wurden, ist es für Fachleute offensichtlich, dass diese Ausführungsformen nur beispielshalber bereitgestellt werden. Den Fachkräften werden zahlreiche Variationen, Abänderungen und Ersetzungen einfallen, ohne von der Veröffentlichung abzuweichen. Es sollte klar sein, dass diverse Alternativen zu den hier beschriebenen Ausführungen in der Praxis dieser Offenlegung angewandt werden können. Although various embodiments described herein have been presented, it will be apparent to those skilled in the art that these embodiments are provided by way of example only. Professionals will come up with many variations, modifications and substitutions without departing from the publication. It should be understood that various alternatives to the embodiments described herein may be used in the practice of this disclosure.

Eine weitere Ausführungsform der hier beschriebenen Systeme und Verfahren beinhaltet einen Benachrichtigungsmechanismus zur Benachrichtigung von Benutzern über Veränderungen am Dokument durch Mitarbeiter. Eine Dokument-Editor-Anwendung kann es Benutzern erlauben, Bearbeitungen als Vorschläge zu machen, die nachverfolgt werden, und angenommen oder abgelehnt werden müssen, bevor sie in das Dokument integriert werden. Dabei benötigt der Dokument-Editor einen Mechanismus zur Umwandlung jeder beliebigen Bearbeitung in eine Vorschlagsversion. Es ist wünschenswert, über einen automatischen Umwandlungsmechanismus zu verfügen, der allgemein existierende Bearbeitungen umwandeln kann, ohne Umwandlungslogik für jede Bearbeitung manuell implementieren zu müssen. So kann jede Controller-Ablaufregel wirksam eingesetzt werden, einschließlich jeder zukünftigen Regel, die geschrieben wird. Another embodiment of the systems and methods described herein includes a notification mechanism for notifying users of changes to the document by employees. A document editor application may allow users to make edits as suggestions that are tracked and accepted or rejected before they are integrated into the document. The document editor needs a mechanism to convert any editing into a proposal version. It is desirable to have an automatic conversion mechanism that can convert commonly-existing edits without having to manually implement conversion logic for each edit. So any controller expiration rule can be effectively used, including any future rule being written.

Wie in Verbindung mit 6 diskutiert, können Änderungen an der Dokumentenvorlage über eine Reihe von schrittweisen winzig kleinen Veränderungen beschrieben werden. In einem Textverarbeitungsprogramm können Varianten Zeicheneinfügungen, Zeichenlöschungen und die Anwendung von Formatvorlagen beinhalten. Eine einzelne Benutzerbearbeitung am Dokument kann zu vielfachen, auf die Vorlage angewendeten Variante führen. Ein Textverarbeitungsprogramm würde über Ablaufregeln verfügen, die ermittelt, welche Varianten auf die Vorlage angewendet werden, basierend auf der Aktion des Benutzers und dem aktuellen Status der Anwendung. As in connection with 6 discussed, changes to the template can be described over a series of incremental tiny changes. In a word processor, variations can include character insertion, deletion, and the use of styles. A single user edit on the document can result in multiple variants applied to the template. A word processor would have run rules that determine which variants will be applied to the template, based on the action of the user and the current status of the application.

8 stellt ein exemplarisches Ablaufdiagramm 800 bereit, das darstellt, wie Bearbeitungen in einen Vorschlag umgewandelt werden. Beginnend bei 801, bestimmt die Anwendung Vorschlagsversionen ihrer Varianten, um vorgeschlagene Objekte in der Anwendungsvorlage bei 801 zu kennzeichnen. Ein Textverarbeitungsprogramm kann beispielsweise eine Zeichen-Einfügen-Variante und eine Vorgeschlagene-Zeichen-Einfügen-Variante haben. Dann muss die Anwendung Funktionen zur Umwandlung von der regulären Version in die Vorschlagsversion bestimmen. Im vorstehenden Beispiel wäre dies eine Funktion, die von Zeichen Einfügen in Vorgeschlagene Zeichen Einfügen umwandelt. Wenn die Vorschlagsvariante eine andere Anwendungssemantik als die ursprüngliche Variante hat, dann muss die Transformationsvorschlags-Variante auch bereitgestellt werden. 8th provides an exemplary flowchart 800 ready, which shows how edits are transformed into a suggestion. Starting at 801 , the application determines suggested versions of their variants to include proposed objects in the application template 801 to mark. For example, a word processor may have a character-insert variant and a suggested-character-insert variant. Then the application must determine functions to convert from the regular version to the default version. In the example above, this would be a function that converts characters from Insert to Suggested Character. If the proposal variant has a different application semantics than the original variant, then the transformation proposal variant must also be provided.

Diese Varianten werden zum Transformieren zukünftiger Varianten verwendet, um die sich unterscheidenden Semantiken zu erfassen. Ein Textverarbeitungsprogramm kann beispielsweise eine Zeichen-Löschen-Variante haben, deren Vorschlagsversion die Zeichenmarkierung zum Löschen ist. Das Markieren der Zeichen zur Löschung löscht sie aber nicht wirklich – es erzeugt nur einen Vorschlag, sie zu löschen. Der Benutzer führt beispielsweise ein Drag & Drop aus, das dargestellt wird als Zeichen Löschen bei Kennung 100 und Zeichen Einfügen bei Kennung 200. Eine ungeprüfte Umwandlung würde diese in Zeichen zur Löschung bei Kennung 100 und Zeichen Einfügen bei Kennung 200 umwandeln. Die Kennung der ursprünglichen Einfügung nahm jedoch an, dass die Zeichen bereits gelöscht wurden. Daher kann ein Zeichen Einfügen bei 100 als die Transformationsvorschlags-Variante definiert werden. Ein Transformieren des Zeichen Einfügen bei 200 gegen diese veranlasst es, sich nach vorne auf die korrekte Position für die Einfügung zu verschieben. These variants are used to transform future variants to capture the differing semantics. For example, a word processor may have a character delete variant whose default version is the character marker for deletion. However, deleting the characters for deletion does not really erase them - it only generates a suggestion to delete them. For example, the user performs a drag-and-drop operation that is represented as deleting at identifier 100 and inserting at identifier 200. An unchecked conversion would convert it to deletion at identifier 100 and insert at identifier 200. However, the identifier of the original insertion assumed that the characters were already deleted. Therefore, an insertion character at 100 can be defined as the transformation proposal variant. Transforming the character insert at 200 against it causes it to move forward to the correct position for insertion.

Sobald diese Semantiken für die angegebene Anwendungsvorlage bestimmt worden sind, kann ein Vorschlag auf der Basis der folgenden Schritte erzeugt werden:

  • 1. M als aktuelle Anwendungsvorlage bestimmen (bei 802)
  • 2. Eine Kopie von M erstellen, um M‘ zu erzeugen (bei 802)
  • 3. Die Ablaufregel für die aktuelle Aktion des Benutzers auf M‘ ausführen. Die auf M‘ angewandten Varianten sammeln als ein Ergebnis dieser Logik in ein Feld A (bei 803).
  • 4. Ein leeres Feld T definieren (bei 804).
  • 5. Für jede Variante C in A: a. S erzeugen, die Vorschlagsversion von C, über die anwendungsspezifische Funktion b. F erzeugen, die Transformationsvorschlags-Variante für C, über die anwendungsspezifische Funktion c. S gegen T transformieren, um S‘ und T‘ zu erzeugen d. T = T‘ bestimmen e. F zu T hinzufügen f. S‘ auf M anwenden.
Dies übernimmt die Vorschlagsversion der Variante in die aktuelle Vorlage (bei 805). Nachdem das Verfahren abgeschlossen ist, wird die Vorschlagsversion der Benutzeraktion in die aktuelle Vorlage übernommen. Once these semantics have been determined for the specified application template, a proposal can be generated based on the following steps:
  • 1. Determine M as the current application template (at 802 )
  • 2. Make a copy of M to create M '(at 802 )
  • 3. Execute the expiration rule for the user's current action on M '. The variants applied to M 'accumulate as a result of this logic in a field A (at 803 ).
  • 4. Define an empty field T (at 804 ).
  • 5. For each variant C in A: a. S, the default version of C, via the application-specific function b. F, the transformation proposal variant for C, via the application-specific function c. Transform S to T to produce S 'and T' d. Determine T = T 'e. Add F to T f. Apply S 'to M.
This takes over the proposal version of the variant into the current template (at 805 ). After the procedure is completed, the default version of the user action is applied to the current template.

Bei der Bestimmung der Funktion für das Erzeugen von Varianten kann es nützlich sein, die Eigentümerschaft der betroffenen Objekte in Betracht zu ziehen. Wenn der Benutzer beispielsweise ein vorgeschlagenes Wort zurückgesetzt hat, sollte dieses Wort gelöscht werden, aber wenn ein nicht vorgeschlagenes Wort zurückgesetzt wurde, sollte es für die Löschung markiert werden. Um dies zu erreichen, das Konzept der Varianten-Eigentümerschaft bestimmen. Die Eigentümerschaft kann sich in einem von drei Status befinden: im Besitz, teilweise_im_Besitz oder nicht_im_Besitz. Während des Schritts (3) des vorstehenden Verfahrens wird die Eigentümerschaft jeder Variante auf der Basis der Objekte in der Vorlage, auf die sie sich auswirkt, berechnet. Eine Text löschende Variante wäre beispielsweise im Besitz, wenn der Text ein Vorschlag des aktuellen Benutzers ist, nicht_im_Besitz, wenn nicht, und teilweise_im_Besitz, wenn nur ein Teil des gelöschten Textes ein Vorschlag des aktuellen Benutzers ist. Dann kann, während des Schritts (5.a) die vorberechnete Eigentümerschaft während des Umwandlungsprozesses verwendet werden. Für eine Zeichen löschende Variante kann diese Eigentümerschaft verwendet werden, um eindeutig zu machen, ob in „Zeichen für die Löschung Markieren“ umzuwandeln ist, oder ob sie als „Zeichen Löschen“ belassen werden soll. When determining the function for generating variants, it may be useful to consider the ownership of the affected objects. For example, if the user has reset a suggested word, that word should be deleted, but if an un-suggested word has been reset, it should be marked for deletion. To achieve this, determine the concept of variant ownership. Ownership may be in one of three states: owned, partially-owned, or not-owned. During step (3) of the above method, the ownership of each variant is calculated based on the objects in the template it affects. For example, a text-deleting variant would be owned if the text is a suggestion of the current user, not-in-a-possession, if not, and partially_in_own if only part of the deleted text is a suggestion of the current user. Then, during step (5.a), the precalculated ownership may be used during the conversion process. For a character deleting variant, this ownership can be used to make it clear whether to turn into "mark deletion mark" or to leave it as "delete character".

Die Eigentümerschaft kann auch über Varianten von ähnlichen Typen während Schritt (3) angesammelt werden. Beim Betrachten dieser Ansammlung von Eigentümerschaften kann man sich bei der Umwandlung für einen Querschnitt über besondere Varianten entscheiden. Dies kann beispielsweise nützlich sein, wenn die Anwendung eine unterbrochene Auswahl zulässt und es wünschenswert ist, den Text entweder durchgehend zu löschen oder zur Löschung zu markieren. Ownership can also be accumulated via variants of similar types during step (3). When looking at this collection of ownership, one can opt for conversion for a cross-section of special variants. This may be useful, for example, if the application allows for an interrupted selection and it is desirable to either permanently delete the text or mark it for deletion.

Das Problem auf diese Weise zu lösen, hat die folgenden Vorteile:

  • 1. Es ist eine allgemeine Lösung, unabhängig von der anwendungsspezifischen Ablaufregel. Sie erfordert nur das Bestimmen von Umwandlungsfunktionen für die Varianten in der Anwendung. Dies minimiert die Implementierungskosten.
  • 2. Da sie unabhängig von der anwendungsspezifischen Ablaufregel funktioniert, erfordert sie weniger Wartung, wenn die Anwendung erweitert oder mit neuer Geschäftslogik modifiziert wird.
  • 3. Es ist einfach, Vorschläge auf neue Objekte in der Vorlage auszuweiten. Nur die Umwandlungsfunktionen für die Varianten müssen bestimmt werden, die Änderungen an diesen Objekten darstellen.
Solving the problem in this way has the following advantages:
  • 1. It is a general solution, regardless of the application-specific flow rule. It only requires determining conversion functions for the variants in the application. This minimizes the implementation costs.
  • 2. Because it works independently of the application-specific flow rule, it requires less maintenance if the application is extended or modified with new business logic.
  • 3. It's easy to extend suggestions to new objects in the template. Only the transformation functions for the variants that represent changes to these objects need to be determined.

Um Vorschlagsbefehle zu erzeugen, kann eine Oberfläche SuggestCommandProvider eingeführt werden, die eine Registrierung über die CommandRegistry hat. Eine weitere Oberfläche SuggestTransformCommandProvider kann übernommen werden, die Befehle erzeugt, indem sie eine Zuordnung zwischen den Befehlen und Vorschlagsbefehlen bereitstellt. Die Darstellung eines exemplarischen Pseudo-Code-Segments SuggestCommandProvider und SuggestTransformCommandProvider kann eine dem Folgenden ähnliche Form annehmen:

Figure DE202015009277U1_0027
Figure DE202015009277U1_0028
To generate suggestion commands, a surface SuggestCommandProvider can be introduced, which has a registry over the CommandRegistry. Another surface SuggestTransformCommandProvider can be adopted which generates commands by providing an association between the commands and suggest commands. The representation of an exemplary pseudo-code segment SuggestCommandProvider and SuggestTransformCommandProvider may take a similar form to the following:
Figure DE202015009277U1_0027
Figure DE202015009277U1_0028

Die Dokumentenvorlage kann eine Kopie des Kontexts erstellen, um die ursprüngliche Bearbeitung zu übernehmen, ohne den tatsächlichen ModelState zu modifizieren. Dazu kann eine für Änderungsvorschläge spezifische Oberfläche, die den Kontext kopiert, erstellt werden. Dies ist kein allgemeiner Kontext-Kopierer, da er Aktionen, die speziell für die Verwendung in Änderungsvorschlägen sind, wie etwa das Erstellen eines No-Op Wechselrichters.

Figure DE202015009277U1_0029
Figure DE202015009277U1_0030
The template can make a copy of the context to inherit the original edit without modifying the actual ModelState. This can be done by creating a customization surface that copies the context. This is not a general context copier as it is actions that are specific to use in change suggestions, such as creating a no-op inverter.
Figure DE202015009277U1_0029
Figure DE202015009277U1_0030

Um die oben beschriebene SelectionModel-Kopie zu machen, werden SelectionTreeGenerator und SelectionDocumentSliceGenerator von SelectionModel entfernt und in eine Hilfsprogrammklasse verschoben:

Figure DE202015009277U1_0031
To make the SelectionModel copy described above, SelectionModel's SelectionTreeGenerator and SelectionDocumentSliceGenerator are removed and moved to a utility class:
Figure DE202015009277U1_0031

Um ein SuggestEdit einzuführen, kann IdUtil von docs.text.util nach Docs.util verschoben werden. Im Folgenden ein Überblick über die zwei neuen Klassen:

Figure DE202015009277U1_0032
Figure DE202015009277U1_0033
Figure DE202015009277U1_0034
Beachten, dass der Aufruf von applySelection in SuggestEdit.applylntemal "scroll into view" und den Grund der Auswahländerung nicht richtig übermittelt. Dies wird in einer zukünftigen Bearbeitung abgedeckt, zurzeit werden diese fallen gelassen. To introduce a SuggestEdit, IdUtil can be moved from docs.text.util to Docs.util. Below is an overview of the two new classes:
Figure DE202015009277U1_0032
Figure DE202015009277U1_0033
Figure DE202015009277U1_0034
Note that the call to applySelection in SuggestEdit.applylntemal does not correctly convey "scroll into view" and the reason for the selection change. This will be covered in a future edit, currently it will be dropped.

Der SuggestEditProvider muss, immer wenn die Anwendung im Vorschlagsmodus ist, beim Verpacken des regulären EditProvider verwendet werden. Dies wird erreicht durch das Einführen eines SuggestEditApplier Wrapper:

Figure DE202015009277U1_0035
Figure DE202015009277U1_0036
The SuggestEditProvider must always be used when wrapping the regular EditProvider whenever the application is in suggestion mode. This is achieved by introducing a SuggestEditApplier Wrapper:
Figure DE202015009277U1_0035
Figure DE202015009277U1_0036

Dies lässt das Abfangen aller angewendeten Edit Providers und deren adäquate Verpackung zu. Rückgängigmachen oder reguläres Wiederholen muss möglicherweise nicht abgefangen werden, da diese die Befehle aus dem SuggestEdit-Ergebnis korrekt anwenden. Zusätzlich muss das wunderbare Wiederholen möglicherweise nicht abgefangen werden, da der gespeicherte Provider bereits der richtige ist. Der SuggestEditApplier wird in kollaborativen Dokumenten hinter dem Änderungsvorschlags-Kennzeichen erzeugt. Wenn der Benutzer im Kommentarmodus ist, dann wird der setSuggestionsMode aktiviert.  This allows the interception of all applied Edit Providers and their adequate packaging. Undo or regular repeat might not be intercepted because they correctly apply the commands from the SuggestEdit result. In addition, the wonderful repeating may not have to be intercepted because the stored provider is already the right one. The SuggestEditApplier is created in collaborative documents behind the change proposal indicator. If the user is in comment mode then the setSuggestionsMode is activated.

9 ist ein Blockschaltbild, das ein exemplarisches Computersystem 900 veranschaulicht, mit dem das System zur Verwaltung von Bearbeitungsvorschlägen in einem Dokument und die Verwendung der 18 implementiert werden können. In bestimmten Aspekten kann das Computersystem 900 unter Verwendung von Hardware oder einer Kombination aus Software und Hardware, entweder auf einem dezidierten Server, oder integriert in eine weitere Entität, oder verteilt auf mehrere Entitäten implementiert werden. 9 is a block diagram illustrating an exemplary computer system 900 illustrates how the system uses to manage edit proposals in a document and how to use the 1 - 8th can be implemented. In certain aspects, the computer system 900 using hardware or a combination of software and hardware, either on a dedicated server, or integrated into another entity, or deployed across multiple entities.

Das Computersystem 900 beinhaltet einen Bus 908 oder einen anderen Kommunikationsmechanismus zum Übermitteln von Information, und einen Prozessor 902, der zur Informationsverarbeitung mit Bus 908 verknüpft ist. Das Computersystem 900 kann beispielshalber mit einem oder mehr Prozessoren 902 implementiert werden. The computer system 900 includes a bus 908 or another communication mechanism for communicating information, and a processor 902 who bus to information processing 908 is linked. The computer system 900 can by way of example with one or more processors 902 be implemented.

Das Computersystem 900 kann zusätzlich zur Hardware Code beinhalten, der eine Ausführungsumgebung für das betreffende Computerprogramm erzeugt, z. B. Code, der Prozessor-Firmware, ein Protokoll-Stack, ein Datenbankverwaltungssystem, ein Betriebssystem oder eine Kombination von einem oder mehreren davon darstellt, der in einem beinhalteten Speicher 904, wie etwa einem Direktzugriffspeicher (RAM), einem Flash-Speicher, einem Nur-Lese-Speicher (ROM), einem programmierbaren Nur-Lese-Speicher (PROM), einem löschbaren PROM (EPROM), Verzeichnissen, einer Festplatte, einer Wechselplatte, einer CD-ROM, einer DVD oder einer anderen geeigneten Speichervorrichtung, die zum Speichern von Informationen und Anweisungen, die durch Prozessor 902 auszuführen sind, mit Bus 908 verbunden sind. Der Prozessor 902 und der Speicher 904 können von einem logischen Schaltkreis ergänzt oder in einen logischen Schaltkreis eingebaut werden. The computer system 900 may include, in addition to hardware, code that creates an execution environment for the particular computer program, e.g. Code representing processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them contained in a contained memory 904 such as random access memory (RAM), flash memory, read only memory (ROM), programmable read only memory (PROM), erasable PROM (EPROM), directories, hard disk, removable disk, a CD-ROM, a DVD or other suitable storage device used to store information and instructions issued by the processor 902 are to be carried out with bus 908 are connected. The processor 902 and the memory 904 can be supplemented by a logic circuit or built into a logic circuit.

Die hier beschriebenen Verfahren und Systeme können teilweise oder in Gänze durch eine Maschine bereitgestellt werden, die Computersoftware auf einem Server, Client, Firewall, Gateway, Hub, Router, oder anderer derartiger Computer- und/oder Netzwerk-Hardware ausführt. Das Softwareprogramm kann mit einem Server verbunden sein, der einen Dateiserver, Druckerserver, Domainserver, Internetserver, Intranetserver und anderen Varianten wie Sekundärserver, Hostserver, verteilte Serverstrukturen und dergleichen beinhalten kann. Der Server kann einen oder mehrere Speicher, Prozessoren, computerlesbare Medien, Speichermedien, Ports (physische und virtuelle), Kommunikationsgeräte und Schnittstellen beinhalten, die fähig sind, auf andere Server, Clients, Maschinen und Geräte über ein kabelgestütztes oder kabelloses Medium und dergleichen zuzugreifen. Die Verfahren, Programme oder Codes, wie hierin und an anderer Stelle beschrieben, können von dem Server ausgeführt werden. Zusätzlich dazu können weitere, zur Ausführung der anmeldungsgemäßen Verfahren erforderliche Geräte als Bestandteil der mit dem Server verbundenen Infrastruktur erachtet werden. The methods and systems described herein may be provided in part or in full by a machine that executes computer software on a server, client, firewall, gateway, hub, router, or other such computer and / or network hardware. The software program may be connected to a server that may include a file server, print servers, domain servers, Internet servers, intranet servers, and other variants such as secondary servers, host servers, distributed server structures, and the like. The server may include one or more memories, processors, computer readable media, storage media, ports (physical and virtual), communication devices, and interfaces that are capable of accessing other servers, clients, machines, and devices via a wired or wireless medium and the like. The methods, programs, or codes described herein and elsewhere may be executed by the server. In addition, other devices required to carry out the method according to the application can be considered as part of the infrastructure connected to the server.

Der Server kann eine Oberfläche für andere Vorrichtungen bereitstellen, die, ohne Einschränkung, Clients, andere Server, Drucker, Datenbankserver, Druckerserver, Fileserver, Kommunikationsserver, verteilte Server und ähnliches beinhaltet. Zusätzlich dazu kann diese Koppelung und/oder Verbindung die entfernte Ausführung von Programmen im gesamten Netzwerk begünstigen. Die Vernetzung einiger oder aller dieser Geräte kann die Parallelverarbeitung eines Programms oder Verfahrens an einem oder mehreren Orten begünstigen ohne vom Umfang des offenbarungsgemäßen Gegenstands abzuweichen. Zusätzlich kann jede der mit dem Server über eine Schnittstelle verbundenen Vorrichtungen mindestens ein Speichermedium beinhalten, das in der Lage ist, Verfahren, Programme, Code und/oder Anweisungen zu speichern. Eine zentrale Ablage Programmanweisungen zur Ausführung auf verschiedenen Geräten bereitstellen. In dieser Implementierung kann die Fernablage als Speichermedium für Programmcodes, Anweisungen und Programme dienen. The server may provide a surface for other devices including, without limitation, clients, other servers, printers, database servers, print servers, file servers, communication servers, distributed servers, and the like. In addition, this coupling and / or connection may favor the remote execution of programs throughout the network. The networking of some or all of these devices may facilitate parallel processing of a program or method at one or more locations without departing from the scope of the subject matter disclosed. In addition, each of the devices connected to the server via an interface may include at least one storage medium capable of storing processes, programs, code, and / or instructions. A central repository to provide program instructions for execution on different devices. In this implementation, the remote storage may serve as a storage medium for program codes, instructions and programs.

Die hier beschriebenen Verfahren und Systeme können teilweise oder in Gänze durch Netzwerkinfrastrukturen bereitgestellt werden. Die Netzwerk-Infrastruktur kann Elemente wie Computergeräte, Server, Router, Hubs, Firewalls, Clients, Personal Computer, Kommunikationsgeräte, Routinggeräte sowie andere aktive und passive Geräte, Module und/oder Komponenten wie in der Technik bekannt beinhalten. Die mit der Netzwerk-Infrastruktur verbundenen Computer- und Nicht-Computergeräte können außer anderen Komponenten ein Speichermedium wie Flash-Speicher, Puffer, Stapel, RAM, ROM und dergleichen beinhalten. Die hierin und an anderer Stelle beschriebenen Prozesse, Methoden, Programmcodes und Anweisungen können von einem oder mehreren Elementen der Netzwerk-Infrastruktur ausgeführt werden. The methods and systems described herein may be provided in part or in full by network infrastructures. The network infrastructure may include elements such as computing devices, servers, routers, hubs, firewalls, clients, personal computers, communication devices, routing devices, and other active and passive devices, modules, and / or components as known in the art. The computer and non-computer devices connected to the network infrastructure may include, besides other components, a storage medium such as flash memory, buffers, stacks, RAM, ROM, and the like. The processes, methods, program codes, and instructions described herein and elsewhere may be executed by one or more elements of the network infrastructure.

Die Computersoftware, Programmcodes und/oder Anweisungen können auf maschinenlesbaren Medien gespeichert und/oder verwendet werden, die beinhalten können: Computerkomponenten, Vorrichtungen und Aufzeichnungsmedien, die Digitale Daten speichern, die Berechnungen in einem Zeitintervall verwendet werden; Halbleiterspeicher, die als Direktzugriffspeicher (RAM) bekannt sind; Massenspeicher typisch für dauerhafteres Speichern, wie etwa optische Laufwerke, Formen von Magnetspeichern wie Festplatten, Bänder, Magnettrommeln, Karten und andere Arten; Prozessor-Register, Zwischenspeicher, flüchtiger Speicher, nicht-flüchtiger Speicher; optische Speicher wie etwa CD, DVD; Wechselmedien wie etwa Flashspeicher (z. B. USB-Sticks), Disketten, Magnetband, Lochstreifen, Lochkarten, eigenständige RAM-Platten, Ziplaufwerke, Wechsel-Massenspeichergeräte, Offline und Ähnliches; andere Computerspeicher wie etwa dynamischer Arbeitsspeicher, statischer Arbeitsspeicher, Lese-/Schreibspeicher, änderbare Speicher, schreibgeschützte Speicher, Speicher mit Direktzugriff, Speicher mit sequentiellem Zugriff, ortsadressierter, dateiadressierter, inhaltsadressierter Speicher, Network Attached Storage, Storage Area Network, Barcodes, magnetisierte Zeichen und Ähnliches. The computer software, program codes and / or instructions may be stored and / or used on machine-readable media that may include: computer components, devices, and recording media that store digital data that uses calculations at a time interval; Semiconductor memories known as Random Access Memory (RAM); Mass storage typical of more durable storage, such as optical drives, forms of magnetic storage such as hard disks, tapes, magnetic drums, cards, and other types; Processor registers, latches, volatile memory, non-volatile memory volatile memory; optical storage such as CD, DVD; Removable media such as flash memory (eg, USB flash drives), floppy disks, magnetic tape, punched tape, punched cards, standalone RAM disks, zip drives, removable storage devices, offline, and the like; other computer memory such as dynamic random access memory, static random access memory, read / write memory, changeable memory, read-only memory, random access memory, sequential access memory, location-addressed, file-addressed, content-addressed memory, network attached storage, storage area network, bar codes, magnetized characters, and like.

Die hier beschriebenen und veranschaulichten Elemente, einschließlich in Ablaufdiagrammen und Blockschaltbildern in allen Figuren, setzen logische Grenzen zwischen den Elementen voraus. In Übereinstimmung mit Software oder Hardware betreffenden technischen Praktiken können die veranschaulichten Elemente und deren Funktionen dennoch über von Computern ausführbare Medien implementiert werden, die einen Prozessor haben, der in der Lage ist, Programmanweisungen auszuführen, die darauf als monolithische Softwarestruktur, als eigenständige Softwaremodule oder als Module abgespeichert sind, die externe Routinen, Code, Dienste und so weiter einsetzen, oder jede Kombination daraus, und all diese Implementierungen können innerhalb des Geltungsbereichs der vorliegenden Offenbarung sein. The elements described and illustrated herein, including flowcharts and block diagrams in all figures, assume logical boundaries between the elements. However, in accordance with software or hardware engineering practices, the illustrated elements and their functions may still be implemented on computer-executable media having a processor capable of executing program instructions written thereon as a monolithic software structure, as standalone software modules, or as Modules that use external routines, code, services, and so on, or any combination thereof, and all of these implementations may be within the scope of the present disclosure.

Obwohl folglich die vorangehenden Zeichnungen und Beschreibungen funktionale Aspekte des offenbarten Systems darlegen, sollte keine besondere Softwareanordnung für das Implementieren dieser funktionalen Aspekte aus diesen Beschreibungen abgeleitet werden, außer ausdrücklich angegeben oder anders klar aus dem Kontext hervorgehend. Desgleichen versteht es sich, dass die verschiedenen hierüber bezeichneten und beschriebenen Techniken variiert werden können, und dass die Reihenfolge der Techniken an bestimmte Anwendungen der hierin offenbarten Techniken angepasst werden kann. Alle derartigen Varianten und Änderungen gehören zum Umfang dieser Offenbarung. Auf diese Weise darf die Darstellung und Beschreibung einer Reihenfolge für verschiedene Techniken nicht als spezifisch für die Ausführung dieser Techniken erforderliche Reihenfolge ausgelegt werden, es sei denn, diese ist für eine bestimmte Anwendung erforderlich, oder anderweitig angegeben, oder sie geht eindeutig aus dem Kontext hervor. Thus, while the foregoing drawings and descriptions set forth functional aspects of the disclosed system, no particular software arrangement for implementing these functional aspects should be inferred from these descriptions except as expressly stated or otherwise clearly obvious from the context. Likewise, it will be understood that the various techniques designated and described herein can be varied, and that the order of the techniques may be adapted to particular applications of the techniques disclosed herein. All such variations and changes are within the scope of this disclosure. Thus, the presentation and description of a sequence for various techniques should not be construed as a sequence specific to the execution of these techniques unless required or otherwise stated for a particular application, or clearly out of context ,

Die oben beschriebenen Verfahren und/oder Prozesse, und deren Techniken, können in Hardware implementiert werden, oder in jeder beliebigen Kombination aus Hardware und Software, die für eine besondere Anwendung geeignet ist. Die Hardware kann einen Allzweck-Computer und/oder dedizierte Computergeräte, oder spezifische Computergeräte oder bestimmte Aspekte oder Komponenten eines spezifischen Computergeräts beinhalten. Die Prozesse können in einem oder mehreren Mikroprozessoren, Mikrocontrollern, programmierbaren digitalen Signalprozessoren oder anderen programmierbaren Geräten zusammen mit internen und/oder externen Speichern ausgeführt werden. Die Prozesse können auch, oder stattdessen, in einen anwendungsspezifischen integrierten Schaltkreis, einen programmierbaren Universalschaltkreis, einen PAL oder jede beliebige andere Vorrichtung oder Kombination von Vorrichtungen eingebaut werden, die für das Verarbeiten der elektronischen Signale konfiguriert werden können. Es versteht sich weiterhin, dass ein oder mehrere Prozesse als computerlesbarer Code ausgeführt werden können, der auf einem maschinenlesbaren Medium ausgeführt werden kann. The above-described methods and / or processes, and their techniques, may be implemented in hardware, or any combination of hardware and software suitable for a particular application. The hardware may include a general purpose computer and / or dedicated computing devices, or specific computing devices, or certain aspects or components of a specific computing device. The processes may be performed in one or more microprocessors, microcontrollers, programmable digital signal processors or other programmable devices along with internal and / or external memories. The processes may also, or instead, be incorporated into an application-specific integrated circuit, a programmable general-purpose circuit, a PAL, or any other device or combination of devices that may be configured to process the electronic signals. It is further understood that one or more processes may be embodied as computer readable code that may be executed on a machine readable medium.

Die Anweisungen können im Speicher 904 gespeichert werden und in einem oder mehreren Computerprogrammprodukten, d. h. einem oder mehreren Modulen mit Computerprogrammanweisungen, die in einem computerlesbaren Medium zur Ausführung durch oder zur Steuerung des Betriebs, des Dienstes, verschlüsselt sind, und gemäß jedem beliebigen, Fachleuten wohlbekannten Verfahren, einschließlich, jedoch nicht beschränkt auf Computersprachen wie etwa datenorientierte Sprachen (z.B. SQL, dBase), Systemsprachen (z. B., C, Objective-C, C++, Assembly), Architektursprachen (z.B. Java, .NET) und Anwendungssprachen (z.B. PHP, Ruby, Perl, Python) implementiert werden können. The instructions can be stored in memory 904 stored in one or more computer program products, ie, one or more modules with computer program instructions encrypted in a computer readable medium for execution by or control of the operation, service, and any method well known to those skilled in the art, including, but not limited to limited to computer languages such as data-oriented languages (eg SQL, dBase), system languages (eg, C, Objective-C, C ++, assembly), architectural languages (eg Java, .NET) and application languages (eg PHP, Ruby, Perl, Python) can be implemented.

Ein wie hier diskutiertes Computerprogramm entspricht nicht unbedingt einer Datei in einem Dateisystem. Ein Programm kann in einem Teil einer Datei gespeichert werden, der andere Programme oder Daten enthält (z. B. einen oder mehrere Skripte, die in einem Auszeichnungssprachen-Dokument gespeichert sind), in einer einzelnen Datei, die dem betreffenden Programm zugeordnet ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Codeabschnitte speichern). Ein Computerprogramm kann eingerichtet werden, um auf einem Computer oder mehreren Computern, die an einem Standort angeordnet oder verteilt über mehrere Standorte sind und über ein Kommunikationsnetzwerk miteinander verbunden sind, ausgeführt zu werden. Die in dieser Beschreibung dargestellten Prozesse und Logik-Abläufe können durch einen oder mehrere programmierbare Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen durch das Arbeiten mit Eingabedaten und das Erzeugen von Ausgaben auszuführen. A computer program as discussed here does not necessarily correspond to a file in a file system. A program may be stored in a portion of a file containing other programs or data (eg, one or more scripts stored in a markup language document), in a single file associated with that program, or in several coordinated files (eg files that store one or more modules, subroutines or sections of code). A computer program may be set up to run on one or more computers located at one site or distributed over multiple sites and interconnected via a communications network. The processes and logic operations depicted in this specification may be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating outputs.

Das Computersystem 900 beinhaltet des Weiteren eine Datenspeichervorrichtung 906 wie etwa eine Magnetplatte oder optische Platte, die zum Speichern von Informationen und Anweisungen mit Bus 908 verknüpft ist. Das Computersystem 900 kann über das Eingabe-/Ausgabemodul 910 mit verschiedenen Vorrichtungen verbunden werden. Das Eingabe-/Ausgabemodul 910 kann jedes beliebige Eingabe-/Ausgabemodul sein. Beispiele für Eingabe-/Ausgabemodule 910 beinhalten Datenanschlüsse wie etwa USB-Anschlüsse. Das Eingabe-/Ausgabemodul 910 ist so konfiguriert, dass es mit einem Kommunikationsmodul 912 verbunden werden kann. Beispiele von Kommunikationsmodulen 912 beinhalten Netzwerkschnittstellenkarten wie etwa Ethernet-Karten und Modems. In bestimmten Aspekten ist das Eingabe-/Ausgabemodul 910 so konfiguriert, dass es mit einer Vielzahl von Vorrichtungen, wie beispielsweise einer Eingabevorrichtung 914 und/oder einer Ausgabevorrichtung 916 verbunden werden kann. Beispiele von Eingabevorrichtungen 914 beinhalten eine Tastatur und eine Zeigevorrichtung, z. B. eine Maus oder einen Trackball, durch die ein Benutzer dem Computersystem 900 Eingaben bereitstellen kann. Ebenso können andere Arten von Eingabevorrichtungen 914 verwendet werden, um Wechselwirkung mit einem Benutzer bereitzustellen, wie beispielsweise eine taktile Eingabevorrichtung, visuelle Eingabevorrichtung, Audio-Eingabevorrichtung oder eine Gehirn-Computer-Schnittstellenvorrichtung. Dem Benutzer bereitgestellte Rückmeldung kann beispielsweise irgendeine Form sensorischer Rückmeldung, z. B. visuelle Rückmeldung, auditive Rückmeldung oder taktile Rückmeldung sein; und eine Eingabe vom Benutzer kann in irgendeiner Form empfangen werden, einschließlich als akustische, Sprach-, taktile oder Gehirnwelleneingabe. Beispiele von Ausgabevorrichtungen 916 beinhalten Anzeigevorrichtungen wie beispielsweise eine Kathodenstrahlröhre (Cathode Ray Tube, CRT) oder einen LCD-Monitor (Liquid Crystal Display, Flüssigkristallanzeige), um dem Benutzer Informationen anzuzeigen. The computer system 900 further includes a data storage device 906 such as a magnetic disk or optical disk used for storing information and instructions with bus 908 is linked. The computer system 900 can via the input / output module 910 be connected to various devices. The input / output module 910 can be any input / output module. Examples of input / output modules 910 include data ports such as USB ports. The input / output module 910 is configured to work with a communication module 912 can be connected. Examples of communication modules 912 include network interface cards such as ethernet cards and modems. In certain aspects, the input / output module is 910 configured to communicate with a variety of devices, such as an input device 914 and / or an output device 916 can be connected. Examples of input devices 914 include a keyboard and a pointing device, e.g. As a mouse or trackball through which a user the computer system 900 Can provide input. Likewise, other types of input devices 914 can be used to provide interaction with a user, such as a tactile input device, visual input device, audio input device, or a brain-computer interface device. For example, feedback provided to the user may include some form of sensory feedback, e.g. Visual feedback, auditory feedback or tactile feedback; and input from the user may be received in any form, including as acoustic, speech, tactile, or brainwave input. Examples of output devices 916 include display devices such as a cathode ray tube (CRT) or a liquid crystal display (LCD) monitor to display information to the user.

Gemäß einem Aspekt der vorliegenden Offenbarung kann das System für die Verwaltung von Bearbeitungsvorschlägen in einer Dokumentenvorlage wie in 2A7 dargestellt, unter Verwendung eines Computersystems 900 als Reaktion auf Prozessor 902 implementiert werden, um eine oder mehr Sequenzen einer oder mehrerer Anweisungen, die im Speicher 904 enthalten sind, auszuführen. Diese Anweisungen können von einem anderen maschinenlesbaren Medium in Speicher 904, wie etwa Datenspeichervorrichtung 906, eingelesen werden. Die Ausführung von im Hauptspeicher 904 enthaltenen Anweisungssequenzen veranlasst den Prozessor 902, die hierin beschriebenen Verfahrensschritte auszuführen. Ein oder mehrere Prozessoren in einer Multiprocessing-Anordnung können auch verwendet werden, um die in Speicher 904 enthaltenen Anweisungssequenzen auszuführen. In alternativen Aspekten können festverdrahtete Schaltungen anstelle von oder in Kombination mit Softwareanweisungen verwendet werden, um verschiedene Aspekte der vorliegenden Offenbarung zu implementieren. Somit beschränken sich Aspekte der vorliegenden Offenbarung nicht auf eine spezifische Kombination von Hardwareschaltung und Software. According to one aspect of the present disclosure, the system may be used to manage processing suggestions in a document template, as in FIG 2A - 7 presented using a computer system 900 in response to processor 902 be implemented to one or more sequences of one or more instructions stored in memory 904 are included to execute. These instructions may be stored in memory by another machine-readable medium 904 , such as data storage device 906 , are read. The execution of in main memory 904 contained instruction sequences causes the processor 902 to carry out the method steps described herein. One or more processors in a multiprocessing arrangement may also be used to store in memory 904 execute instruction sequences contained. In alternative aspects, hardwired circuitry may be used in place of or in combination with software instructions to implement various aspects of the present disclosure. Thus, aspects of the present disclosure are not limited to a specific combination of hardware circuitry and software.

Verschiedene Aspekte des betreffenden in dieser Beschreibung beschriebenen Gegenstandes können in einem Computersystem implementiert werden, das eine Back-End-Komponente beinhaltet, z.B. als Datenserver, oder das eine Middleware-Komponente beinhaltet, z.B. einen Anwendungsserver, oder das eine Front-End-Komponente beinhaltet, z.B. einen Client-Computer mit einer grafischen Benutzeroberfläche oder einem Webbrowser, über die bzw. den ein Benutzer mit einer Implementierung des betreffenden und in dieser Beschreibung beschriebenen Gegenstandes interagieren kann, oder eine Kombination einer oder mehrerer dieser Back-End-, Middleware- oder Front-End-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetz. Das Kommunikationsnetzwerk kann beispielsweise einen beliebigen oder mehrere aus dem Personal Area Network (PAN), einem Local Area Network (LAN), einem Campus Area Network (CAN), einem Metropolitan Area Network (MAN), einem Wide Area Network (WAN), einem Broadband Network (BBN), dem Internet usw. beinhalten. Des Weiteren kann das Kommunikationsnetzwerk beispielsweise eine beliebige oder mehrere der folgenden Netzwerktopologien, einschließlich eines Busnetzwerks, eines Sternnetzwerks, eines Ringnetzwerks, eines Maschennetzwerks, eines Stern-Bus-Netzwerks, eines Baum- oder hierarchischen Netzwerks und dergleichen beinhalten, ist darauf aber nicht beschränkt. Die Kommunikationsmodule können beispielsweise Modems oder Ethernet-Karten sein. Various aspects of the subject matter described in this specification may be implemented in a computer system that includes a back-end component, e.g. as a data server or that includes a middleware component, e.g. an application server, or that includes a front-end component, e.g. a client computer having a graphical user interface or a web browser through which a user may interact with an implementation of the subject matter described and described herein, or a combination of one or more of these back-end, middleware, or front-end devices; end components. The components of the system may be interconnected by any form or medium of digital data communication, e.g. B. a communication network. For example, the communications network may include any one or more of Personal Area Network (PAN), Local Area Network (LAN), Campus Area Network (CAN), Metropolitan Area Network (MAN), Wide Area Network (WAN), Broadband Network (BBN), the Internet, etc. Further, the communication network may include, but is not limited to, any one or more of the following network topologies including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or hierarchical network, and the like. The communication modules may be, for example, modems or Ethernet cards.

Wie oben besprochen, kann das Computersystem 900 Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben. Computersystem 900 kann beispielsweise und ohne Beschränkung ein Enterpreis Server oder eine Servergruppe, einer oder mehr Desktop-Computer, ein oder mehr Laptop-Computer etc. sein. Das Computersystem 900 kann auch in einer anderen Vorrichtung eingebettet sein, beispielsweise und ohne Beschränkung ein Mobiltelefon, einen Personal Digital Assistant (PDA), einen mobilen Audio-Player, einen GPS-Empfänger, eine Videospielkonsole und/oder eine Fernseher-Set-Top-Box. As discussed above, the computer system 900 Clients and servers include. A client and server are generally remote from each other and typically interact over a communications network. The relationship between client and server arises due to computer programs running on the respective computers and having a client-server relationship with each other. computer system 900 For example, and without limitation, an enterprise server or group of servers, one or more desktop computers, one or more laptop computers, and so on. The computer system 900 may also be embedded in another device, including, without limitation, a mobile phone, a personal digital assistant (PDA), a mobile audio player, a GPS receiver, a video game console, and / or a television set-top box.

Der Begriff „maschinenlesbares Speichermedium“ oder „computerlesbares Medium“, wie hierin verwendet, bezieht sich auf ein Medium oder Medien, die an der Bereitstellung von Anweisungen an einen Prozessor 902 zur Ausführung beteiligt sind. Solch ein Medium kann viele Formen annehmen, einschließlich, jedoch nicht beschränkt auf nichtflüchtige Medien, flüchtige Medien und Übertragungsmedien. Nichtflüchtige Medien beinhalten beispielsweise optische oder Magnetplatten wie beispielsweise Datenspeichervorrichtung 906. Flüchtige Medien beinhalten dynamische Speicher wie beispielsweise Speicher 904. Übertragungsmedien beinhalten Koaxialkabel, Kupferdraht und Faseroptik, einschließlich der Drähte, die Bus 908 umfassen. Verbreitete Formen maschinenlesbarer Medien beinhalten beispielsweise eine Floppy-Disk, eine flexible Platte, eine Festplatte, Magnetband, ein anderes magnetisches Medium, eine CD-ROM, eine DVD, ein anderes optisches Medium, Lochkarten, Lochstreifen, ein anderes physisches Medium mit Lochmustern, ein RAM, ein PROM, ein EPROM, ein FLASH-EPROM, einen anderen Speicherchip oder eine Speicherkassette oder ein anderes Medium, von dem ein Computer lesen kann. Das maschinenlesbare Speichermedium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Speichervorrichtung, eine Stoffzusammensetzung, die ein maschinenlesbares verbreitetes Signal bewirkt, oder eine Kombination aus einem oder mehreren davon sein. The term "machine-readable storage medium" or "computer-readable medium" as used herein refers to a medium or media that is involved in providing instructions to a processor 902 involved in the execution. Such a medium can take many forms, including, but not limited to, nonvolatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks such as data storage devices 906 , Volatile media include dynamic storage such as memory 904 , Transmission media include coaxial cable, copper wire and fiber optics, including the wires, the bus 908 include. Common forms of machine-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, another magnetic medium, a CD-ROM, a DVD, another optical medium, punched cards, perforated tape, another physical medium with hole patterns RAM, a PROM, an EPROM, a FLASH EPROM, another memory chip, or a storage cartridge or other medium from which a computer can read. The machine-readable storage medium may be a machine-readable storage device, a machine-readable storage substrate, a storage device, a fabric composition that effects a machine-readable propagated signal, or a combination of one or more thereof.

Während diese Beschreibung viele Einzelheiten enthält, sollen diese nicht als Beschränkung des Umfangs dessen verstanden werden, was beansprucht wird, sondern vielmehr als Beschreibungen von bestimmten Implementierungen des betreffenden Gegenstands. Bestimmte Eigenschaften, die in dieser Spezifikation im Kontext gesonderter Implementierungen beschrieben sind, können auch in Kombination in einer einzelnen Implementierung implementiert werden. Umgekehrt können verschiedene, im Kontext einer einzelnen Implementierung beschriebenen Merkmale auch in mehreren Implementierungen gesondert oder in einer geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden. While this specification contains many particulars, these should not be construed as limiting the scope of what is claimed, but rather as describing particular implementations of the subject matter. Certain features described in this specification in the context of separate implementations may also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation may also be implemented in multiple implementations separately or in a suitable subcombination. In addition, one or more features of a claimed combination may in some instances be released from the combination, even if the features are described above as functioning in some combinations or even claimed as a combination, and the claimed combination may be attached to a subcombination or variation of a subcombination to get expelled.

Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Anforderung verstanden werden, dass diese Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Aspekten nicht als solche Trennung in allen Aspekten erfordernd aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können. Also, while activities in the drawings are presented in a particular order, this should not be construed as a requirement that these activities be performed in the particular order shown or in a sequential order, or that all activities shown must be performed to produce desired results to achieve. Under certain circumstances, multitasking and parallel processing can be beneficial. Moreover, the separation of various system components in the above-described aspects should not be construed as requiring such separation in all aspects, and it should be understood that the described program components and systems generally can be integrated together into a single software product or encapsulated into multiple software products.

Der betreffende Gegenstand dieser Beschreibung wurde in Bezug auf besondere Aspekte beschrieben. Es können jedoch andere Aspekte implementiert werden und diese fallen in den Rahmen des Schutzumfangs der folgenden Ansprüche. Die in den Ansprüchen wiedergegebenen Aktionen können beispielsweise in einer anderen Reihenfolge durchgeführt werden und dennoch gewünschte Ergebnisse erzielen. Die in den beigefügten Abbildungen dargestellten Verfahren erfordern beispielsweise nicht notwendigerweise die gezeigte Reihenfolge oder sequentielle Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Andere Variationen sind im Umfang der folgenden Ansprüche enthalten. The subject matter of this description has been described in relation to particular aspects. However, other aspects may be implemented and fall within the scope of the following claims. For example, the actions recited in the claims may be performed in a different order and still achieve desired results. For example, the methods illustrated in the accompanying drawings do not necessarily require the order shown or sequential order to achieve desired results. In certain implementations, multitasking and parallel processing may be beneficial. Other variations are included within the scope of the following claims.

Claims (2)

System zum Verwalten von Bearbeitungsvorschlägen in einem kollaborativen Dokument, wobei das System Folgendes umfasst: Mittel zum Erzeugen einer Dokumentenvorlage, die dem kollaborativen Dokument zugewiesen ist; Mittel zum Empfangen eines ersten Bearbeitungsvorschlags am kollaborativen Dokument von einem ersten Benutzer; Mittel zum Zuweisen eines ersten Vorschlagsbefehls zum ersten Bearbeitungsvorschlag basierend auf einem Typ des ersten Bearbeitungsvorschlags und einem Typ der Dokumentenvorlage; Mittel zum Anwenden des ersten Vorschlagsbefehls auf die Dokumentenvorlage, um den ersten Bearbeitungsvorschlag innerhalb des kollaborativen Dokuments vorzulegen; Mittel zum Empfangen einer Annahmeanzeige für den ersten Bearbeitungsvorschlag; und Mittel zum Aktualisieren der Dokumentenvorlage mit dem ersten Vorschlagsbefehl als Reaktion auf die eingegangene Annahmeanzeige. A system for managing editing proposals in a collaborative document, the system comprising: means for creating a template of the document associated with the collaborative document; Means for receiving a first edit proposal on the collaborative document from a first user; Means for assigning a first proposal command to the first processing proposal based on a type of the first processing proposal and a type of the document template; Means for applying the first suggestion command to the template to present the first suggestion within the collaborative document; Means for receiving an acceptance indication for the first processing proposal; and Means for updating the document template with the first suggestion command in response to the accepted acceptance indication. Prozessorlesbares, nichtflüchtiges Medium, das die vom Prozessor ausführbaren Anweisungen zur Verwaltung von Bearbeitungsvorschlägen in einem kollaborativen Dokument speichert, wobei die vom Prozessor ausführbaren Anweisungen Folgendes umfassen: Anweisungen zum Erzeugen einer Dokumentenvorlage, die dem kollaborativen Dokument zugewiesen ist; Anweisungen zum Empfangen eines ersten Bearbeitungsvorschlags am kollaborativen Dokument von einem ersten Benutzer; Anweisungen zum Zuweisen eines ersten Vorschlagsbefehls zum ersten Bearbeitungsvorschlag basierend auf einem Typ des ersten Bearbeitungsvorschlags und einem Typ der Dokumentenvorlage; Anweisungen zum Anwenden des ersten Vorschlagsbefehls auf die Dokumentenvorlage, um den ersten Bearbeitungsvorschlag innerhalb des kollaborativen Dokuments vorzulegen; Anweisungen zum Empfangen einer Annahmeanzeige für den ersten Bearbeitungsvorschlag; und Anweisungen zum Aktualisieren der Dokumentenvorlage mit dem ersten Vorschlagsbefehl als Reaktion auf die eingegangene Annahmeanzeige.  A processor readable nonvolatile medium storing the processor executable instructions for managing edit proposals in a collaborative document, the instructions executable by the processor including: Instructions for creating a document template associated with the collaborative document; Instructions for receiving a first edit proposal on the collaborative document from a first user; Instructions for assigning a first suggestion command to the first edit proposal based on a type of the first edit proposal and a type of the document template; Instructions for applying the first suggestion command to the template to present the first suggestion within the collaborative document; Instructions for receiving an acceptance indication for the first processing proposal; and Instructions for updating the document template with the first suggestion command in response to the accepted acceptance screen.
DE202015009277.2U 2014-06-24 2015-06-24 Systems for managing processing proposals in a text editing environment for collaborative documents Active DE202015009277U1 (en)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US201462016466P 2014-06-24 2014-06-24
US201462016280P 2014-06-24 2014-06-24
US201462016259P 2014-06-24 2014-06-24
US201462016262P 2014-06-24 2014-06-24
US201462016456P 2014-06-24 2014-06-24
US201462016451P 2014-06-24 2014-06-24
US62/016,259 2014-06-24
US62/016,451 2014-06-24
US62/016,466 2014-06-24
US62/016,280 2014-06-24
US62/016,456 2014-06-24
US62/016,262 2014-06-24

Publications (1)

Publication Number Publication Date
DE202015009277U1 true DE202015009277U1 (en) 2017-01-20

Family

ID=53718134

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202015009277.2U Active DE202015009277U1 (en) 2014-06-24 2015-06-24 Systems for managing processing proposals in a text editing environment for collaborative documents

Country Status (5)

Country Link
US (1) US10521498B2 (en)
EP (1) EP3161663A1 (en)
CN (2) CN106575287A (en)
DE (1) DE202015009277U1 (en)
WO (1) WO2015200495A1 (en)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10171579B2 (en) 2014-04-08 2019-01-01 Dropbox, Inc. Managing presence among devices accessing shared and synchronized content
US9998555B2 (en) 2014-04-08 2018-06-12 Dropbox, Inc. Displaying presence in an application accessing shared and synchronized content
US10091287B2 (en) 2014-04-08 2018-10-02 Dropbox, Inc. Determining presence in an application accessing shared and synchronized content
US10270871B2 (en) 2014-04-08 2019-04-23 Dropbox, Inc. Browser display of native application presence and interaction data
US10241989B2 (en) * 2014-05-21 2019-03-26 Adobe Inc. Displaying document modifications using a timeline
US20150379092A1 (en) * 2014-06-26 2015-12-31 Hapara Inc. Recommending literacy activities in view of document revisions
US9846528B2 (en) 2015-03-02 2017-12-19 Dropbox, Inc. Native application collaboration
US10216709B2 (en) 2015-05-22 2019-02-26 Microsoft Technology Licensing, Llc Unified messaging platform and interface for providing inline replies
US20160344677A1 (en) * 2015-05-22 2016-11-24 Microsoft Technology Licensing, Llc Unified messaging platform for providing interactive semantic objects
US11120342B2 (en) 2015-11-10 2021-09-14 Ricoh Company, Ltd. Electronic meeting intelligence
US10185707B2 (en) 2015-12-16 2019-01-22 Microsoft Technology Licensing, Llc Aggregate visualizations of activities performed with respect to portions of electronic documents
US10740297B2 (en) * 2015-12-17 2020-08-11 Box, Inc. Adaptive tool selection for conflict resolution in a multi-session collaboration setting
US10248933B2 (en) 2015-12-29 2019-04-02 Dropbox, Inc. Content item activity feed for presenting events associated with content items
US10620811B2 (en) 2015-12-30 2020-04-14 Dropbox, Inc. Native application collaboration
US10382502B2 (en) 2016-04-04 2019-08-13 Dropbox, Inc. Change comments for synchronized content items
US10592524B2 (en) * 2016-04-19 2020-03-17 Hyland Switzerland Sàrl Systems and methods for sharing context among standalone applications
US10346352B2 (en) * 2016-06-06 2019-07-09 Microsoft Technology Licensing, Llc Providing notification based on destination of file operation
US10176155B2 (en) 2016-08-09 2019-01-08 Microsoft Technology Licensing, Llc Modifying a document graph to reflect information relating to a document it represents
US11307735B2 (en) 2016-10-11 2022-04-19 Ricoh Company, Ltd. Creating agendas for electronic meetings using artificial intelligence
US10740407B2 (en) 2016-12-09 2020-08-11 Microsoft Technology Licensing, Llc Managing information about document-related activities
US10798180B1 (en) * 2017-04-11 2020-10-06 Wells Fargo Bank, N.A. Systems and methods for optimizing information collaboration
US10223341B1 (en) * 2017-09-01 2019-03-05 Adobe Inc. Document beautification using smart feature suggestions based on textual analysis
CN107656988B (en) * 2017-09-12 2020-04-07 北京北信源软件股份有限公司 Document editing method and system
US20190102367A1 (en) * 2017-10-03 2019-04-04 Philip Robert Smith Toggling between tracked markup formatting and blackline markup formatting
US11030585B2 (en) 2017-10-09 2021-06-08 Ricoh Company, Ltd. Person detection, person identification and meeting start for interactive whiteboard appliances
US11062271B2 (en) 2017-10-09 2021-07-13 Ricoh Company, Ltd. Interactive whiteboard appliances with learning capabilities
US11093695B2 (en) * 2017-10-18 2021-08-17 Email Whisperer Inc. Systems and methods for providing writing assistance
US10606621B2 (en) * 2018-05-08 2020-03-31 International Business Machines Corporation Assisting users to execute content copied from electronic document in user's computing environment
EP3588329A1 (en) * 2018-06-27 2020-01-01 Unify Patente GmbH & Co. KG Computer-implemented method and system for providing a review process of a document
WO2020018070A1 (en) 2018-07-16 2020-01-23 Google Llc Embedding productivity applications in third party platforms
US10984183B1 (en) * 2018-09-26 2021-04-20 Facebook, Inc. Systems and methods for sharing content
CA3120141A1 (en) * 2018-11-15 2020-05-22 Openeye Scientific Software, Inc. Molecular structure editor with version control and simultaneous editing operations
US11023503B2 (en) * 2018-12-13 2021-06-01 Textio, Inc. Suggesting text in an electronic document
US11080466B2 (en) 2019-03-15 2021-08-03 Ricoh Company, Ltd. Updating existing content suggestion to include suggestions from recorded media using artificial intelligence
US11573993B2 (en) 2019-03-15 2023-02-07 Ricoh Company, Ltd. Generating a meeting review document that includes links to the one or more documents reviewed
US11263384B2 (en) 2019-03-15 2022-03-01 Ricoh Company, Ltd. Generating document edit requests for electronic documents managed by a third-party document management service using artificial intelligence
US11392754B2 (en) * 2019-03-15 2022-07-19 Ricoh Company, Ltd. Artificial intelligence assisted review of physical documents
US11270060B2 (en) 2019-03-15 2022-03-08 Ricoh Company, Ltd. Generating suggested document edits from recorded media using artificial intelligence
US11720741B2 (en) * 2019-03-15 2023-08-08 Ricoh Company, Ltd. Artificial intelligence assisted review of electronic documents
US11194964B2 (en) 2019-03-22 2021-12-07 International Business Machines Corporation Real-time assessment of text consistency
US20200334326A1 (en) * 2019-04-18 2020-10-22 Microsoft Technology Licensing, Llc Architectures for modeling comment and edit relations
EP3966729A4 (en) * 2019-04-30 2022-11-09 Microsoft Technology Licensing, LLC Document auto-completion
CN110276056B (en) * 2019-05-28 2023-08-22 创新先进技术有限公司 Document editing method, device, equipment and system
US11196892B2 (en) * 2019-05-30 2021-12-07 Microsoft Technology Licensing, Llc Use of client compute for document processing
US11483294B2 (en) 2019-08-28 2022-10-25 University Of Maryland, Baltimore County Method for anonymizing network data using differential privacy
US11714967B1 (en) * 2019-11-01 2023-08-01 Empowerly, Inc. College admissions and career mentorship platform
WO2021090332A1 (en) * 2019-11-04 2021-05-14 Leadstart Publishing Pvt. Ltd. Systems and methods for providing a platform for feed-back based updateable content
US20220171744A1 (en) * 2020-12-01 2022-06-02 Sony Interactive Entertainment LLC Asset management between remote sites
CN112765948B (en) * 2020-12-31 2024-01-19 山西三友和智慧信息技术股份有限公司 Document generation editing method
CN112836932A (en) * 2021-01-04 2021-05-25 东山精密新加坡有限公司 Employee improvement advice system
CN112667342A (en) * 2021-01-06 2021-04-16 许继集团有限公司 Script driving method and system for visual logic editing of relay protection device
US11546278B2 (en) 2021-04-15 2023-01-03 Microsoft Technology Licensing, Llc Automated notification of content update providing live representation of content inline through host service endpoint(s)
US11243824B1 (en) * 2021-04-15 2022-02-08 Microsoft Technology Licensing, Llc Creation and management of live representations of content through intelligent copy paste actions
US11336703B1 (en) 2021-04-15 2022-05-17 Microsoft Technology Licensing, Llc Automated notification of content update providing live representation of content inline through host service endpoint(s)
JP2023027467A (en) * 2021-08-17 2023-03-02 富士フイルムビジネスイノベーション株式会社 Information processor, information processing system, and program
CN113869009A (en) * 2021-09-27 2021-12-31 南京苏宁电子信息技术有限公司 Document collaborative editing method and device, computer equipment and storage medium
US20240195847A1 (en) * 2022-12-09 2024-06-13 Salesforce, Inc. Real-time updates for document collaboration sessions in a group-based communication system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818678B2 (en) * 2002-10-31 2010-10-19 Litera Technology Llc Collaborative document development and review system
JP2004199401A (en) * 2002-12-18 2004-07-15 Fuji Xerox Co Ltd File management system and method for managing shared file
US7757162B2 (en) * 2003-03-31 2010-07-13 Ricoh Co. Ltd. Document collection manipulation
US20050033811A1 (en) * 2003-08-07 2005-02-10 International Business Machines Corporation Collaborative email
JP4521408B2 (en) * 2004-11-12 2010-08-11 株式会社ジャストシステム Document processing apparatus and document processing method
US20090249224A1 (en) * 2008-03-31 2009-10-01 Microsoft Corporation Simultaneous collaborative review of a document
US9176943B2 (en) * 2008-05-12 2015-11-03 Adobe Systems Incorporated Comment presentation in electronic documents
AU2011240695A1 (en) * 2010-04-12 2012-11-01 Google Inc. Real-time collaboration in a hosted word processor
US8682989B2 (en) * 2011-04-28 2014-03-25 Microsoft Corporation Making document changes by replying to electronic messages
US20130326330A1 (en) * 2012-06-01 2013-12-05 Google Inc. Integrating collaboratively proposed changes and publishing

Also Published As

Publication number Publication date
US10521498B2 (en) 2019-12-31
EP3161663A1 (en) 2017-05-03
CN114564920B (en) 2023-05-30
US20150370769A1 (en) 2015-12-24
CN114564920A (en) 2022-05-31
WO2015200495A1 (en) 2015-12-30
CN106575287A (en) 2017-04-19

Similar Documents

Publication Publication Date Title
DE202015009277U1 (en) Systems for managing processing proposals in a text editing environment for collaborative documents
DE602004000655T2 (en) A method for initiating server-based collaborative processing of e-mail attachments
DE202013012501U1 (en) Recognize relationships between edits and affect a subset of edits
DE69714598T2 (en) AUTOMATICALLY ARRANGING AND FORMATTING CONTENT FOR A DESIGN ON A MEDIUM
DE202011110895U1 (en) Real-time synchronized editing of documents by multiple users for blogging
DE69802839T2 (en) DEVICE AND METHOD WHICH OBJECT-ORIENTED PROGRAMS GENERATED FROM DIFFERENT SPECIALTY VERSIONS ARE ALLOWED TO COMMUNICATE
DE202018107014U1 (en) Generate slide presentations using a collaborative multi-content application
DE112015002695T5 (en) Systems and methods for manipulating a file in a non-native application using an application engine
DE112020000467T5 (en) FINAL STATE MACHINES FOR IMPLEMENTING WORKFLOWS FOR DATA OBJECTS MANAGED BY A DATA PROCESSING SYSTEM
DE202011110886U1 (en) Synthetic navigation elements for electronic documents
US20110289399A1 (en) System and method for document construction
DE202011110879U1 (en) Rich content in a browser-based word processor
DE10247529A1 (en) Status machine implemented in computer for processing business objects involves generating graphs, which correspond to given co-operation business entity, using text files
DE69810048T2 (en) Hypertext editing system
DE102012209711A1 (en) Systems and methods for using graphical representations to manage query results
DE102005046996A1 (en) Application Generic Sequence Diagram Generator Driven by a Non-Proprietary Language
DE202012013457U1 (en) Gather feedback from users to the web pages
DE202015009292U1 (en) Generation of an activity flow
EP2425331A1 (en) Method for producing at least one application guide
DE102013203831A1 (en) Method and system for master page based integrated editing and dynamic layout activation
DE102012001406A1 (en) Automatic configuration of a product data management system
DE202014010948U1 (en) Non-collaborative filters in a collaborative document
DE102015008619A1 (en) Method and apparatus for writing electronic mail messages starting from existing messages in an electronic mail program
EP2479664B1 (en) System and method for generating a source code for a computer program
WO2012017056A1 (en) Method and apparatus for automatically processing data in a cell format

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: G06F0017210000

Ipc: G06F0040100000

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