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()


>>> 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.


Zope-CMF maillist  -

See for bug reports and feature requests

Reply via email to