如何使用aem 6.1中的DAM更新资产工作流删除资产?

时间:2016-07-21 18:59:05

标签: aem dam

我应该能够将资产的再现从工作者实例复制到主实例,然后删除工作者实例中的资产 使用DAM更新资产卸载工作流程

1 个答案:

答案 0 :(得分:0)

在我看来,更新工作者实例上的更新资产工作流程并不是一个好习惯 -

  1. 整个卸载基于Sling Discovery和事件处理机制。这需要将卸载的资产发回(读取反向复制)到Leader实例
  2. 在更新资产工作流中添加步骤可能会导致资产的反向复制出现问题。
  3. 您必须构建独立于卸载过程的内容才能实现此删除。有多种方法可以做到 -

    一种可能的方式 -

    • 使用基于JMS的实现来监控反向复制
    • 如果反向复制成功,请删除资产或将资产标记为删除(强烈推荐)
    • 如果按照标记资产进行删除的方法,请设置清理任务以仅运行工作程序实例(计划到方便的时间)。此清理任务标识标记为删除的资产并对其进行处理。

    IMHO标记资产的删除是更好的方法,因为它更高效和更高效。在非高峰时段,所有资产都会立即处理。

    还有其他方法,但需要编写大量自定义代码。

    更新 -

    开发反向复制 -

    您需要深入了解反向复制的工作原理。

    • 要反向复制的内容被推送到OUTBOX
    • 如果查看本地实例上的/etc/replication/agents.publish/outbox/jcr:content,请查找默认情况下的属性transportUri - repo://var/replication/outbox即反向复制的内容将推送到'/ var / replication / outbox “
    • 现在看看/libs/cq/replication/components/revagent/revagent.jsp,这是适用于接收实例的逻辑。

    通过以上内容可以让您更深入地了解反向复制的工作原理。

    现在您有两种方法可以实现您想要的功能 -

    1. 要检查复制状态,请按照/libs/cq/replication/components/revagent/revagent.jsp中的代码进入复制队列。这是在Author实例上执行的代码,其中内容被反向复制,在您的情况下是其Leader实例。您将不得不解决此代码,使其在Worker实例上工作。为了更具体地实现您的代码,您的代码将更新行Agent agent = agentMgr.getAgents().get(id);,其中id是OUTBOX代理ID。
    2. 让事件监听器监控发件箱。检查复制的有效负载并将其用于您的功能。
    3. 我所提到的是粗略的方法,它不包括故障转移/恢复用例,即如果您的复制队列因任何原因被阻止而图像有,您将如何处理删除没有被推回领导者。