AEM资产是否可以通过在Java工作流中创建文件夹来移动文件

时间:2018-08-22 10:22:23

标签: java aem

我想通过仅使用Java中的工作流创建一个新文件夹来移动少量资产。我不想手动创建文件夹然后再移动资产,因为有10000个资产要移动到其他文件夹中。 / p>

1 个答案:

答案 0 :(得分:1)

如果要使用工作流创建文件夹-AEM中的文件夹只不过是jcr:primaryTypesling:Folder的{​​{1}}节点。如果您的类路径中有sling:OrderedFoldercom.day.cq.commons.jcr method将帮助您创建一个不存在的节点。

您还可以使用addNode方法,然后使用createPath api中的setProperty方法来创建此具有适当主要类型的文件夹。

将资产移至此新创建的节点(文件夹)之后,可以继续进行。您可以使用javax.jcr.Node中的clone method,该选项可以删除现有节点。


还有另一种直接转移资产的方法。 我建议您使用内置的javax.jcr.WorkSpace api对DAM资产执行CRUD操作。

com.adobe.granite.asset.api.AssetManager

AssetManager API的其他参考。

HelpX Article

API Details

如果没有适当的索引,移动大量资产可能会导致移动操作失败。监视日志以获取警告消息,例如session = resourceResolver.adaptTo(Session.class); String assetPath = "/content/dam/folderA/asset1.jpg"; String movePath = "/content/dam/folderB/asset1.jpg"; assetManager.moveAsset(assetPath, copyPath); session.save() session.logout() 。您可能必须将基于Oak的属性添加到现成的The query read or traversed more than X nodes.索引中才能解决此问题。

更多详细信息here