[Zope-CMF] Versioned Documents (was: Workflow first cut is ready)

Shane Hathaway shane@digicool.com
Thu, 24 May 2001 16:45:33 -0400


seb bacon wrote:
> I agree with Loren's previous analysis of why a Versioning tool is a
> different beast from Zope Versions.
> 
> In summary:
> 
>  - a default view when called by id
>  - arbitrarily long version history
>  - versions participate in workflow, catalog etc in their own right
>  - all content types to be able to have versions

It looks like we've gathered most of the requirements.  (You guys are
fast! :-)  Let me informally propose a possible solution.

Tres and I have discussed the addition of a "portal_versions" tool. 
Seb, you mentioned this, but I think it's a better idea than you
realized. :-)  This tool will be concerned with the storage of previous
versions of objects.

Currently objects have an opaque attribute called "talkback" which
allows discussions that are accessible by the catalog.  The default
implementation of portal_versions will use a similar tactic.  A special
attribute of content objects called "versions" will contain former
copies of the object.

Creating an archived copy of an object will be an explicit action that
is usually triggered by a workflow transition.  The copies will be of
the same type as the original object.

The former versions will be accessible via URL (because of the
"versions" attribute) and cataloged.  If someone wants to store previous
versions via SQL or something else, they just need to replace
portal_versions.

Content objects will not need to be aware of versions except that they
shouldn't try to use an attribute called "versions" for anything else. 
In fact they should not assume anything about the "versions" attribute. 
Certain other tools (portal_workflow and portal_actions) will be
modified to work with portal_versions and a new skin method
(show_versions) will be added.

Things get a little murkier if you consider that old versions of an
object are modifiable, can contain discussions and their own version
information, and will never go away.  When an object is copied to a
version, does the copy participate in a different workflow than the
original?

Everyone, does this informal proposal serve your needs?  Is there
something else that needs to be emphasized?  How do we deal with the
undetermined stuff?

Shane