我正在使用DotCMIS,连接到Alfresco和FileNet没有问题。
我注册了一个 IBM Connections 帐户,通过 Web 界面添加了一些文件,并尝试连接到其 CMIS 端点 https://greenhouse.lotus.com/files/basic/cmis/my/servicedoc
此 URL 上的GetRepositories
提供一个存储库,该存储库又包含以下两个文件夹:
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>
IBM Connections Unable to find object at path /My Files
说什么,尽管My Files
存储库根目录下的文件夹?
cmis:name 属性("My Files"、"My Folers")已本地化。 非英语用户将获得这两个对象的不同 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 构建路径,因为这可能并非在所有情况下都有效(即,如果存储库具有同名的同级等)。