Adobe CQ / AEM:在“激活”上自定义工作流程

时间:2014-02-16 11:02:30

标签: adobe workflow cq5 aem

这是我目前对按下激活按钮的事件的理解:

如果用户具有复制权限,则会将内容发送给调度程序。 如果用户没有复制,则运行“激活请求”工作流程。开箱即用,执行两个步骤,都发送到管理员组。

如果我将OOB请求激活工作流程更改为分配给另一个组,则该组会在其CQ收件箱中获取该消息。

我的要求是我拥有属于公司内不同部门的多个网站,这意味着每个网站都有针对只能创作内容的用户和可以批准/激活该内容的用户的单独组。在一个案例中,对职业部分内容的额外要求仅由人力资源团队批准。

如何更改工作流程以达到这些要求?

3 个答案:

答案 0 :(得分:0)

我可以想到两种方法:

1)更改OOB框工作流程以使用OR步骤根据内容路径切换到不同的组。在处理页面和资产的页面以及职业示例等特殊条件时,这可能会变得非常复杂。

2)创建一个运行Java代码的自定义步骤,该代码使用AccessControlManager类在节点上查找复制权限,如果没有,则在遍历树之前找到具有权限的节点。

答案 1 :(得分:0)

对于类似的问题,我选择 1)

如果您的主要问题是在OR拆分中有太多分支,那么可能有机会将工作流程的决策分解为多个步骤,而不是将一个决策点分支到多个不同的路径。

例如,您可能首先按有效负载所在的站点进行拆分,然后根据用户类型或站点的部分再次拆分。所以,像:

  

网站1

     
      
  • 第1节   
        
    • 角色1
    •   
    • 角色2
    •   
  •   
  • 第2节
  •   
     

网站2

......依此类推,每个缩进级别代表一个单独的OR Split。

如果您使用容器步骤触发每个决策点的子工作流程,这可能有助于使您的工作流程更有条理。

因为我不喜欢更改OOB请求激活工作流程的想法,所以我通过将第一步作为进行通用检查的OR拆分来最小化 - 基本上:

Pseudo-code:
if (we're in one of the sites that's subject to my custom workflows) {
  Container step that points to my main custom workflow;
} else {
  Continue with the default Request for Activation workflow steps;
}

通过这种方式,您可以对OOB工作流进行最少的更改,如果您在同一个实例上设置新网站,并且不希望它受自定义工作流的影响,则可以自行运行默认工作流。

答案 2 :(得分:0)

我们在每个页面中创建了一个自定义属性,“页面所有者”,它实际上是指向一个组的指针(我希望我们从一开始就通过树继承它)。然后自定义工作流,以便页面所有者组在收件箱中收到此信息以供审批。