Workflow 如何等待dam更新资产工作流完成,而不是线程点睡眠
在AEM CQ中,我使用asset manager api在dam中写入内容(上传的图像)。这将触发现成的Dam更新资源工作流。我需要阅读工作流完成后可用的格式副本和资产属性。 我的问题是,如何等到工作流完成后再读取资产属性,而不是thread.sleep 当资产属性存在时,我尝试使用递归函数调用进行迭代。这导致空指针异常。但是当我在迭代中加入一个50毫秒的thread.sleep时,它对我来说是有效的 另一种方法是,我试图让服务中的工作流对象读取工作流状态,但发现在内容写入后,ootb工作流需要几毫秒才能启动。这里还得给线程。睡眠 再次尝试使用事件处理程序侦听工作流事件。我们可以在工作流完成时输入事件类型。如何通知服务或jsp工作流已完成,并且我们可以读取资产属性和格式副本Workflow 如何等待dam更新资产工作流完成,而不是线程点睡眠,workflow,aem,wait,dam,Workflow,Aem,Wait,Dam,在AEM CQ中,我使用asset manager api在dam中写入内容(上传的图像)。这将触发现成的Dam更新资源工作流。我需要阅读工作流完成后可用的格式副本和资产属性。 我的问题是,如何等到工作流完成后再读取资产属性,而不是thread.sleep 当资产属性存在时,我尝试使用递归函数调用进行迭代。这导致空指针异常。但是当我在迭代中加入一个50毫秒的thread.sleep时,它对我来说是有效的 另一种方法是,我试图让服务中的工作流对象读取工作流状态,但发现在内容写入后,ootb工作流需
如果有人能分享他们对该方法的建议和反馈,那就太好了。谢谢。解决这个问题的方法不对。在我看来,你有两个合理的解决方案 使用自定义步骤创建和扩展Dam更新资源工作流 或 例如,创建并侦听
事件。添加的属性
,或者使用更高的sling API并使用适当的主题进行创建,然后在添加或更改所查找的属性后立即执行业务逻辑
为什么不使用Thread.sleep()或其他类似的解决方案:
- 您不知道工作流何时准确执行。可能是 如果上传了许多ASSET或只是卡住了,则延迟
- 你不能保证你的线程能够执行它的 逻辑。例如,可以停止该实例
- 为每个上传的资源创建一个新的趋势可能是一项昂贵的任务。当您创建无限循环并使这些线程处于睡眠状态,而不是唤醒它们并反复检查时,您也会浪费资源。。。以此类推,直到线程最终能够完成它的任务