在AEM CQ中,我正在使用资产管理器api来写入大坝中的内容(上传的图像)。这触发了开箱即用的Dam Update Asset工作流程。我需要读取工作流程完成后可以写入的再现和资产属性。 我的问题是如何等到完成工作流程以读取资产属性而不是thread.sleep。
我尝试使用递归函数调用迭代,同时存在asset属性。这给了空指针异常。但是当我在迭代中放入一个50毫秒的thread.sleep时,它对我有效。
我尝试在服务中获取工作流对象以读取工作流状态的另一种方法,但发现在写入内容后ootb工作流需要几毫秒。这里还必须给出thread.sleep。
再次尝试使用事件处理程序来侦听工作流事件。我们可以在完成工作流程时输入事件类型。如何通知服务或jsp工作流程已完成,我们可以阅读资产属性和再现?
如果有人可以分享他们对该方法的建议反馈,那就太好了。谢谢。
答案 0 :(得分:1)
你有错误的方法来解决这个问题。在我看来,你有两个合理的解决方案。
创建workflow process/step并使用自定义步骤扩展 Dam更新资产工作流程。
或强>
创建JCR observation listener并监听Event.PROPERTY_ADDED
或使用更高的吊索API,并使用相应的主题创建event handler,然后在您查找的属性后立即执行业务逻辑添加或更改。
为什么不使用Thread.sleep()或其他类似解决方案: