4

我正在编写一个基于OpenCMIS的应用程序,它从 Alfresco 3.3 中提取一些数据。

它适用于标准CMIS 属性,例如cmis:nameor cmis:contentStreamMimeType;但是,我无法访问 CMIS AtomPub 提要中作为“Alfresco 扩展”的 Alfresco 特定属性:

<cmisra:object>
  <cmis:properties>
    <cmis:propertyString propertyDefinitionId="cmis:name" displayName="Name" queryName="cmis:name">
      <cmis:value>test document</cmis:value>
    </cmis:propertyString>
    <cmis:propertyString propertyDefinitionId="cmis:contentStreamMimeType" displayName="Content Stream MIME Type" queryName="cmis:contentStreamMimeType">
      <cmis:value>text/html</cmis:value>
    </cmis:propertyString>
    ...
    <alf:aspects>
      ...
      <alf:properties>
        <cmis:propertyString propertyDefinitionId="cm:description" displayName="Description" queryName="cm:description">
          <cmis:value>This is just a test document</cmis:value>
        </cmis:propertyString>
      </alf:properties>
    </alf:aspects>
  </cmis:properties>
</cmisra:object>

有什么方法可以让我cm:descripcion使用 OpenCMIS 获得 的值?

我的猜测是我需要使用DocumentType接口而不是Document,然后调用它的getExtensions()方法。但我不知道如何获取 DocumentType 的实例。

任何帮助将非常感激。

问候


编辑:虽然弗洛里安的回答已经为我解决了,但我刚刚意识到我也可以使用 CMIS SQL 获取这些属性的值:

select d.*, t.*, a.*
from   cmis:document d
join   cm:titled t on d.cmis:objectid = t.cmis:objectid
join   cm:author a on d.cmis:objectid = a.cmis:objectid
where  t.cm:description like ...
4

1 回答 1

3

恐怕 OpenCMIS 高级 API 还不能访问所有扩展。它在我们的待办事项清单上。现在,您必须使用低级 API。像这样的东西应该工作:

ObjectData doc = session.getBinding().getObjectService().getObject(...);
org.w3c.dom.Node domNode = (org.w3c.dom.Node) doc.getProperties().getExtensions().get(0); // <alf:aspects>
domNode.getFirstChild() ... 
于 2010-06-08T17:42:10.330 回答