Versionable is a marker interface used to annotate an artifact snapshot type
that may become versioned. For artifacts of this type, their lifecycle works
as follows:
- Upon creation, the artifact is represented as a single Versionable
artifact.
- When a user first checks the artifact out, two new artifacts are created:
a Version to store the version's metadata, and a Versionable to store the
data snapshot of the working copy. The original Versionable artifact
continues to exist and is now known as the family.
- To edit the working copy, users should perform updates on the working
copy Versionable, not the family Versionable.
- After the artifact is checked in, the working copy Versionable can no
longer be updated. However, the Version that had been associated with the
working copy may continue to be updated.
- When loading snapshot attributes from the family Versionable, attribute
data is populated from the most recent version snapshot as seen by the
calling actor. Actors cannot see changes to the working copy currently being
made by other actors.