[Zope-CMF] Reference Engine Componentization

whit whit at burningman.com
Mon Jan 9 13:15:28 EST 2006


sorry for the cross post, but I know there are a number of other 
reference engines out there and I would like to get input as we look
at moving the AT ref engine being a component.

here is a rough list of steps:

1) move current storage of references to use IAnnotations for new 
content / reference classes. Create a layer of indirection, making 
reference storage a configurable option.

2) refactor UID storage to use IAnnotations

3) implement IReferenceable to replace Referenceable mixin, implement
    IReference to coexist with Reference class

4) allow for configuration of references as z3 content classes

5) deprecate add / delete hooks, replace with event subscribers

6) convert reference_catalog and uid_catalog to z3 local utilities

7) extend reference_catalog to allow for query by interface.  Deprecate
    query by reference class.

8) deprecate direct access to IReferenceable

For this to be truly effective, all calls to the methods currently 
provided by IReferenceable would need to go through an adapter ie::

 >>> MyATObj.getRefs()

becomes::

 >>> IReferenceable(MyATObj).getRefs()


After implementing 1-8, storage, utilities, how references are accessed, 
hook behavior and what classes are referenceable will be configurable as 
components.

the two primary access mechanisms for reference information are direct 
catalog query and direct access to the at reference object. Both 
cataloging refs and returning references is handled by the mixin 
Referenceable. Ideally, it would be possible to make IRefereable return 
objects implementing IReference from zemantic, or some other storage 
capable of fully describing AT style relationships, as well as handling 
the cataloging of said relationships.

-w



More information about the Zope-CMF mailing list