>> I was been working on this issue.   Here you have more info about a
>> solution:
>> 
http://www.kmkey.org/sections/blogs/santi-camps-blog/2006_07_25_manage-relations-within
>>
>>
>> Be careful, I'm also new to CPS, so probably there are a lot of things
>> I don't know.   Also  the code is experimental (just committed
>> yesterday) so, not ready to be used in production environments.
>>
>> Hope this helps
>
> You don't use CPSRelation at all for this, right ?

As well, are you using events ?


No, I'm not using CPSRelation at all, just store de docid of the
related object, and then always search for its last revision.   Use of
CPSRelation could be added, but my plans are to develop a
PostgresStorageAdapter to be used instead of current
AttributeStorageAdapter, and use the powerful of SQL to work against
huge amounts of data, in special for long running reports.   For 1-N
relationships I don't need more, and for M-N relationships I'm
planning to add a MN Relation Widget storing data in an relation
schema, so at the end, it will result in a set of tables (one per
schema) structured as a well designed relational database.    In any
case, I want the SQL StorageAdapter to be optional, so the software
can work just with ZODB, and activate the SQL StorageAdapter just when
needed.

On the other hand, I use events, yes, but only when deleting an object
with relation fields.   When adding, I tried to use Z3 events, but was
not possible due to the Z3 adding events are called before the data is
committed by CPSSchema, so I have to add the feature in a
postCommitHook.   This is ugly, because forces everybody that want to
use relations fields to use or inherit from my class.   If a Z3 event
was raise when CPSSchema finish its work, relation fields could be
used on any object.

Finally, another ugly issue is that I'm storing a false proxy in
proxy_tool._rpath_to_infos for related objects, so they aren't deleted
by the purge repository while there is any relation pointing to them.
This could be done better storing the relation in the
portal_relations and changing the portal_repository purge feature to
check also relations to detect live and dead objects, considering live
an object being pointed by a relation.    But I don't walk that way
because it needs to patch the repository tool, and I don't want to do
it if you are not interested on that patch.

Regards
--
Santi Camps
Earcon S.L. - http://www.earcon.com
                 - http://www.kmkey.com
_______________________________________________
cps-devel mailing list
http://lists.nuxeo.com/mailman/listinfo/cps-devel

Reply via email to