Plone / Zope在内容类型上使用两个工作流,是否可以在状态栏中显示与用户角色相关的当前状态/状态?

时间:2016-09-13 13:37:26

标签: plone zope

我在Zope Manager中创建了两个工作流程:A_Workflow,B_Workflow,我将其分配给内容类型“合同”。

A_Workflow有两种状态: 待批准(初始) 已批准

转换为批准(approve_a)转换为A Approved,转换为retract_a,转换为Pending A Approval转换为Pending A Approval,只有A_Manager可以执行。

B_Workflow有两种状态: 待批准B(初始) B批准

转换为批准(approve_b)转换为B Approved,转换为retract_b(retract_b)转换为Pending B Approval,只有B_Manager才能通过所需权限。

贡献者创建合同,第一个状态是待批准。 当我以A_Manager身份登录并以B_Manager身份登录时,我可以看到相应的转换可用。但是,B_Manager只能看到A_Workflow的状态,尽管B_Workflow状态发生变化(当状态为待批B批准时显示批准B,当状态为B批准时显示撤销B)

如果这是一个尴尬的问题,我道歉,但是可以在状态栏中显示正确的状态吗?如果是的话,我该怎么办?

2 个答案:

答案 0 :(得分:4)

根据我的理解,您似乎使用了工作流程链(分配给内容类型的两个或多个工作流程)。

这个功能或多或少是隐藏和未使用的(尽管它有效)但是Plone UI并不以任何方式支持它:你可以依靠它来保证安全,但只有" main" (首先在链中)工作流由Plone UI使用。

要查看这两种状态,您需要自定义Plone工作流程菜单。 猜猜:提供一个覆盖the ones in plone.app.contentmenu的新菜单。

注意:自定义菜单不是一项复杂的任务,但你需要一些类似于使用z3c.unconfigure或overrides.zcml的样板

在此处查看示例(此处为"添加新项目"菜单):https://github.com/keul/collective.factorymenu/tree/master/src/collective/factorymenu

答案 1 :(得分:4)

我们实际上经常为项目使用链式工作流程。一个常见的用例是使用第二个工作流来控制项目的“特色”状态。这样,内容提供者可以请求特定项目,但编辑/审阅者可以批准特色。

我们有一个产品允许工作流程下拉列表显示所有链接的工作流程及其转换。我刚刚向PyPI发布了这个版本:

https://pypi.python.org/pypi/sixfeetup.workflow.chained

但是您可以在github repo上报告问题:

https://github.com/sixfeetup/sixfeetup.workflow.chained

请告诉我们是否适合您。