【发布时间】:2014-07-16 07:21:37
【问题描述】:
我们有一个多站点设置,其中包含单独的内容树以及自己的组和用户。严格执行 4 眼原则,因此任何用户都没有复制权限。
CQ 的限制是,如果没有复制权限的用户单击 SiteAdmin 或 Sidekick 中的激活按钮,则会触发默认激活请求工作流。这是硬编码的,无法更改;这同样适用于停用。所以我所做的是创建一个自定义工作流程步骤,我将其作为默认工作流程的唯一步骤。此自定义步骤检查工作负载项的路径并触发此树的正确工作流。
第一个问题:由于这一步直接完成并触发了新的工作流,启动工作流的用户立即得到工作流完成的消息。我能否以某种方式让第二个工作流成为子任务,这样初始工作流只有在子任务完成后才会完成?
第二个问题: 特定于树的工作流有一个审批者步骤,然后是自定义的 4 眼检查步骤(如果最后修改的用户等于审批者,则工作流会退回到审批者步骤有错误),最后一步是com.day.cq.wcm.workflow.process.ActivatePageProcess。但由于没有用户具有复制权限,因此未选中“复制为参与者”复选框。因此,每个页面都有admin 作为cq:lastReplicatedBy。是否有可能在没有复制权限的情况下设置批准人?
我们的分叉工作流程的代码片段:
protected void processItem(WorkItem item, WorkflowSession wfSession, WorkflowData workflowData, String config) throws WorkflowException {
ResourceResolver resolver = getResourceResolver();
PageManager pm = resolver.adaptTo(PageManager.class);
try {
String path = workflowData.getPayload().toString();
Page page = pm.getContainingPage(path);
if (page != null) {
//calculate the id of the correct model depending on page
String wfid = getWfId(page);
WorkflowModel mmodel = wfSession.getModel(wfId);
wfSession.startWorkflow(model, workflowData);
}
} finally {
closeResourceResolver(resolver);
wfSession.terminateWorkflow(item.getWorkflow());
}
}
ps。这是一个关于我们特殊工作流程设置的综合问题。如果有版主认为我应该问两个单独的问题,请告诉我。
【问题讨论】: