The object is initially passive, and is stored in the object store as an instance of the class
OutputObjectState
.
When required by an application, the object is automatically activated by reading it from the store
using a read_committed
operation and is then converted from an
InputObjectState
instance into a fully-fledged object by the
restore_state
operation of the object.
When the application has finished with the object, it is deactivated by converting it back into an
OutputObjectState
instance using the save_state
operation, and is then stored back into the object store as a shadow copy using
write_uncommitted
. This shadow copy can be committed, overwriting the previous
version, using the commit_state
operation. The existence of shadow copies is
normally hidden from the programmer by the transaction system. Object deactivation normally only occurs
when the top-level transaction within which the object was activated commits