Framework for constructing shared documents that can be collaboratively accessed by multiple users
Abstract
A Shared Document Framework for use by an application program provides collaborative access to a shared document by means of a caucus service associated with the shared document. The caucus service receives messages from caucus members and broadcast transmits them to all caucus members in global order. The Framework includes shared document class information, from which a shared document instance may be created. The shared document class information includes program code logic for creating a local copy of the document being shared; program code logic for causing the application program to join the caucus service as a member; program code logic for receiving a command binding from the application program and sending it to the caucus service as a message; and program code logic, responsive to a command binding broadcast by the caucus, for applying the received command binding to the document when the application program did not send the command binding and for applying the original command binding when the application program did send the command binding.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1. A Shared Document Framework for use by an application program executing on a computing system having a processor and a memory, the framework providing collaborative access by a plurality of caucus members to a shared document, and comprising: (a) means for creating a caucus service associated with the document, the caucus service including means for receiving messages from each of the plurality of caucus members and broadcast transmitting the messages to all of the plurality of caucus members in global order; and (b) shared document class information, residing in the memory, for creating a shared document instance in the memory in response to a document open request by the application program, the shared document class information including: first program code logic, executable on the processor, for creating a local copy of the shared document in the memory, second program code logic, executable on the processor, for causing the application program to join the caucus service as a caucus member; third program code logic, executable on the processor, for receiving a command binding from the application program and sending a copy of the received command binding to the caucus service as a message; and fourth program code logic, executable on the processor and responsive to a command binding broadcast by the caucus, for applying a command binding to the local copy of the shared document through a predefined document interface.
2. The framework of claim 1 wherein the third program code logic stores the command binding received from the application program.
3. The framework of claim 2 wherein the fourth program code logic is responsive to a command binding broadcast by the caucus for comparing the broadcast command binding to the command binding stored by the third program code logic and for applying the broadcast command binding to the local shared document copy through a predefined document interface when the broadcast command binding is not the same as the stored command binding.
4. The framework of claim 3 wherein the fourth program code logic applies the stored command binding to the local shared document copy through a predefined document interface when the broadcast command binding is the same as the stored command binding.
5. The framework of claim 1 wherein the predefined document interface includes a plurality of predefined member functions that receive the command binding as a call parameter and wherein the plurality of predefined member functions include member functions for handling incremental commands.
6. The framework of claim 1 wherein the first program logic includes logic responsive to the document open request for pausing the caucus service thereby preventing messages from being broadcast; logic for obtaining a copy of the shared document; logic for transferring the shared document copy to the application program issuing the document open request; and logic responsive to the transfer of the shared document copy for resuming the caucus so that it will resume broadcasting messages.
7. The framework of claim 1 further comprising program code logic responsive to a first request to open the shared document for constructing a document server having a predefined document interface and means for opening the shared document; program code logic for causing the document server to join the caucus service as a caucus member, wherein messages broadcast on the caucus service are received by the document server and applied to the original copy of the shared document; and program code logic in the document server for cooperating with the first program logic for creating a local copy of the shared document for the application program.
8. The apparatus of claim 1 further comprising: means responsive to a first request to open the shared document for constructing a document server program in the memory, the document server program having a predefined document interface and means for opening the shared document; means for causing the document server to join the caucus service as a caucus member, wherein messages broadcast on the caucus service are received by the document server and applied to the original copy of the shared document; and means in the document server for cooperating with the first program logic for creating a local copy of the shared document for each of the plurality of application programs.
9. The method of claim 1 wherein the predefined document interface includes a plurality of predefined member functions and wherein step (f) further comprises the step of: (f4) calling at least one of the predefined member function using the command binding as a call parameter.
10. Collaboration apparatus for use in a computing system having a processor and a memory, the apparatus providing collaborative access by a plurality of application programs to a shared document, and comprising: (a) caucus means in the memory responsive to messages received from each of a plurality of caucus members for broadcast transmitting received messages to all of the plurality of caucus members in global order; and (b) means for creating a local copy of the shared document in the memory for each of the plurality of application programs; (c) means for creating a predefined document interface for each local copy of the shared document; (d) means for causing each of the plurality of application programs to join the caucus service as a caucus member; (e) means for receiving a command binding from one of the plurality of application programs and sending a copy of the received command binding to the caucus service as a message; and (f) means in each of the plurality of application programs and responsive to a command binding broadcast by the caucus, for applying a command binding to the application local copy of the shared document through the predefined document interface for the local copy.
11. The apparatus of claim 10 wherein the receiving means comprises means for storing the command binding received from the application program in the memory.
12. The apparatus of claim 11 wherein the applying means comprises means responsive to a command binding broadcast by the caucus for comparing the broadcast command binding to the command binding stored by the third program code logic and means for applying the broadcast command binding to the local shared document copy through a predefined document interface when the broadcast command binding is not the same as the stored command binding.
13. The apparatus of claim 12 wherein the applying means comprises means for applying the stored command binding to the local shared document copy through a predefined document interface when the broadcast command binding is the same as the stored command binding.
14. The apparatus of claim 10 wherein the predefined document interface includes a plurality of predefined member functions that receive the command binding as a call parameter and wherein the plurality of predefined member functions include member functions for handling incremental commands.
15. The apparatus of claim 10 wherein the means for creating a local copy of the shared document includes: means responsive to a document open request from one of the plurality of application programs for pausing the caucus service thereby preventing messages from being broadcast; means for obtaining a copy of the shared document; means for transferring the shared document copy to the application program issuing the document open request; and means responsive to the transfer of the shared document copy for resuming the caucus so that it will resume broadcasting messages.
16. A method for use in a computing system having a processor and a memory, the method providing collaborative access by a plurality of application programs to a shared document, and comprising the steps of: (a) constructing a caucus service program in the memory, the caucus service program being responsive to messages received from each of a plurality of caucus members for broadcast transmitting received messages to all of the plurality of caucus members in global order; and (b) creating a local copy of the shared document in the memory for each of the plurality of application programs; (c) creating a predefined document interface for each local copy of the shared document; (d) causing each of the plurality of application programs to join the caucus service as a caucus member; (e) receiving a command binding from one of the plurality of application programs and sending a copy of the received command binding to the caucus service as a message; and (f) applying a command binding to the local copy of the shared document for each of the plurality of applications through the predefined document interface in response to a command binding broadcast by the caucus.
17. The method of claim 16 wherein step (e) comprises the step of: (e1) storing the command binding received from the application program in the memory.
18. The method of claim 17 wherein step (f) comprises the steps of: (f1) comparing the broadcast command binding to the command binding stored in step (e1); and (f2) applying the broadcast command binding to the local shared document copy through a predefined document interface when the broadcast command binding is not the same as the stored command binding.
19. The method of claim 18 wherein step (f) further comprises the steps of: (f3) applying the stored command binding to the local shared document copy through a predefined document interface when the broadcast command binding is the same as the stored command binding.
20. The method of claim 16 wherein step (b) comprises the steps of: (b1) pausing the caucus service thereby preventing messages from being broadcast; (b2) obtaining a copy of the shared document; (b3) transferring the shared document copy to one of the plurality of application programs issuing a document open request; and (b4) resuming the caucus so that it will resume broadcasting messages.
21. The method of claim 16 further comprising the steps of: (g) constructing a document server having a predefined document interface and means for opening the shared document in response to a first request from one of the plurality of application programs to open the shared document; (h) causing the document server to join the caucus service as a caucus member, wherein messages broadcast on the caucus service are received by the document server and applied to the original copy of the shared document; and (l) using the document server to create a local copy of the shared document for each of the plurality of application programs.
22. A computer program product for use by an application program executing on a computing system having a processor and a memory, the computer program product providing collaborative access by a plurality of caucus members to a shared document, and comprising a computer usable medium having computer readable program code means including: (a) means for creating a caucus service associated with the document, the caucus service including means for receiving messages from each of the plurality of caucus members and broadcast transmitting the messages to all of the plurality of caucus members in global order; and (b) shared document class information for creating a shared document instance in the memory in response to a document open request by the application program, the shared document class information including: first program code logic means for creating a local copy of the shared document in the memory, second program code logic means for causing the application program to join the caucus service as a caucus member; third program code logic means for receiving a command binding from the application program and sending a copy of the received command binding to the caucus service as a message; and fourth program code logic means responsive to a command binding broadcast by the caucus, for applying a command binding to the local copy of the shared document through a predefined document interface.
23. The computer program product of claim 22 wherein the third program code logic means including means for storing the command binding received from the application program in the memory.
24. The computer program product of claim 23 wherein the fourth program code logic means is responsive to a command binding broadcast by the caucus for comparing the broadcast command binding to the command binding stored by the third program code logic means and for applying the broadcast command binding to the local shared document copy through a predefined document interface when the broadcast command binding is not the same as the stored command binding.
25. The computer program product of claim 24 wherein the fourth program code logic means applies the stored command binding to the local shared document copy through a predefined document interface when the broadcast command binding is the same as the stored command binding.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.