我想通过仅使用Java中的工作流创建一个新文件夹来移动少量资产。我不想手动创建文件夹然后再移动资产,因为有10000个资产要移动到其他文件夹中。 / p>
答案 0 :(得分:1)
如果要使用工作流创建文件夹-AEM中的文件夹只不过是jcr:primaryType
或sling:Folder
的{{1}}节点。如果您的类路径中有sling:OrderedFolder
,com.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的其他参考。
如果没有适当的索引,移动大量资产可能会导致移动操作失败。监视日志以获取警告消息,例如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。