我想获取存储在 Alfresco 中的文档(或空间)的 NodeRef。
我的代码是用 Java 编写的,在 Alfresco 中运行(例如在 AMP 中)。
我的代码需要针对竞争条件是安全的,例如它必须找到前一秒创建的节点。在此背景下,usual methods (基于搜索)无法使用。
怎么办?
最佳答案
您需要避免任何触及 SOLR 的内容,如 those APIs are only Eventually Consistent
具体来说,您需要一个基于 canned queries 的 API 。您的用例的主要是 NodeService.getChildAssocs和 NodeService.getChildByName 。一些FileFolderService也会立即生效
您最好的选择是将路径拆分为多个组件,然后对其进行递归/循环下降。根据您想要使用名称 (cm:name
) 还是 QName(基于关联),您可以使用两种 NodeService
方法之一
例如(未完全测试...)
String[] parts = path.split("\\/");
NodeRef nodeRef = nodeService.getRootNode(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
for (String name : parts) {
NodeRef child = nodeService.getChildByName(nodeRef, ContentModel.ASSOC_CONTAINS, name);
if (child == null)
throw new Exception("Path part not found "+name+" in "+path+" at "+nodeRef);
nodeRef = child;
}
return nodeRef;
关于java - 通过路径获取 Alfresco NodeRef(实时、竞争条件安全),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225467/