2012-04-03 58 views
4

我想提高我们执行一个性能得到NodeRef,在露天:从一个节点路径

我们目前使用从根节点露天nodeService.getChildAssocs和运行某种检索节点的最快方法循环来比较路径。

当您拥有大量文件时,这不是非常有效。我已经从共享调试了定位文件webscript,并发现他们基于路径运行了Lucene查询。

这也是在这里描述的内容:http://wiki.alfresco.com/wiki/NodeRef_cookbook#Getting_a_NodeRef_from_its_path

这是最有效的方式来检索NodeRef?是否有另一个API可用于从回购方(在Java中)运行此简单任务?

千恩万谢

+0

你可以提供你目前在做什么的一个片段? – skuro 2012-04-03 08:49:39

+0

嗯,我真的不能这样做。另外,我不确定它会比我已经描述的更有帮助。 – 2012-04-03 08:52:06

回答

4

在基础API,你可以call

FileFolderService.resolveNamePath(NodeRef rootNode, List pathElements) 
FileFolderService.resolveNamePath(NodeRef rootNode, List pathElements, Boolean mustExist) 

Internally,它使用搜索循环模式,大概类似于你所提到的你已经做。然后,如果你想只经过搜索,您可以使用此其他API:

SearchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_XPATH, "/app:company_home/cm:path/cm:to/cm:content") 

的开箱即用的远程API是org/alfresco/cmis/item.get网页脚本提供,除其他外,以下网址模板:

/cmis/s/{store}/arg/p?path={path}&filter={filter?}&returnVersion={returnVersion?}&includeAllowableActions={includeAllowableActions?}&includeRelationships={includeRelationships?}&includeACL={includeACL?}&renditionFilter={renditionFilter?} 
/api/path/{store_type}/{store_id}/{nodepath}?filter={filter?}&returnVersion={returnVersion?}&includeAllowableActions={includeAllowableActions?}&includeRelationships={includeRelationships?}&includeACL={includeACL?}&renditionFilter={renditionFilter?} 

尽管如此,我不会推荐它用于性能关键路径,因为CMIS相当健谈。我可能会开发一个利用上述基础API的自定义Web脚本。

+0

我会试一试,谢谢。 – 2012-04-03 09:31:50

0

以下是使用CMIS REST的API的例子,假设你有一个回购文件 “/Sites/test/test.pdf”:

Atom的XML元数据返回:

http//localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/path?path=/Sites/test/test.pdf 

下载内容(实际PDF文件):

http//localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root/Sites/test/test.pdf 

返回的元数据JSON:

http//localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root/Sites/test/test.pdf?cmisselector=object 

返回文件夹儿童JSON:

http//localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root/Sites/test?cmisselector=children