0

我正在使用DotCMIS连接到 Alfresco 和 FileNet 没有问题。

注册了一个IBM Connections帐户,通过 Web 界面添加了一些文件,并尝试连接到其 CMIS 端点https://greenhouse.lotus.com/files/basic/cmis/my/servicedoc

GetRepositories在此 URL 上提供了一个存储库,该存储库又包含以下两个文件夹:

My Files
My Folders

但是当我GetObjectByPath("/My Files")在同一个存储库中运行时,我得到:

DotCMIS.Exceptions.CmisObjectNotFoundException was unhandled
 Message=Not Found
 Source=DotCMIS
 ErrorContent=<?xml version="1.0" encoding="UTF-8"?><lcmis:error xmlns:lcmis="http://www.ibm.com/xmlns/prod/sn/cmis"><lcmis:code>objectNotFound</lcmis:code><lcmis:message>EJPVJ9023E: Unable to find object at path /My Files</lcmis:message><lcmis:userAction></lcmis:userAction></lcmis:error>

Unable to find object at path /My Files尽管IBM ConnectionsMy Files是存储库根目录下的一个文件夹,但它说了什么?

4

1 回答 1

2

cmis:name 属性(“我的文件”、“我的文件夹”)已本地化。非英语用户将获得这两个对象的不同 cmis:name 属性值。

要从这些资源中获取子资源,您需要使用每个对象返回的 cmis:path 属性构建路径,或者使用 cmisra:pathSegment 构建相对于其父资源的路径。

例如,您的方案中标记为“我的文件”的资源的 cmis:object 具有以下内容:

<cmis:propertyString propertyDefinitionId="cmis:path"
 localName="cmis_path" displayName="Path" queryName="cmis:path">
 <cmis:value>/files</cmis:value>
</cmis:propertyString>

因此,要实际获取用户的文件,调用路径如下:

GetObjectByPath("/files")

要获取用户的文件夹,调用路径如下:

GetObjectByPath("/collections")

网络是为了确保您使用 cmisra:pathSegment 或 cmis:path 属性而不是 cmis:name 构建路径,因为这可能并非在所有情况下都有效(即,如果存储库具有相同名称的兄弟姐妹等)。

于 2012-10-10T18:46:32.810 回答