If, after reading the introduction, you're not quite sure about the purpose of the project, have a look at the diagram below:
It shows a basic use case of the project: the client has a graph of objects (whether it was created locally or obtained from the server is not important for now) which it wants to change and save on the server. In this simple case we assume that it's not a real graph but a single object.
First it calls a method on this object: e.g. someObject.setName("foo"). As 'someObject' is an instance of a 'smart' VO, it detects the change of state and updates its version information to 'modified'.
Then, when the user wants to save the data, it tells a component called mediator to perform an update by calling updateGraph(someObject) (step 2). This component will then verify that the object has been changed (step 3), and do the actual update (step 4).
The analysis of modifications can prove useful in a client/server scenario, where the state of the client must be synchronized with the server. By only sending modified objects the network traffic can be reduced drastically.
back | index | next |