IP Library Granted Patent US 10,331,776
Granted Patent B2
US 10,331,776 · App. 15/411,237 · Granted Jun 25, 2019

System and method for convergent document collaboration

Inventors: Michael J. Thiesen (Bozeman, MT); Dominic J. Frost (Bozeman, MT); Stephen Bush (Missoula, MT); Grant Nelson (Bozeman, MT); Benjamin Echols (Bozeman, MT)
Assignee: Workiva Inc.
G06F17/24G06F16/9027G06F16/93G06F17/2235G06F17/2247G06F17/2288G06Q10/10G06Q10/103
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,331,776
App. No.
15/411,237
Granted
Jun 25, 2019
Kind
B2
Abstract

A computing device includes a processor that carries out actions comprising: storing a causal tree structure corresponding to a document, where the causal tree structure includes a sequence of editing instructions and each editing instruction is assigned an identifier unique to such editing instruction. The method further includes receiving a user editing instruction for the document, where the user editing instruction is assigned an identifier unique to the user editing instruction. The method includes storing the user editing instruction and the identifier assigned to the user editing instruction as an additional node to the causal tree structure. The method further includes broadcasting, to a plurality of client devices, the user editing instruction and the identifier assigned to the user editing instruction.

Claims (46)

1. A method implemented on a client device, the method comprising:

receiving, from a server, at least a portion of a causal tree structure corresponding to a document, wherein the causal tree structure comprises a sequence of nodes, and each node comprises an editing instruction and an identifier unique to such editing instruction;

storing the portion of the causal tree structure;

receiving a user editing instruction for the document;

assigning, using a processor of the client device, an identifier to the user editing instruction;

transmitting, to the server, the user editing instruction and the identifier assigned to the user editing instruction;

receiving, from the server, another user editing instruction for the document and an identifier assigned to the other user editing instruction, wherein the user editing instruction and the other user editing instruction share a cause identifier, and the cause identifier is an identifier of a prior editing instruction in the causal tree structure that precedes both the user editing instruction and the other user editing instruction;

storing the user editing instruction and the received other user editing instruction as additional nodes to the portion of the causal tree structure; and

rendering the user editing instruction and the received other user instruction,

wherein assigning the identifier to the user editing instruction comprises

assigning a site identifier unique to the user's editing session on the client device, and

assigning a stamp, which is a numeric value based on identifiers assigned to editing instructions in the causal tree structure stored on the server.

2. The method of claim 1 , further comprising composing the document by traversing identifiers of the nodes in the portion of the causal tree structure in a sequential order.

3. The method of claim 1 , wherein the user editing instruction comprises an instruction to modify a series of consecutive data in the document.

4. The method of claim 1 , wherein each editing instruction in the nodes of the causal tree structure comprises at least one instruction selected from the group consisting of a modification of a value, a modification of metadata, a link to another node of the causal tree structure, a link to a node in another causal tree structure corresponding to another document, a link to another causal tree structure, and a link to data residing outside the causal tree structure.

5. A method implemented on a client device, the method comprising:

receiving, from a server, at least a portion of a causal tree structure corresponding to a document, wherein the causal tree structure comprises a sequence of nodes, and each node comprises an editing instruction and an identifier unique to such editing instruction;

storing the portion of the causal tree structure;

receiving a user editing instruction for the document;

assigning, using a processor of the client device, an identifier to the user editing instruction;

transmitting, to the server, the user editing instruction and the identifier assigned to the user editing instruction;

receiving, from the server, another user editing instruction for the document and an identifier assigned to the other user editing instruction, wherein the user editing instruction and the other user editing instruction share a cause identifier, and the cause identifier is an identifier of a prior editing instruction in the causal tree structure that precedes both the user editing instruction and the other user editing instruction;

storing the user editing instruction and the received other user editing instruction as additional nodes to the portion of the causal tree structure;

rendering the user editing instruction and the received other user instruction;

receiving a next user editing instruction; and

assigning an identifier to the next user editing instruction based on the identifier assigned to the user editing instruction and the identifier assigned to the other user editing instruction.

6. The method of claim 5 , further comprising composing the document by traversing identifiers of the nodes in the portion of the causal tree structure in a sequential order.

7. The method of claim 5 , wherein the user editing instruction comprises an instruction to modify a series of consecutive data in the document.

8. The method of claim 5 , wherein each editing instruction in the nodes of the causal tree structure comprises at least one instruction selected from the group consisting of a modification of a value, a modification of metadata, a link to another node of the causal tree structure, a link to a node in another causal tree structure corresponding to another document, a link to another causal tree structure, and a link to data residing outside the causal tree structure.

9. A method implemented on a server, the method comprising:

storing, on a database of the server, a causal tree structure corresponding to a document, wherein the causal tree structure comprises a sequence of nodes, and each node comprises an editing instruction and an identifier unique to such editing instruction;

receiving, at the server, a first user editing instruction transmitted by a first client device and a second user editing instruction transmitted by a second client device, wherein

the first user editing instruction is assigned a first identifier and a first time stamp,

the second user editing instruction is assigned a second identifier and a time stamp, and

the first user editing instruction and the second user editing instruction are assigned the same cause identifier, which is an identifier of a prior editing instruction in the causal tree structure that precedes both the first user editing instruction and the second user editing instruction;

comparing the first time stamp and the second time stamp;

if the first time stamp has an earlier time than the second time stamp, processing the first user editing instruction before processing the second user editing instruction;

if the first time stamp has a later time than the second time stamp, processing the second user editing instruction before processing the first user editing instruction; and

storing the first user editing instruction as a first additional node to the causal tree structure, and storing the second user editing instruction as a second additional node to the causal tree structure.

10. The method of claim 9 , further comprising:

transmitting, to the first client device, the second additional node to render changes to the document corresponding to the first user editing instruction and the second user editing instruction; and

transmitting, to the second client device, the first additional node, to render changes to the document corresponding to the first user editing instruction and the second user editing instruction.

11. The method of claim 9 , wherein:

the first identifier comprises a first site identifier unique to a first user's editing session on the first client device, and a first stamp, which is a numeric value based on identifiers assigned to editing instructions in the causal tree structure; and

the second identifier comprises a second site identifier unique to a second user's editing session on the second client device, and a second stamp, which is a numeric value based on identifiers assigned to editing instructions in the causal tree structure.

12. The method of claim 9 , wherein each editing instruction in the nodes of the causal tree structure comprises at least one instruction selected from the group consisting of a modification of a value, a modification of metadata, a link to another node of the causal tree structure, a link to a node in another causal tree structure corresponding to another document, a link to another causal tree structure, and a link to data residing outside the causal tree structure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2017
From: THIESEN, MICHAEL J.; FROST, DOMINIC J.; BUSH, STEPHEN; NELSON, GRANT; ECHOLS, BENJAMIN
To: WORKIVA INC.
Reel/Frame 041026/0771 →
Continuity (4)
Continuation 15049221 · Feb 22, 2016
Continuation 14808029 · Jul 24, 2015
Provisional Application 62155000 · Apr 30, 2015
Related Publication 20170132188A1 · May 11, 2017
Cited By (4)
US 12,229,502 US 12,511,471 US 12,541,640 US 12,585,867