Sunday, April 13, 2008

Reworking the Journal

Had a great chat with Norm on Saturday. I have been concerned about the Journal, as the use cases were not clear in my mind. What I am providing is a JEnt for each change made to a Rolon, a JEnt in the user JU to capture the changes made by a user, a wrapper JSec for all the JEnts in a Rolon created by a transaction and a link from the transaction rolon to all those JSecs. The idea is that you can look at a Rolon's JU and see all the changes which were authored by it or applied to it.

Now we add 2 additional requirements: we want to see all the changes made to a given element and we want to capture a snapshot of all the updated rolons.

Now it is easy enough to create the snapshots of the updated rolons and make them children of the transaction rolon. The snapshots can then have a CSec which links to the elements changed in the updated rolon. And we can then view, in chronological order, the backlinks of an element from the rolons which capture the change.

That is almost enough, but we have no association between the JEnt and the snapshot. And the JEnt contains the description of the change, as well as the rolon-relative link (in the Context attribute) to the element in the snapshot which was changed. So we need another link from the snapshot to the JEnt. And as multiple elements in the same rolon may be changed by one transaction, the snapshot may reflect the changes to changes to more than one element. So the link to the JEnt and the link to the element that was changed need to be coordinated somehow. One way would be to have a CSec in the snapshot for each change, and have only these 2 links together in the same CSec.


So in the snapshot we can have a CSec called SOURCE and under this CSec we could have a CSec for each change. Each change CSec then would have a link to the element in the original rolon which was changed and a link to the JEnt in the same rolon which describes the change and gives the location in the snapshot of the element that was changed. (This is important as the rolon-relative pathname of an element may change over time through the use of the changeKey operation.)

0 Comments:

Post a Comment

<< Home