workflow - 工作流程停用/激活的正确用户和通知

标签 workflow aem

我们有一个多站点设置,其中包含独立的内容树以及各自的组和用户。严格执行四眼原则,因此任何用户都没有复制权。

CQ 的局限性在于,如果没有复制权限的用户单击 SiteAdmin 或 Sidekick 中的激活按钮,则会触发默认激活工作流请求。这是硬编码的,无法更改;这同样适用于停用。所以我所做的是创建一个自定义工作流程步骤,我将其作为默认工作流程中的唯一步骤。此自定义步骤检查工作负载项的路径并为此树触发正确的工作流。

第一个问题:由于这一步直接完成并触发了新的工作流,启动工作流的用户会立即收到工作流已完成的消息。我能否以某种方式将第二个工作流程作为子任务,以便初始工作流程仅在子任务完成时完成?

第二个问题:树特定的工作流程有一个批准人步骤,然后是自定义的四眼检查步骤(如果最后修改的用户等于批准人,则工作流退回到批准人步骤有错误),最后一步是 com.day.cq.wcm.workflow.process.ActivatePageProcess。但由于没有用户具有复制权限,因此未选中复选框“作为参与者复制”。因此每个页面都有 admin 作为 cq:lastReplicatedBy。是否有可能在没有复制权的情况下设置批准者?

我们 fork 工作流程的代码片段:

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());
    }
}

附言。这是一个关于我们特殊工作流程设置的综合问题。如果某些版主认为我应该问两个单独的问题,请告诉我。

最佳答案

这是一个非常有趣的案例!

第一个问题:

CQ5.6 及进一步:Day CQ Workflow Email Notification Service 配置中,有一些复选框允许在中止或完成时关闭通知。

CQ5.5:

  • 选项 1 您可以通过在相同的服务配置 ( Day) 中将 event.topic 留空来关闭这两个通知(中止和完成) CQ 工作流电子邮件通知服务)

  • 选项 2(不好的方法)您可以删除用于生成该电子邮件的模板。 (/etc/workflow/notification/email/default/en.txt) 这会导致两件事:

    1. 将不再发送电子邮件。
    2. 您的日志中会有难看的堆栈跟踪。但是,通过适当的日志记录配置,这些堆栈跟踪可以从主错误日志中删除。

第二个问题:我会选择最简单的方法,然后在 CRX 级别更改 cq:lastReplicatedBy 字段的值。在我看来,任何其他方式都太复杂了。 (每个解决方案都只是一个解决方法,我认为没有一个干净的解决方案)

关于workflow - 工作流程停用/激活的正确用户和通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24774570/

相关文章:

javascript - AEM (cq5) 处理组件内的信息

osgi - 有没有办法从不同的 CQ 实例导入/导出任务?

java - 如何生成空bpm :comment box in Alfresco Activiti Workflow Task?

aem - 安装软件包 Adob​​e AEM 时出现 "org.apache.jackrabbit.core.data.DataStoreException: Could not add record"异常

AEM Sightly - 是否可以创建自定义数据隐藏属性?

workflow - 如何重新启动已终止的工作流程?

css - CQ5 parsys 即使在预览模式下也会留下一些空间?

hadoop - oozie 工作流应该只在有可用的输入 hdfs 文件时运行

workflow - 使用工作流程进行关联

windows - 如何测试Windows Server是否完全更新? (尝试创建更新/重启循环脚本)