【发布时间】:2016-03-09 09:03:53
【问题描述】:
对于我当前的 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());
}
我不认为这是一个最佳解决方案,我认为会有一个更简单的方法来解决这个问题。
希望您对我的问题有所了解,或许可以帮助我解决这个问题。
还是谢谢你;)
【问题讨论】: