Thanks Kevin, I guess I was looking for something like deep clone using serialization rather than detach-clone-persist and so on through the object graph. Being lazy ;) Regards,David.
On Tuesday, 14 March 2017 4:07 PM, "ke...@kmz.co.za" <ke...@kmz.co.za> wrote: Hi David, Did you find a solution? Just a question: Why would you not use a standard service action to create the copy? Is there any reason why you want Datanucleus to do it? Personally, I would try and use a service that creates a copy of the current records and updates the public reference instance to always point to the latest (perhaps use a Proxy, for example - and another administrative view that displays the full set of changes over time). Cheers, Kevin On 2017-03-08 06:05, David Tildesley wrote: > Hi, > I have a need to keep public records and to be able to edit objects > and put them through a publishing lifecycle whilst public can view the > current record without seeing the changes. > Temporal object pattern [1] seems like the simplest pattern. > Then it comes down to how hard or easy it is to simply copy a > components entire object graph to make a new version (don't really > care about the duplication of data that hasn't change from version to > version). > Datanucleus has some support for coping an object graph from one > repository to another - I assume you can copy to the same repository > to achieve what I want to do. > Krypo [2] seems like it is being used by Datanucleus. > Anyways - how to do this with ISIS? Any suggestions appreciated. > Some context: > A Building (component) has a current FireSafetyCertification > (component) and is published as a public record and these records are > kept for 10 years. A change to a record that is viewable by the public > is regarded as a new public record. Overtime (slowly) these > FireSafetyCertificates may expire/withdrawn/change in detail. But when > they are published they constitute a public record. Building has > names, addresses, images, parts, construction details, etc. whilst > FireSafetyCertification has documents, exemption notices, expiry dates > etc. > Using the Temporal Object pattern, a Building object has 1..* > BuildingVersion and all of the Building's detail hangs off > BuildingVersion. > Any other suggestions instead of Temporal Object pattern also > appreciated. > > [1] https://martinfowler.com/eaaDev/TemporalObject.html > [2] http://camposha.info/source/java-kryo/ > Thanks! > David.