Vamsas objectusageModel ----------------------- Quick list of features we need on shared object model: fine-grained update events -------------------------- Anything less than an indication that the whole document has been updated is fine-grained. Since every app would have to work out which objects had changed for themselves, its better to provide a generic interface in the library. - class update - app gets notified when a type of object is updated - hierarchical update - app is notified when some is updated that is directly or indirectly referenced by a property of this object (ie - instance update - application gets notified when a particular object is updated ? Object Locking Mechanism --------- Pre-Nov2006 meeting, an object lock was a simple binary attribute flag. This gives no indication to another app about when the lock is going to be freed. Generally, object databases seem to have a more sophisticated model, so a particular application(and user) can lock a particular object. Within the document, this can be implemented as a Lock attribute string field, which contains a description of the Lock status on that object. The description must then be specified. The minimum requirements are : - one application can lock an object (such as an alignment) against updates by any other application. * there are caveats. For the example of an alignment, this depends on data above the alignemnt object in the hierarchy. In this case, any update to objects 'above' the locked object must be data-preserving. ie the dataset sequence->alignment sequence relationship must be updated to ensure that when a dataset sequence is extended by an additional segment of residues: Dataset sequence 5-10 is updated to contain residues 1-15, because another alignment contains a longer segment of the same sequence. Alignment sequence references dataset sequence from 5 to 10 (we use the dataset sequences numbering system for referring to it). The update does not affect the alignment sequence's reference to the dataset sequence, since the from,to coordinate segment has not undergone any shift. * update verification step any document update must be verified to not violate any existing locks on the document. Dataset sequences and alignment sequences cannot be deleted arbitrarily unless they are lock free. * lock free for the case of deletion means that no other objects that depends on an object is locked. New/Modified/Delete object notification mechanism Andrew mentioned that there's no way for an object to be 'deleted' from the model, particularly if the library prevents the application from clearing references to objects within other objects. There are two cases