Real-time synchronization of XML data between applications
First Claim
1. A computer-readable storage medium having computer-executable instructions for synchronizing data that is associated with a computer-generated document and that is shared across data consumers, comprising:
- storing elements represented by Extensible Markup Language (XML) that are associated with a document in a data store, wherein the data store is maintained separately from a presentation storage representing the presentation view of the document;
wherein the document is edited by one or more data consuming applications and wherein a same piece of data within the data store is editable by multiple data consumers concurrently;
initiating a change to an XML element by a first data consumer;
determining when there are other data consumers that are interested in the change to the XML element;
wherein the determination is based on whether the other data consumers called an application programming interface (API) to register for a notification to a change of the XML element associated with the document, the XML element stored in the data store, and wherein the API provides the ability to specify the other data consumers are not notified in response to a change of other XML elements that are associated with the document, wherein all of the data consumers are data consuming applications;
notifying the other data consumers of the change, wherein the other data consumers may perform at least one of;
accepting either the change;
rejecting the change; and
initiating a side-effect change as a result of the original change; and
in response to acceptance of the change by all of the other data consumers notified of the change;
committing the change to a plurality of application undo stacks, wherein each application undo stack is associated with each data consumer; and
committing the change to the data store;
in response to initiation of the side-effect change by any one of the other data consumers notified of the change;
delaying the side-effect change from being processed until each of the other data consumers receive notification of the change; and
in response to rejection of the change by any one of the other data consumers notified of the change;
rolling back the change from the plurality of application undo stacks; and
rolling back the data store to a state before a time when the change was initiated.
2 Assignments
0 Petitions
Accused Products
Abstract
One or more data stores are maintained separately from a primary presentation storage within a document for storing, relating and for allowing use of arbitrary data that is associated with a computer-generated document between multiple data consumers. The data store exposes application programming interfaces (APIs) to the various pieces of data in the data store for allowing different data consumers to access and operate on one or more of the data pieces in real time. Multiple data consumers may access and edit the same piece of data concurrently, and any conflicting changes to a given piece of data are resolved. Each data consumer may accept or reject the change as well as make additional side-effect changes as a result of the original change. In this way, the data may be synchronized in real time across the data consumers.
173 Citations
19 Claims
-
1. A computer-readable storage medium having computer-executable instructions for synchronizing data that is associated with a computer-generated document and that is shared across data consumers, comprising:
-
storing elements represented by Extensible Markup Language (XML) that are associated with a document in a data store, wherein the data store is maintained separately from a presentation storage representing the presentation view of the document;
wherein the document is edited by one or more data consuming applications and wherein a same piece of data within the data store is editable by multiple data consumers concurrently;initiating a change to an XML element by a first data consumer; determining when there are other data consumers that are interested in the change to the XML element;
wherein the determination is based on whether the other data consumers called an application programming interface (API) to register for a notification to a change of the XML element associated with the document, the XML element stored in the data store, and wherein the API provides the ability to specify the other data consumers are not notified in response to a change of other XML elements that are associated with the document, wherein all of the data consumers are data consuming applications;notifying the other data consumers of the change, wherein the other data consumers may perform at least one of;
accepting either the change;
rejecting the change; and
initiating a side-effect change as a result of the original change; andin response to acceptance of the change by all of the other data consumers notified of the change; committing the change to a plurality of application undo stacks, wherein each application undo stack is associated with each data consumer; and committing the change to the data store; in response to initiation of the side-effect change by any one of the other data consumers notified of the change; delaying the side-effect change from being processed until each of the other data consumers receive notification of the change; and in response to rejection of the change by any one of the other data consumers notified of the change; rolling back the change from the plurality of application undo stacks; and rolling back the data store to a state before a time when the change was initiated. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer-implemented method for sharing data that is associated with computer-generated documents between data consumers, comprising:
-
initiating a change to a structured data item associated with a document;
wherein the structured data item is structured according to an Extensible Markup Language (XML) and wherein the data store is separate from the presentation storage for the document;
wherein the document is edited by one or more data consuming applications and wherein a same piece of data within the data store is editable by multiple data consumers concurrently;providing notification of the change to registered data consumers;
wherein each of the registered data consumers are data consuming applications, wherein the registered data consumers call a notification application programming interface (API) to register for a notification to a change in the structured data item associated with the document;queuing side-effect changes that are a result of the change for later processing until each of the other data consumers receive the notification of the change; determining when a response from any one of the registered data consumers is a rejection of the change, and when the response is a rejection; rolling back the change from a plurality of application undo stacks, wherein each application undo stack is associated with each data consumer, and rolling back the change and any side-effect changes from all data consumers within the data store to a last known good state; determining when each of the registered data consumers accepts the change, and when each of the registered data consumers accepts the change; validating the change using an XML schema file that is provided by one of the data consumers through an API, committing the change to the plurality of application undo stacks, and committing the change to the data store. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A system for synchronizing data that is associated with a computer-generated document between data consumers, comprising:
-
an internal data consumer that is configured to create and edit the document and that is configured to interact with structured data items that are associated with the document, and an internal undo stack in association with the internal data consumer, the internal undo stack configured to commit and roll back registered changes received by the internal data consumer; external data consumers that are configured to interact with the structured data items that are associated with the document and maintained separately from the presentation storage for the document, and a plurality of external undo stacks, each external undo stack in association with each external data consumer, the plurality of external undo stacks configured to commit and roll back registered changes received by the external data consumers; and a data store that is configured to store the structured data items that are associated with the document separate from the document, wherein a same piece of data within the data store is editable by the internal data consumer and external data consumers concurrently;
wherein the data store comprises;an API broker that is configured to interact with the external data consumers and the internal data consumer and that is configured to receive a proposed change and in response to the proposed change notify registered data consumers of the proposed change, commit the change to the data store when the proposed change is accepted by each of the registered data consumers;
wherein each of the registered data consumers calls the API broker to register for notification of the proposed change; and
when the proposed change is not accepted by one or more of the registered data consumers ensuring that the data store is in a valid state, wherein the data store further includes a change store that is configured to store the proposed change and side-effect changes that are associated with the proposed change, and an undue store that is configured to roll back the data store to the valid state;
wherein the data store queues the side-effect changes for later execution until each of the data consumers receive the notification of the proposed change. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
Specification