Ottenere le proprietà di estensione di Alfresco con OpenCMIS
-
24-10-2019 - |
Domanda
sto scrivendo un OpenCMIS based, che estrae alcuni dati da Alfresco 3.3.
Funziona bene con standard proprietà CMIS quali cmis:name
o cmis:contentStreamMimeType
; tuttavia, non possono accedere Alfresco especific proprietà, che sono presenti sul feed CMIS AtomPub come "estensioni 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>
C'è un modo in cui posso ottenere il valore di cm:descripcion
, con OpenCMIS?
La mia ipotesi è che ho bisogno di utilizzare l'interfaccia DocumentType
invece di Document
, e poi chiamare il suo metodo getExtensions()
. Ma io non so come ottenere un'istanza di DocumentType.
Qualsiasi aiuto sarebbe molto apprezzato.
Saluti
Modifica ospitarci la risposta di Florian già funzionato per me, ho appena capito che posso ottenere valori di queste proprietà con CMIS SQL, troppo:
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 ...
Soluzione
Ho paura le OpenCMIS di alto livello API non può accedere a tutte le estensioni ancora. E 'sulla nostra lista di cose da fare. Per il momento, è necessario utilizzare l'API di basso livello. Qualcosa del genere dovrebbe funzionare:
ObjectData doc = session.getBinding().getObjectService().getObject(...);
org.w3c.dom.Node domNode = (org.w3c.dom.Node) doc.getProperties().getExtensions().get(0); // <alf:aspects>
domNode.getFirstChild() ...