The Holy Grail of Plone workflow
Asked Answered
A

2

8

We are in the process of implementing a Plone CMS as a repository for ISO9001-documents.

ISO demands a certain amount of logging, as anyone familiar with the standard probably knows :-)

For the sake of flexibility we would like to incorporate, in no specific order:

  • New contenttypes : necessary to incorporate the different documents that can arise in an enterprise
  • Versioning: to show that our documents are always up to date, and to show which changes were made vs a previous version of the same document
  • Working copy support: so that a "published" document stays online while it is being edited
  • More complex workflow: to account for the review processes which are obligated by ISO
  • Different workflow for different documents: as workflow are dependent on the type of the document.

Therefore, the holy grail of workflow optimisation should be (and please correct me if I'm wrong):

  • Dexterity for the content types
  • CMFEdition (embedded in Plone) for versioning
  • Iterate for working copy support
  • plone.app.workflowmanager for the new workflows
  • Products.CMFPlacefulWorkflow for the different workflows according to different documents

The problem is the integration of the different products:

  • How do you get versioning to work with Dexterity?
  • How do you add working copies on top of that (keeping the necessary versioning)?
  • And how do you get your shiny new workflow (great UI btw for workflowmanager) to play nice with both versioning AND working copies.

I scoured the google-realm and already found these links:

We also checked out:

which are all installed and configured...

However, my new content type does not allow for checkout/checkin (Iterate product), and neither are versions/changes tracked in the history-view for this same contenttype.

Is their a magical sequence to follow or am I missing something (or alot -which is more likely)? Because if all these products were to work "out of the box" in my opinion this is a catchall solution to all things workflow...

addition 2012/04/17: As remarked by thet, the stack is completed with both

Ashlan answered 20/3, 2012 at 14:29 Comment(4)
I think you'll get by without CMFPlacefulWorkflow: it will let you assign workflows on a per-folder basis. Per-type workflows can be done directly in portal_workflow.Underquote
If you are paranoid about logging, I would also suggest considering overriding the sharing tab/page view with something that logs all changes to local role access to a text log file (this will log changes in access, if you write the code to do so). Then set up event handlers for IObjectModifiedEvent, (see zope.lifecycleevent) etc to log every change (add, edit, delete) to content to the same text log.Lepine
Also, consider keeping your workflow on the filesystem. For all but the most complex edge-cases, you could consider using pypi.python.org/pypi/collective.wtf to manage your custom workflow definitions in CSV instead of exporting XML from the ZMI portal_workflow and tweaking the XML in the filesystem. Example: goo.gl/aGGmzLepine
If you require versioning, you might want to stick with archetypes. It's much more battle tested.Disarmament
P
3

You need to use plone.app.stagingbehavior (http://pypi.python.org/pypi/plone.app.stagingbehavior), which links Iterate/CMFEditions to Dexterity types. Not sure about your versioning issues.

Patin answered 20/3, 2012 at 21:47 Comment(4)
Thanks Jon, got to that point late yesterday evening... What your take on Dexterity vs Archetypes. To me Dexterity seems great yet "pluggability" still seems sub par, can you agree?Ashlan
No idea what you mean by 'pluggability.' Dexterity is superior to Archetypes in many but not all ways.Patin
I can see that my comment is obscure. I meant that in using dexterity in collaboration with other add-ons like e.g. placefulworkflow, iteratie, sharing, indexing and the likes. Mind that this is a newbie (trying to get over the learning curve) interpretation :-)Ashlan
The "pluggability" of Dexterity is in fact one the many ways in which it is superior to Archetypes. Dexterity, unlike Archetypes, is designed so that it can use current implementations of these "behaviors" while leaving open the option for people substitute other implementations or add completely new behaviors. Archtypes is very "monolithic" and hard to customize in these ways. It is true, though, that Dexterity does not yet support every single feature of Archtypes, although it is pretty close.Patin
E
2

You can also plug in the versioningbehavior

And stagingbehavior.

Extine answered 16/4, 2012 at 23:38 Comment(1)
agreed, however, as we are still starting with Plone we didn't get that running so we reverted to Archetypes. Valuable comment though: +1 from me. I'll see if I can edit the post...Ashlan

© 2022 - 2024 — McMap. All rights reserved.