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

Loren Stafford lstafford@morphics.com
Wed, 23 May 2001 16:39:30 -0700


>
> > As for what the Version component would be, I'm not sure.  It could be
> > a VersionTool which acts as a registry / repository of versioned
> > components (e.g. "portal_version.createNewVersion(this())",
> > "portal_version.listVersions()", etc), but that sounds like a potential
> > performance bottleneck to me.  Still, it *would* be useful, for other
> > stuff too, like audit trails for documents in an extranet, etc.
>
> Do you see this as distinct from Zope Versions?

Yes.

I've been thinking about a Versioned Document capability a lot recently as
I've been trying to understand how to use CMS as a Document Management
system. Most of the pieces of Document Management are there (especially now
with customizable workflow). One missing piece is Versioned Documents.

Versioned Documents differ from Zope Versions in several respects.

1. Versions older than the current version must continue exist until they
are explicitly deleted. You don't want a Pack operation to clean them out
inadvertently.

2. Older versions may need special treatment in the catalog. You may not
want them cluttering the catalog; you may or may not want them retrievable
via a catalog search.

3. Older versions must be retrievable. For example, we sometimes need to
send older manual versions to customers who are using older versions of our
products.

4. It may be desirable to put a slight barrier in front of older versions,
so that an older version is not retrieve accidently in place of a newer
version. Or in other words, by default you always get the most current
document, but you can get an older one with some additional effort (or
syntax).

5. In some respects, all versions should be accessible by the same ID. For
example, when a new version of a document is published, users should get the
newest version when following the URL that they stored for an older version.
In other respects, each version must be separately identifiable; for
example, in a workflow various versions of a document may exist
simultaneously with different workflow status.

I hope others will chime in if I missed any essential points.

-- Loren