java - AEM CQ 等待工作流完成

标签 java workflow aem wait

对于我当前的 AEM 6.0 项目,我需要创建一个自定义工作流来创建演绎版。正在与其他 AEM 项目在共享平台上工作。这就是我们不允许调整原始 DAMUpdateAsset 工作流(呈现 AEM 特定再现、缩略图等)的原因。

我的自定义再现工作流程呈现不同的再现。问题是,当我的工作流与 DAMUpdateAsset 工作流并行运行时,有时我会收到像 IllegalOakState 这样的异常。

我需要的是一个解决方案,以等待我的工作流程,直到 DAMUpdateAsset 工作流程完成。

目前我正在尝试通过 oak 查询来完成这项工作

public static final String QUERY_STRING = "SELECT * FROM [nt:base] AS s WHERE ISDESCENDANTNODE([/etc/workflow/instances]) and CONTAINS('status', 'COMPLETED') and contains('modelId', '/etc/workflow/models/dam/update_asset/jcr:content/model') and [data/payload/path]='%s' and endTime > CAST('%s' AS DATE)";
private void waitForDamUpdateImage(Session session, String path) throws WorkflowException, InterruptedException
{
    final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.GERMAN);
    final Date now = new Date();
    final Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date(now.getTime() - 2 * 60 * 1000));

    String queryString = String.format(QUERY_STRING, path, formatter.format(calendar.getTime()));

    Iterator iterator;

    do
    {
        //wait(100); this wait will produce IllegalMonitor... Exception
        iterator = QueryUtils.query(session, queryString);
    }
    while (!iterator.hasNext());
}

我认为这不是最佳解决方案,我认为会有更简单的方法来解决这个问题。

希望你知道我的问题是什么,也许可以帮助我解决这个问题。

还是谢谢你;)

最佳答案

您可以创建一个工作流启动器,它将在针对节点类型 cq:workflow 和路径/etc/workflow/instances(/.*) 修改节点事件时自动调用您的工作流。 并且条件是 status=COMPLETED modeleid=/etc/workflow/models/dam/update_asset/jcr:content/model,您可能需要试验哪种条件具有最佳性能。

由于启动器中只允许一个条件,您需要在流程实现中检查其中一个条件并继续或中止。

关于java - AEM CQ 等待工作流完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887104/

相关文章:

adobe - 如何在 AEM 上编辑 Teaser 的选项卡选项顺序?

java - Servlet 服务差的 Servlet

javascript - 是否可以集成 Angular.js (Angular 1) 和 AEM (Adobe Experience Manager 6.2)

c# - 工作流设计困境——状态机,yes or no

node.js - 使用 grunt 插件

java - 用什么代替 Class.newInstance()?

java - SpringFramework邮件发送JAVA

java - getClass().getName() 不返回 fragment 中的类名

java - 牛顿法 Java

workflow - 将新工作流程添加到 Alfresco 共享中