Simultaneous multi-user document editing system
First Claim
1. A method for simultaneous multi-user editing of a document by a plurality of users including a first user and a second user, wherein the document includes primary data, the method comprising:
- (a) dividing the primary data into three or more mutually exclusive sections, including a first section and a last section;
(b) storing each of the sections in a separate primary container, wherein;
(i) each of the primary containers is a sibling container;
(ii) the primary container in which the first section is stored is designated as a head primary container;
(iii) the primary container in which the last section is stored is designated as a tail primary container;
(iv) the primary containers are part of a master document tree data structure stored in a file system accessible to a server; and
(v) the master document tree includes a parent container; and
(c) linking the primary containers to form a linked list corresponding to the order of the sections in the document, and wherein the primary container corresponding to the first section is at the head of the linked list and the primary container corresponding to the last section is at the tail of the linked list;
(d) recording a link to the head primary container in the parent container;
(e) recording a link to the tail primary container in the parent container;
(f) transmitting a copy of at least part of the master document tree from the server to a first client operated by the first user;
(g) transmitting a copy of at least part of the master document tree from the server to a second client operated by the second user;
(h) receiving a first lock request from the first client, the first lock request identifying a first group of primary containers and wherein the first group of primary containers corresponds to a first part of the document;
(j) determining whether the first user may lock each of the primary containers in the first group of primary containers by at least ensuring that no primary container in the first group of primary containers is locked by a user other than the first user;
(k) if the result in (j) is that the first user may lock each of the primary containers in the first group of primary containers, then;
(i) locking each of the primary containers in the first group of primary containers and identifying each of the primary containers in the first group of primary containers as being locked by the first user;
(ii) transmitting a first confirm lock message to the first client;
(iii) transmitting a first update message to the second client, wherein the first update message indicates that each primary container in the first group of primary containers has been locked;
(iv) receiving a first post request from the first client, wherein the first post request includes one or more new primary containers corresponding to a modified version of the first part of the document;
(v) modifying the master document tree in accordance with the first post request including inserting the one or more new primary containers into the linked list of primary containers; and
(vi) transmitting a second update message to the second client, wherein the second update message includes the one or more new primary containers; and
(l) if the result in (j) is that the first user may not lock each primary container in the first group of primary containers, then transmitting a refused lock message to the first user,wherein the parent container does not include a direct link to any of the primary containers in the linked list other than the head primary container and the tail primary container.
3 Assignments
0 Petitions
Accused Products
Abstract
A system and methods for simultaneous editing of a document by two or more users are disclosed. The document is divided into a number of sections. Each section is stored in a separate data container, which is part of a document tree. A master copy of the document tree is accessible to a server which transmits all or part of the document tree to two or more clients, each of which is operated by a user. The clients can independently lock different sections, allowing the users to simultaneously edit different sections. When a user completes editing a section, the modified section is stored on the master server and broadcast to other users. The document tree is headed by an independently lockable and editable parent container which is used to store summary information and other information, such as default formatting and other document wide information.
-
Citations
32 Claims
-
1. A method for simultaneous multi-user editing of a document by a plurality of users including a first user and a second user, wherein the document includes primary data, the method comprising:
-
(a) dividing the primary data into three or more mutually exclusive sections, including a first section and a last section; (b) storing each of the sections in a separate primary container, wherein; (i) each of the primary containers is a sibling container; (ii) the primary container in which the first section is stored is designated as a head primary container; (iii) the primary container in which the last section is stored is designated as a tail primary container; (iv) the primary containers are part of a master document tree data structure stored in a file system accessible to a server; and (v) the master document tree includes a parent container; and (c) linking the primary containers to form a linked list corresponding to the order of the sections in the document, and wherein the primary container corresponding to the first section is at the head of the linked list and the primary container corresponding to the last section is at the tail of the linked list; (d) recording a link to the head primary container in the parent container; (e) recording a link to the tail primary container in the parent container; (f) transmitting a copy of at least part of the master document tree from the server to a first client operated by the first user; (g) transmitting a copy of at least part of the master document tree from the server to a second client operated by the second user; (h) receiving a first lock request from the first client, the first lock request identifying a first group of primary containers and wherein the first group of primary containers corresponds to a first part of the document; (j) determining whether the first user may lock each of the primary containers in the first group of primary containers by at least ensuring that no primary container in the first group of primary containers is locked by a user other than the first user; (k) if the result in (j) is that the first user may lock each of the primary containers in the first group of primary containers, then; (i) locking each of the primary containers in the first group of primary containers and identifying each of the primary containers in the first group of primary containers as being locked by the first user; (ii) transmitting a first confirm lock message to the first client; (iii) transmitting a first update message to the second client, wherein the first update message indicates that each primary container in the first group of primary containers has been locked; (iv) receiving a first post request from the first client, wherein the first post request includes one or more new primary containers corresponding to a modified version of the first part of the document; (v) modifying the master document tree in accordance with the first post request including inserting the one or more new primary containers into the linked list of primary containers; and (vi) transmitting a second update message to the second client, wherein the second update message includes the one or more new primary containers; and (l) if the result in (j) is that the first user may not lock each primary container in the first group of primary containers, then transmitting a refused lock message to the first user, wherein the parent container does not include a direct link to any of the primary containers in the linked list other than the head primary container and the tail primary container. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
wherein q(i) occurs before (k)(iv).
-
-
21. The method of claim 20 wherein in (q)(iv) and in (q)(vi), the modified version of the parent container stores a modified version of the summary information.
-
22. The method of claim 20 wherein in (q)(iii) the third update message also indicates that the parent container has been locked by the second user.
-
23. The method of claim 20 wherein in (q)(vi), the fourth update message also indicates that the modified version of the parent container storing the modified version of the summary information has been posted by the second user.
-
24. The method of claim 20 wherein at least one of the primary containers stores change tracking information.
-
25. The method of claim 20 wherein the document also includes formatting information, and wherein the formatting information is stored in the parent container and wherein in (q)(iv) and in (q)(vi) the modified version of the parent container includes modified formatting information.
-
26. The method of claim 25 wherein the formatting information includes change tracking information.
-
27. The method of claim 20 further including:
-
(i) assigning each user a unique user handle; (ii) recording a user'"'"'s privilege level to access the summary information by storing the user'"'"'s handle in the parent container together with any restrictions on the user'"'"'s permission to access the summary information; and (iii) wherein in (p) determining that the second user can lock the parent container also includes ensuring that the second user'"'"'s privilege level allows the second user to lock the parent container.
-
-
28. The method of claim 1 wherein the document tree data structure is a document sub-tree forming part of a container tree data structure and wherein the container tree data structure includes other document sub-trees corresponding to other documents.
-
29. The method of claim 28 wherein the container tree data structure has a root container and wherein the parent container of the document tree data structure is a child container of the root container.
-
30. The method of claim 1 further including:
-
(i) assigning each user a unique user handle; (ii) recording a user'"'"'s privilege level to access a section of the document by storing the user'"'"'s handle in the associated container together with any restrictions on the user'"'"'s permission to access the section; and (iii) wherein in (j) determining that the first user can lock each of the primary containers in the first group of primary containers also includes ensuring that the first user'"'"'s privilege level allows the first user to lock each of the primary containers in the first group of primary containers.
-
-
31. The method of claim 1 wherein at least one section is deleted from the first part of the document, and in k(iv) the post request includes fewer containers than in the first group of primary containers.
-
32. The method of claim 1 further including recording a link to the parent container in each of the primary containers.
Specification