【发布时间】:2012-04-05 00:49:27
【问题描述】:
我们正在实施 Plone CMS 作为 ISO9001 文档的存储库。
ISO 要求一定数量的日志记录,熟悉该标准的人可能都知道 :-)
为了灵活起见,我们希望合并,没有特定的顺序:
- 新的内容类型:整合企业中可能出现的不同文档所必需的
- 版本控制:显示我们的文档始终是最新的,并显示与同一文档的先前版本相比所做的更改
- 工作副本支持:使“已发布”文档在编辑时保持在线
- 更复杂的工作流程:考虑 ISO 规定的审核流程
- 不同文档的不同工作流程:因为工作流程取决于文档的类型。
因此,工作流优化的圣杯应该是(如果我错了,请纠正我):
- 内容类型的灵活性
- CMFEdition(嵌入在 Plone 中)用于版本控制
- 迭代工作副本支持
- plone.app.workflowmanager 用于新工作流
- Products.CMFPlacefulWorkflow 用于根据不同文档的不同工作流
问题在于不同产品的整合:
- 如何让版本控制与 Dexterity 一起工作?
- 您如何在此基础上添加工作副本(保持必要的版本控制)?
- 以及如何让您闪亮的新工作流程(对于工作流程管理器来说很棒的 UI 顺便说一句)与版本控制和工作副本完美配合。
我搜索了 google-realm 并已经找到了这些链接:
- 工作副本和工作流程:http://plone.org/products/iterate/documentation/how-to/working-copy-workflow-customization
- 灵活性和版本控制:http://plone.org/products/dexterity/documentation/how-to/adding-versioning-to-dexterity-content-types
我们还检查了:
这些都已安装和配置...
但是,我的新内容类型不允许签出/签入(迭代产品),并且历史视图中也不会跟踪相同内容类型的版本/更改。
它们是一个神奇的顺序,还是我错过了一些东西(或者很多——这更有可能)?因为如果所有这些产品在我看来都是“开箱即用”的,那么这就是所有工作流程的包罗万象的解决方案......
添加 2012/04/17:正如 thet 所说,堆栈已完成
- 敏捷的版本控制行为:http://pypi.python.org/pypi/plone.app.versioningbehavior
- 为 Dexterity 分级行为:http://pypi.python.org/pypi/plone.app.stagingbehavior
【问题讨论】:
-
我认为没有 CMFPlacefulWorkflow 也能过得去:它可以让您在每个文件夹的基础上分配工作流。每个类型的工作流可以直接在 portal_workflow 中完成。
-
如果您对日志记录感到偏执,我还建议考虑使用将本地角色访问的所有更改记录到文本日志文件的内容覆盖共享选项卡/页面视图(这将记录访问更改,如果您编写代码来这样做)。然后为 IObjectModifiedEvent 设置事件处理程序(请参阅 zope.lifecycleevent)等,以将内容的每次更改(添加、编辑、删除)记录到同一文本日志中。
-
另外,请考虑将您的工作流程保留在文件系统上。对于除了最复杂的边缘情况之外的所有情况,您可以考虑使用pypi.python.org/pypi/collective.wtf 以 CSV 格式管理您的自定义工作流定义,而不是从 ZMI portal_workflow 导出 XML 并在文件系统中调整 XML。示例:goo.gl/aGGmz
-
如果您需要版本控制,您可能希望坚持使用原型。它经过了更多的战斗考验。