Получить свойства расширения Alfresco с OpenCMIS - PullRequest
4 голосов
/ 08 июня 2010

Я пишу приложение OpenCMIS , которое извлекает некоторые данные из Alfresco 3.3.

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

Любая помощь будет очень признательна.

Привет


Редактировать: Хотя ответ Флориана уже сработал для меня, я только что понял, что могу получить значения этих свойств и с 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 ...

1 Ответ

3 голосов
/ 08 июня 2010

Боюсь, что высокоуровневый 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() ... 
...