Flexible event sharing, batching, and state consistency mechanisms for interactive applications
First Claim
1. A system for sharing application-specific events among a group of objects distributed over a network, comprising:
- a plurality of clients comprising;
one or more distributable building blocks (“
Components”
) of a collaborative application requiring support for shared state, said one or more Components including one or more shared object sets, wherein each Component may be executed independently and collaborate with other Components;
each Component comprising a set of one or more Event Reaction Units (ERU);
each ERU having an associated precondition and a reaction;
wherein the precondition specifies one or more reference events that trigger the reaction, wherein the reaction may perform any computation or task and may produce other events;
cloning and reinitialization means for correcting diverging state among the shared object sets; and
a collaborative client middleware, communicatively coupled to the application and to the network, adapted to communicate to and receive from one or more remote clients over the network, asynchronous distributed shared events and deliver a received event to an associated Component.
1 Assignment
0 Petitions
Accused Products
Abstract
A system, method and computer program storage device providing event and/or state sharing support e.g., for building object-oriented interactive groupware in wide-area distributed environments (such as the Internet). For collaborative applications programmed using events, mechanisms are provided for sharing application-specific events. For example: an event based programming model allows applications to post an event and triggers corresponding ERUs (Event Reaction Unit) in reaction to a received event; preconditions for control activation of ERUs; and event consistency policy objects implement application specified event consistency model. Some policy examples are: a policy in which event order is not guaranteed, but all events are guaranteed to be sent to the ERUs eventually; and a policy that first triggers local ERUs and then posts the event to the server. An out-of-order event is detected using the event notification from the server; and an automatic detection of out-of-order events seen by ERUs in the local workstation in this optimistic event execution model. For applications requiring support for state sharing, an asynchronous model for updating replicated state, which supports atomicity of updates across multiple shared objects is described. Coupled with a flexible marshaling framework, this allows existing application data-structure classes to be easily extended and made shareable, while providing support for context-sensitive state marshaling applications. To solve the problem of replica consistency, a novel combination of three mechanisms is used: global locks; detection of incorrect update ordering; and cloning a subset of the shared objects for state re-initialization. To reduce network load due to fine-grained user interaction, a framework for application specified event batching, called Late Event Modification (LEM), enhances the event interface to allow applications to modify the event objects after posting them to the set.
-
Citations
21 Claims
-
1. A system for sharing application-specific events among a group of objects distributed over a network, comprising:
-
a plurality of clients comprising;
one or more distributable building blocks (“
Components”
) of a collaborative application requiring support for shared state, said one or more Components including one or more shared object sets, wherein each Component may be executed independently and collaborate with other Components;
each Component comprising a set of one or more Event Reaction Units (ERU);
each ERU having an associated precondition and a reaction;
wherein the precondition specifies one or more reference events that trigger the reaction, wherein the reaction may perform any computation or task and may produce other events;
cloning and reinitialization means for correcting diverging state among the shared object sets; and
a collaborative client middleware, communicatively coupled to the application and to the network, adapted to communicate to and receive from one or more remote clients over the network, asynchronous distributed shared events and deliver a received event to an associated Component. - View Dependent Claims (2)
context-sensitive state marshaling means for marshaling and unmarshaling clones of one or more shared objects in the shared object sets.
-
-
3. In a system wherein one or more distributable components of a collaborative application may be executed independently and collaborate with other Components and wherein each component includes a set of one or more event reaction units (ERU), a method for sharing events, comprising the steps of:
-
receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events;
instantiating a collaborative team, said receiving comprising receiving a message wherein the message includes an event to be posted to a team;
identifying the event with an associated team descriptor;
dispatching the event to the associated team descriptor;
storing the event in a Shared Event Queue; and
picking up events from the queue and dispatching the events to associated ERUs. - View Dependent Claims (4)
said receiving step comprising receiving from a client a post event to be posted to the team for the application; and
the team descriptor communicating the post event to the server, in response to receiving the post event.
-
-
5. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for sharing events in a system wherein one or more distributable components of a collaborative application may be executed independently and collaborate with other components and wherein each component includes a set of one or more event reaction units (ERU), said method steps comprising:
-
receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events instantiating a collaborative team, said receiving comprising receiving a message wherein the message includes an event to be posted to a team, identifying the event with an associated team descriptor;
dispatching the event to the associated team descriptor;
storing the event in a Shared Event Queue; and
picking up events from the queue and dispatching the events to associated ERUs. - View Dependent Claims (6)
said receiving step comprising receiving from a client a post event to be posted to the team for the application; and
the team descriptor communicating the post event to the server, in response to receiving the post event.
-
-
7. A system for sharing application-specific events among a group of objects distributed over a network, comprising:
-
a plurality of clients comprising;
one or more distributable building blocks (“
Components”
) of a collaborative application, wherein each Component may be executed independently and collaborate with other Components;
each Component comprising a set of one or more Event Reaction Units (“
ERU”
);
each ERU having an associated precondition and a reaction;
wherein the precondition specifies one or more reference events that trigger the reaction, wherein the reaction may perform any computation or task and may produce other events;
a collaborative client middleware, communicatively coupled to the application and to the network, adapted to communicate to and receive from one or more remote clients over the network, asynchronous distributed shared events and deliver a received event to an associated Component; and
an event batching framework, comprising;
means for posting the event to the set of ERUs; and
a late event modifier (“
LEM”
), the LEM modifying the event objects after posting them to the set of ERUs.
-
-
8. A system for sharing application-specific events among a group of objects distributed over a network, comprising:
-
a plurality of clients comprising;
one or more distributable building blocks (“
Components”
) of a collaborative application requiring support for shared state, said one or more Components including one or more shared object sets, wherein each Component may be executed independently and collaborate with other Components;
each Component comprising a set of one or more Event Reaction Units (“
ERU”
);
each ERU having an associated precondition and a reaction;
wherein the precondition specifies one or more reference events that trigger the reaction, wherein the reaction may perform any computation or task and may produce other events;
a collaborative client middleware, communicatively coupled to the application and to the network, adapted to communicate to and receive from one or more remote clients over the network, asynchronous distributed shared events and deliver a received event to an associated Component; and
conflict detection means for detecting conflicts due to incorrectly ordered updates to a shared object and informing the application.
-
-
9. A system for sharing application-specific events among a group of objects distributed over a network, comprising:
-
a plurality of clients comprising;
one or more distributable building blocks (“
Components”
) of a collaborative application requiring support for shared state, said one or more Components including one or more shared object sets, wherein each Component may be executed independently and collaborate with other Components;
each Component comprising a set of one or more Event Reaction Units (“
ERU”
);
each ERU having an associated precondition and a reaction;
wherein the precondition specifies one or more reference events that trigger the reaction, wherein the reaction may perform any computation or task and may produce other events;
a collaborative client middleware, communicatively coupled to the application and to the network, adapted to communicate to and receive from one or more remote clients over the network, asynchronous distributed shared events and deliver a received event to an associated Component; and
context-sensitive state marshaling means for propagating state to one or more new or updated shared objects in the shared object sets.
-
-
10. In a system wherein one or more distributable components of a collaborative application may be executed independently and collaborate with other Components and wherein each component includes a set of one or more event reaction units (“
- ERU”
), a method for sharing events, comprising the steps of;receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events;
posting the event to the set of ERUs; and
modifying the event after posting it to the set of ERUs.
- ERU”
-
11. In a system wherein one or more distributable components of a collaborative application requiring support for shared state may be executed independently and collaborate with other Components and wherein each component includes a set of one or more event reaction units (“
- ERU”
) and one or more shared object sets, a method for sharing events, comprising the steps of;receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events;
detecting conflicts due to incorrectly ordered updates to a shared object; and
informing the application, in response to said detecting step.
- ERU”
-
12. In a system wherein one or more distributable components of a collaborative application requiring support for shared state may be executed independently and collaborate with other Components and wherein each component includes a set of one or more event reaction units (“
- ERU”
) and one or more shared object sets, a method for sharing events, comprising the steps of;receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events; and
marshaling and propagating context-sensitive state to one or more new or updated shared objects in the shared object sets.
- ERU”
-
13. In a system wherein one or more distributable components of a collaborative application requiring support for shared state may be executed independently and collaborate with other Components and wherein each component includes a set of one or more event reaction units (“
- ERU”
) and one or more shared object sets, a method for sharing events, comprising the steps of;receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events;
detecting diverging state among the shared object sets; and
cloning and reinitializing diverging state among the shared object sets. - View Dependent Claims (14, 15)
marshaling and unmarshaling clones of one or more shared objects in the shared object sets.
- ERU”
-
15. The method of claim 13, wherein said cloning and reinitializing step further comprises the steps of:
-
making a copy of a subset of objects in the set and preserving pointers from inside the original subsets to objects outside the cloned subset;
mapping references between objects inside the original subset into the cloned subset;
exporting the cloned subset to other clients; and
re-initializing the subset of objects based on the cloned subset, in response to said exporting step.
-
-
16. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for sharing events in a system wherein one or more distributable components of a collaborative application may be executed independently and collaborate with other components and wherein each component includes a set of one or more event reaction units (“
- ERU”
), said method steps comprising;receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events;
posting the event to the set of ERUs; and
modifying the event after posting it to the set of ERUs.
- ERU”
-
17. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for sharing events in a system wherein one or more distributable components of a collaborative application requiring support for shared state may be executed independently and collaborate with other components and wherein each component includes a set of one or more event reaction units (“
- ERU”
) and one or more shared object sets, said method steps comprising;receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events;
detecting conflicts due to incorrectly ordered updates to a shared object; and
informing the application, in response to said detecting step.
- ERU”
-
18. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for sharing events in a system wherein one or more distributable components of a collaborative application requiring support for shared state may be executed independently and collaborate with other components and wherein each component includes a set of one or more event reaction units (“
- ERU”
) and one or more shared object sets, said method steps comprising;receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events; and
marshaling and propagating context-sensitive state to one or more new or updated shared objects in the shared object sets.
- ERU”
-
19. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for sharing events in a system wherein one or more distributable components of a collaborative application requiring support for shared state may be executed independently and collaborate with other components and wherein each component includes a set of one or more event reaction units (“
- ERU”
) and one or more shared object sets, said method steps comprising;receiving a shared event from an application component over a network;
comparing the received event with one or more preconditions associated with each ERU, wherein the precondition specifies one or more reference events that trigger a corresponding reaction;
triggering the reaction, which may perform any computation or task and may produce other events;
detecting diverging state among the shared object sets; and
cloning and reinitializing diverging state among the shared object sets. - View Dependent Claims (20, 21)
marshaling and unmarshaling clones of one or more shared objects in the shared object sets.
- ERU”
-
21. The program storage device of claim 19, wherein said cloning and reinitializing step further comprises the steps of:
-
making a copy of a subset of objects in the set and preserving pointers from inside the original subsets to objects outside the cloned subset;
mapping references between objects inside the original subset into the cloned subset;
exporting the cloned subset to other clients; and
re-initializing the subset of objects based on the cloned subset, in response to said exporting step.
-
Specification