Method for maintaining a version history of objects in a repository
First Claim
1. An improved computer-implemented method for maintaining a version history of objects in a repository, wherein modifications to property values and links are tracked with respect to versions of a model, said method comprising the steps of:
- a. for each object in said model, maintaining a start version and a list of end versions thereof;
b. for each attribute value in said model, maintaining a start version and a list of end versions thereof;
c. in response to a request for objects in a class with respect to a current version, retrieving only those objects whose start version is in the history of said current version and whose end versions are not in the history of said current version; and
d. in response to a request for attribute values of an object with respect to a current version, retrieving only those values whose start version is in the history of said current version and whose end versions are not in the history of said current version.
12 Assignments
0 Petitions
Accused Products
Abstract
An improved computer-implemented method is disclosed, which maintains a version history of objects in a repository. Modifications to property values and links are tracked with respect to versions of a model. The method includes the steps of maintaining a start version and a list of end versions for each object in the model and maintaining a start version and a list of end versions for each attribute value in the model. Moreover, in response to a request for objects in a class with respect to a current version, only those objects whose start version is in the history of the current version and whose end versions are not in the history of the current version are retrieved. Also, in response to a request for attribute values of an object with respect to a current version, only those values whose start version is in the history of the current version and whose end versions are not in the history of the current version are retrieved.
-
Citations
19 Claims
-
1. An improved computer-implemented method for maintaining a version history of objects in a repository, wherein modifications to property values and links are tracked with respect to versions of a model, said method comprising the steps of:
-
a. for each object in said model, maintaining a start version and a list of end versions thereof;
b. for each attribute value in said model, maintaining a start version and a list of end versions thereof;
c. in response to a request for objects in a class with respect to a current version, retrieving only those objects whose start version is in the history of said current version and whose end versions are not in the history of said current version; and
d. in response to a request for attribute values of an object with respect to a current version, retrieving only those values whose start version is in the history of said current version and whose end versions are not in the history of said current version. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
e. for each link in said model, maintaining a start version and a list of end versions thereof; and
,f. in response to a request for links in an association with respect to a current version, retrieving only those links whose start version is in the history of said current version and whose end versions are not in the history of said current version.
-
-
3. The method as in claim 1 where step a thereof further includes, upon construction of an object, the step of setting start version of said object to identify current version.
-
4. The method as in claim 1 where step d thereof further includes the steps of:
-
e. determining if said object exists in said current version, and if not;
f. generating an object not visible error.
-
-
5. The method as in claim 1 where step a thereof further includes, upon deletion of an object with respect to a current version, the steps of:
-
e. determining if start version of said object equals said current version, and if so;
f. destructing said object;
g. if start version of said object does not equal said current version, as determined in step a hereof, adding identification of said current version to said list of end versions of said object.
-
-
6. The method as in claim 5 further including the steps of:
-
h. determining if said object exists in said current version, and if not;
e. generating an object not visible error.
-
-
7. The method as in claim 1 where step b thereof further includes, upon setting an attribute of an object to a new value with respect to a current version, the steps of:
-
e. determining if said new value is equal to the current value of said attribute, and if not;
f. determining if start version of said current value is equal to said current version, and if not;
g. adding said current version to said list of end versions of current value; and
,h. adding said new value to values of said attribute and setting said start version to said current version.
-
-
8. The method as in claim 7 where step d it is determined that said start version of said current version is equal to said current version, further including the steps of:
-
i. determining if the attribute value in the previous version of said current version is equal to said new value, and if so;
j. deleting said current value; and
,k. removing said current version from said list of end versions of said attribute value in the previous version.
-
-
9. The method as in claim 8 where in step a it is determined that the attribute value in the previous version of said current version is not equal to said new value, changing current property value to said new value.
-
10. The method as in claim 7 further include the steps of:
-
i. determining if said object exists in said current version, and if not;
e. generating an object not visible error.
-
-
11. The method as in claim 1, where step b thereof further includes, upon adding a new value to the existing values of a multi-valued attribute of an object with respect to a current version, the steps of:
-
e. where said attribute requires unique values, determining if said new value is already listed as a value of said attribute in said current version, and if yes generating a duplicate value error;
f. and if not, adding said new value to said attribute and setting said starting version to said current version.
-
-
12. The method as in claim 11 further include the steps of:
-
g. determining if said object exists in said current version, and if not;
e. generating an object not visible error.
-
-
13. The method as in claim 1, where step b thereof further includes, upon removing a value from the existing values of a multi-valued attribute of an object with respect to a current version, the steps of:
-
e. determining if said value is listed as a value of said attribute in said current version, and if not generating a no such value error;
f. and if yes, determining if start version of said value is equal to said current version, and if so, removing said value from said list of attribute values;
g. and if not, adding said current version to said list of end versions of said value.
-
-
14. The method as in claim 13 further include the steps of:
-
h. determining if said object exists in said current version, and if not;
i. generating an object not visible error.
-
-
15. The method as in claim 1, where step b thereof, for a multi-valued attribute of an object, upon replacing an old value with a new value with respect to a current version, further includes the steps of:
-
e. determining if said old value is listed as a value of said attribute in said current version, and if not generating a no such value error;
f. and if yes, determining if start version of said old value is equal to said current version, and if so, replacing said old value with said new value within said list of attribute values;
g. and if not, adding said current version to said list of end versions of said old value; and
,h. adding said new value to said list of attribute values and setting said start version to said current version.
-
-
16. The method as in claim 15 further including the steps of:
-
i. determining if said object exists in said current version, and if not;
j. generating an object not visible error.
-
-
17. The method as in claim 2 where step e thereof further includes, upon creation of an link, the step of setting start version of said link to identify current version.
-
18. The method as in claim 2 where step e thereof further includes, upon deletion of a link with respect to a current version, the steps of:
-
g. determining if start version of said link equals said current version, and if so;
h. removing said link;
i. if start version of said link does not equal said current version, as determined in step g hereof, adding identification of said current version to said list of end versions of said link.
-
-
19. The method as in claim 18 further including the steps of:
-
j. determining if said link exists in said current version, and if not;
k. generating a link not visible error.
-
Specification