我要求在发布者中上传文件并反向复制到作者并将复制转发给另一个发布者。反向复制后,我需要在AEM作者中创建一个项目,并将反向复制的资产移动到项目特定的位置。所以我有一个自定义启动器来调用我的工作流类(它将创建一个项目并将资产复制到给定位置并删除它们)。这一切都很好。
这有一个问题,我试图避免竞争条件。创建项目并在启动器触发时移动资产,但所有资产尚未反向复制。有没有办法等到完成反向复制完成或任何条件写入启动器级别或某些工作消费者的东西。我在/ content / vendor有一个启动器。创建数据节点后,我有足够的信息来创建项目。但我需要将所有文件移动到项目特定位置。感谢您的帮助。谢谢。将文件结构作为屏幕截图附加。
答案 0 :(得分:0)
虽然我不太喜欢这个想法,反向复制并不总是像它应该的那样稳定运行,但是有两种方法可以解决你的问题: 1.在发布时将所有文件打包在一个zip中,并仅反向复制zip文件。反向复制完成后,您可以将整个事物解压缩到作者的正确位置。这样,每个项目只有一个工件。 2.在发布时将属性添加到资产的根节点。在作者上写一个事件处理程序,检查是否有设置了属性的新资产。这些资产需要移动到项目位置。
确保在执行其他工作流程(DAM更新资产或其他工作流程)时不移动资产。这可能会导致工作流实例停滞或更糟。
可以在此处找到分发资产的另一种方法: https://sling.apache.org/documentation/bundles/content-distribution.html
HTH, 奥利弗