Patent ID: 7567257

Claim:
A method for undoing an action on an object graph that contains a plurality of objects and object interrelationships, the method comprising: maintaining at least two object graph partitions associated with an object graph, the at least two object graph partitions each including interdependent objects, such that two interdependent objects are in the same partition, and two objects that are not interdependent are in different partitions; identifying one of the object graph partitions, the one of the object graph partitions being associated with a first set of objects in the object graph; maintaining a time-based history of actions performed on objects in the object graph; detecting an undo request for a particular action performed on particular object of the object graph despite there being one or more subsequent requests that are performed on the object graph that are not requested to be undone, wherein the particular action changes are performed on objects of a first set of one or more partitions; when the undo request is detected: using the time-based history of actions in identifying one or more actions on objects of the object graph which were performed at a time later than the particular action of the undo request; identifying whether or not the one or more actions performed at a time later than the particular action of the undo request were performed on at least one object that has a partition that contains the particular object that was change as a result of performing the particular action; performing a first execution path when the one or more actions which were performed at a time later than the particular action were performed on at least one object that has a partition that contains the particular object that was changed as a result of originally performing the particular action, the first execution path abstaining from undoing the particular action until each of the one or more actions performed at a time later than the particular action of the undo request to objects within the same partition are first undone; and performing a second execution path when the one or more actions which were performed at a time later than the particular action were not performed on any objects that have a partition that is the same as a partition that contains the particular object that was changed as a result of originally performing a particular action, the second execution path undoing the particular action without first undoing any of the one or more actions which were performed at a time later than the particular action.