2010-06-08 109 views
4

我正在编写基于OpenCMIS的应用程序,该应用程序从Alfresco 3.3中提取一些数据。使用OpenCMIS获得Alfresco扩展属性

它可以正常工作标准 CMIS属性,如cmis:namecmis:contentStreamMimeType;然而,我无法访问露天especific性能,这是存在于CMIS AtomPub的饲料为“露天扩展”:

<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的实例。

任何帮助将非常感激。

问候


编辑: altough弗洛里安的答案已经制定了我,我才意识到,我可以得到这些属性的值与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 ... 

回答

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() ... 
+0

非常感谢您的答案,弗洛里安。是的,它的工作原理。这几乎是我在昨天的最后一次尝试中所做的:session.getBinding()。getObjectService()。getProperties()。getExtensions()...我只是尝试将响应(列表)作为字符串而不是节点。 -----很高兴知道高级API可能会在未来版本中访问扩展。 -----再次感谢和问候 – AJPerez 2010-06-09 06:57:28