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.