On Feb 15, 2007, at 10:26 AM, Winterflood, Jonathan wrote:

Thanks a lot

>It is indeed some kind of a hack: generateId is suppose to provide
>disambiguation within the given container.
>If you're really new to Zope, I should maybe point out that this
>notion of id is by no means global.

I understand this script is used by CPS to create id's for the proxies to documents
Right, but only for user-triggered creation of a fresh document and first proxy to it. The "invokeFactory" script expects a valid Id and is the one to be used in programmatic situations. It's actually just a wrapper to the workflow tool's invokeFactoryFor method

these proxies circulate different workspaces in CPS (passed from private per-user spaces to common spaces, mostly)
They can be moved, duplicated, or be merged. Each proxy refers to a collection of revisions (one per language). The workflow concepts apply to proxies.
The Id being generated in private-spaces, it would be possible that at one point there will be a clash when the proxies are moved to the common spaces, am I right?
It would, if there weren't further disambiguation systems in the workflow engine. For example, CPS allows resubmission of a document to the very same destination. In this case you have two proxies in the same section, a published one and a pending one. Of course they have different Ids (typically my_doc and my_doc_1). Same for the draft check-in/out system ("Créer une version" in the french UI)

>The fact that it uses numbers for that purpose is coincidental (it's
>not likely to change soon).
>A cleaner way would be to implement you own logic using
>container.hasObject() to check prior existence.

I'm thinking of something like a global counter, somehow stored by computeId, incremented for each document.
Then you wanna check CPSUid (checkout URL: https://svn.nuxeo.org/pub/ CPS3/products/CPSUid/trunk) For an example usage, check CPSCourrier's cpsdocument_create_do and default profile.

A naive global counter is a database conflicts factory. CPSUid takes care of this.

Yours,

---------
Georges Racinet,   Nuxeo SAS
Open Source Enterprise Content Management (ECM)
Web: http://www.nuxeo.com/ and http://www.nuxeo.org/ - Tel: +33 1 40 33 79 87



_______________________________________________
cps-devel mailing list
http://lists.nuxeo.com/mailman/listinfo/cps-devel

Reply via email to