跳转到主要内容

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

  • 初始版本

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分发

collective.subtractiveworkflow-2.0b1.zip (30.6 kB 查看散列)

上传时间

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面