2010-06-08 4 views
4

Я пишу приложение на основе OpenCMIS, которое извлекает некоторые данные из Alfresco 3.3.Получить свойства расширения Alfresco с помощью OpenCMIS

Он отлично работает с стандарт Свойства CMIS, такие как cmis:name или cmis:contentStreamMimeType; Однако, я не могу получить доступ к Alfresco especific свойства, которые присутствуют на корме КМИС AtomPub как «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.

Любая помощь была бы действительно оценена.

С уважением


Edit: Altough ответ Флориан уже работал для меня, я просто понял, что я могу получить значения этих свойств с КМИС 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

Я боюсь, что API высокого уровня OpenCMIS не сможет получить доступ ко всем расширениям. Это в нашем списке дел. Пока вы должны использовать низкоуровневый 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() ... Я просто пытался ответить (List ) как строки вместо Nodes. ----- Рад узнать, что API высокого уровня, возможно, будет иметь доступ к расширениям в будущей версии. ----- Еще раз спасибо и приветствую – AJPerez

Смежные вопросы