DCWorkflow给予,SubtractiveWorkflow取走。
项目描述
简介
此产品提供了一种替代类型的工作流定义。它的工作方式与常规工作流非常相似,但它不是在进入特定状态时授予权限,而是从所选角色中移除权限。
原始用例是通过辅助工作流支持“机密”内容项。类型的主体链有一个发布工作流,该工作流将在各种状态下授予各种角色的查看权限。辅助的“机密性工作流”有两个状态:“正常”和“机密”。在“正常”状态下,没有为查看权限选择任何角色,因此应用了主工作流的角色映射。然而,在“机密”状态下,匿名用户、认证用户和成员已被选择为查看权限,因此这些角色不再具有查看项的能力。
请注意,“获取”标志几乎总是应该关闭。减法工作流程将以与默认工作流程定义相同的方式设置获取属性,但结果可能不是您期望的,因为被“关闭”的权限可能会被获取。
另外请注意,组到本地角色映射不是“减法”的,它们在标准工作流程定义中工作方式完全相同。一般来说,在Zope中,本地角色总是继承的(尽管Plone有一个扩展可以关闭这一点)。
多个工作流程的影响
本产品依赖于对DCWorkflow权限系统的如下解释
如果在链中存在多个工作流程,则项目的状态由所有工作流程确定,而不仅仅是最后一个。
特别是,链中所有工作流程中的权限设置始终适用。后面的工作流程可以覆盖前面的工作流程。
为了支持这一点,安装了一个事件处理器,当发生转换时,将“重新播放”链中所有工作流程的updateRoleMappings()调用(如果链中只有一个工作流程,则进行了优化以避免重复工作)。如果没有减法工作流程在链中,则不会执行任何操作,但只要有一个,就会得到这种行为。
因此,如果您在两个工作流程链中将减法工作流程作为第二个工作流程,并且从第一个或第二个工作流程调用转换,则两个工作流程的权限都将适用,减法工作流程可以覆盖正常工作流程。
请注意,这可能会影响现有的多工作流程链,因为默认情况下,DCWorkflow不会以这种方式“重新播放”角色映射,而是让最近进入的状态确定角色映射,并完全覆盖链中任何其他工作流程的当前状态的角色。
变更日志
2.0b1(2010-09-11)
将虚拟对象设置为容器生成AddedObjectEvent,Products.CMFCore.CMFCatalogAware.handleContentishEvent捕获事件并调用wftool.notifyCreated(dummy)。在Products.CMFCore 2.2中,Products.CMFCore.WorkflowTool.notifyCreated添加了检查,如果之前已调用(workflow_history不为空),则不会调用wf.notifyCreated。因此,在测试中,dummy对象设置为容器后,wftool.notifyCreated(dummy)不会执行任何操作。所有测试都已适应和修复。[vincentfretin]
从react.object_transitioned订阅者中删除了显式检查“event.transition is None,然后返回”。我们希望当机密状态是初始状态时更新角色映射。[vincentfretin]
修复了工作流程GenericSetup导入,Plone 4使用的Products.DCWorkflow 2.2中的_initDCWorkflow签名已更改。此版本将无法与Plone 3使用的Products.DCWorkflow 2.1一起使用。[vincentfretin]
1.0b1 - 2009-04-03
初始版本
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。