以cmis为单位斜杠:name和cmis:contentStreamFilename

时间:2017-09-29 07:39:59

标签: cmis documentum

CMIS 1.1 specification说:

  

2.1.5.3路径
  文件夹层次结构可以用规范表示法表示,例如路径。   [...]
  pathSegment标记必须不包含'/'字符   它是存储库特定的存储库如何选择pathSegment的值。存储库可能会选择使用cmis:name或内容流文件名为pathSegment标记。

但是,我能够在Documentum 7.1.0000.0146服务器中创建以下文档:

Documentum in CMIS Workbench

如您所见,cmis:namecmis:contentStreamFilename都包含斜杠。实际上,cmis:contentStreamFilename似乎变成了cmis:name(加上扩展名)。

这是Documentum的CMIS实施中的错误吗?

虽然此服务器正确回复"正常"使用getObjectByPath路径元素的cmis:name次请求,是否有任何方法可以在上面的屏幕截图中使用getObjectByPath对象?或getObjectByPath无法使用此类服务​​器?

2 个答案:

答案 0 :(得分:1)

我确实认为这是Documentum的CMIS实现中的一个错误(意思是,允许斜线成为cmis:namecmis:contentStreamFileName的一部分是一个错误)。我在Apache Chemistry Jira项目中找到this bug report,似乎修复了类似的错误。一些评论揭示了这个问题:

  

给定对象的以下路径:   /a/b/c/d.pdf

     

路径段标记是“a”,“b”,“c”和“d.pdf”。

     

getObjectByPath方法确实假设您将传递一个由正斜杠分隔的路径段标记组成的路径。这就是CMIS根据规范定义“路径”的方式。

...和...

  

存储库可能使用cmis:name作为pathSegment标记,但是,如果存储库不使用cmis:name作为pathSegment标记,则此情况显然会失败。

     

有一些可能的情况,cmis:name不用作pathSegment标记:

     

1)使用内容流文件名而不是cmis:name,如规范中所述。

     

2)存储库支持在文件夹中创建具有相同cmis:name的文档,这意味着不可避免地使用其他值而不是cmis:name作为其pathSegment,因为“每个项目的pathSegment标记必须唯一地标识该项目文件夹“根据规范。

我并不特别了解Documentum,因此在获取对象时是否会显示此错误是一个抛硬币。您是否考虑使用CMIS Workbench运行简单的CMIS查询以使用其中一个属性查找它?如果它有效,我会非常自信(虽然不是100%)它可以与getObjectByPath一起使用。

答案 1 :(得分:0)

我认为Documentum存储库中的对象名称没有太多限制。 如果要应用业务规则以确保没有使用“/”字符创建对象名称,那么请查看BOF框架。