java - 通过路径获取 Alfresco NodeRef(实时、竞争条件安全)

标签 java alfresco

我想获取存储在 Alfresco 中的文档(或空间)的 NodeRef。

我的代码是用 Java 编写的,在 Alfresco 中运行(例如在 AMP 中)。

我的代码需要针对竞争条件是安全的,例如它必须找到前一秒创建的节点。在此背景下,usual methods (基于搜索)无法使用。

怎么办?

最佳答案

您需要避免任何触及 SOLR 的内容,如 those APIs are only Eventually Consistent

具体来说,您需要一个基于 canned queries 的 API 。您的用例的主要是 NodeService.getChildAssocsNodeService.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/

相关文章:

java - 如何在Java中识别字符串数组中最长的字母单词? (任何不带符号或数字的子字符串)

java - 如何在WebView上显示加载图像或进度条

postgresql - 安装 amp 文件后 Alfresco 社区损坏

json - 在 activiti bpmn 中解析 JSON 字符串

java - org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException

java - 如何使用 Alfresco Web 服务进行 Alfresco

java - 如何快速将长字符串与正则表达式匹配?

java - 为什么这段代码会生成 NullPointerException?

customization - 如何禁用 Alfresco Share 中的快速共享?

java - 如何创建只能从其类修改的公共(public)静态变量?