Нам нужно создать запрос для поиска документов по узлу.
У нас есть документы со следующими свойствами:
<queryResponse>
<objects>
<objects>
<properties>
<propertyBoolean propertyDefinitionId="cmis:isMajorVersion" localName="isMajorVersion" queryName="cmis:isMajorVersion">
<s02:value>false
</s02:value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="scs:doc_valido" localName="doc_valido" displayName="Válido" queryName="scs:doc_valido">
<s02:value>true
</s02:value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="cmis:isPrivateWorkingCopy" localName="isPrivateWorkingCopy" queryName="cmis:isPrivateWorkingCopy"/>
<propertyBoolean propertyDefinitionId="cmis:isLatestMajorVersion" localName="isLatestMajorVersion" queryName="cmis:isLatestMajorVersion">
<s02:value>false
</s02:value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="cmis:isImmutable" localName="isImmutable" queryName="cmis:isImmutable">
<s02:value>false
</s02:value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="cmis:isLatestVersion" localName="isLatestVersion" queryName="cmis:isLatestVersion">
<s02:value>true
</s02:value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="cmis:isVersionSeriesCheckedOut" localName="isVersionSeriesCheckedOut" queryName="cmis:isVersionSeriesCheckedOut">
<s02:value>false
</s02:value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="inside:doc_origen" localName="doc_origen" displayName="Origen" queryName="inside:doc_origen">
<s02:value>true
</s02:value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="scs:es_revocado" localName="es_revocado" displayName="Consentimiento Revocado" queryName="scs:es_revocado"/>
<propertyId propertyDefinitionId="alfcmis:nodeRef" localName="nodeRef" queryName="alfcmis:nodeRef">
<s02:value>workspace://SpacesStore/d6988090-0475-44e0-b346-75041da3cd7b
</s02:value>
</propertyId>
<propertyId propertyDefinitionId="cmis:objectTypeId" localName="objectTypeId" queryName="cmis:objectTypeId">
<s02:value>D:inside:documento
</s02:value>
</propertyId>
<propertyId propertyDefinitionId="cmis:baseTypeId" localName="baseTypeId" queryName="cmis:baseTypeId">
<s02:value>cmis:document
</s02:value>
</propertyId>
<propertyId propertyDefinitionId="cmis:versionSeriesCheckedOutId" localName="versionSeriesCheckedOutId" queryName="cmis:versionSeriesCheckedOutId"/>
<propertyId propertyDefinitionId="cmis:objectId" localName="objectId" queryName="cmis:objectId">
<s02:value>workspace://SpacesStore/d6988090-0475-44e0-b346-75041da3cd7b;1.1
</s02:value>
</propertyId>
<propertyId propertyDefinitionId="cmis:contentStreamId" localName="contentStreamId" queryName="cmis:contentStreamId">
<s02:value>store://2019/11/28/15/50/53811130-6cb7-419b-afce-060249a17d0a.bin
</s02:value>
</propertyId>
<propertyId propertyDefinitionId="cmis:versionSeriesId" localName="versionSeriesId" queryName="cmis:versionSeriesId">
<s02:value>workspace://SpacesStore/d6988090-0475-44e0-b346-75041da3cd7b
</s02:value>
</propertyId>
<propertyInteger propertyDefinitionId="cmis:contentStreamLength" localName="contentStreamLength" queryName="cmis:contentStreamLength">
<s02:value>15533
</s02:value>
</propertyInteger>
<propertyDateTime propertyDefinitionId="cmis:creationDate" localName="creationDate" queryName="cmis:creationDate">
<s02:value>2017-03-30T13:22:30.251Z
</s02:value>
</propertyDateTime>
<propertyDateTime propertyDefinitionId="inside:doc_fechaCaptura" localName="doc_fechaCaptura" displayName="Fecha de Captura" queryName="inside:doc_fechaCaptura">
<s02:value>2017-03-30T13:22:26.565Z
</s02:value>
</propertyDateTime>
<propertyDateTime propertyDefinitionId="cmis:lastModificationDate" localName="lastModificationDate" queryName="cmis:lastModificationDate">
<s02:value>2017-03-30T13:22:31.206Z
</s02:value>
</propertyDateTime>
<propertyString propertyDefinitionId="scs:doc_sexo" localName="doc_sexo" displayName="Sexo Paciente" queryName="scs:doc_sexo"/>
<propertyString propertyDefinitionId="cmis:description" localName="description" queryName="cmis:description"/>
<propertyString propertyDefinitionId="cmis:createdBy" localName="createdBy" queryName="cmis:createdBy">
<s02:value>
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="inside:doc_valorCSV" localName="doc_valorCSV" displayName="Valor CSV" queryName="inside:doc_valorCSV">
<s02:value>0gN3S+P8f3GeUqDVLbp7Ch6LuxDXRenGl
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="scs:doc_apellido1" localName="doc_apellido1" displayName="Primer Apellido Paciente" queryName="scs:doc_apellido1"/>
<propertyString propertyDefinitionId="scs:doc_apellido2" localName="doc_apellido2" displayName="Segundo Apellido Paciente" queryName="scs:doc_apellido2"/>
<propertyString propertyDefinitionId="cmis:contentStreamFileName" localName="contentStreamFileName" queryName="cmis:contentStreamFileName">
<s02:value>ES_E00010207_2017_C1A890A28C4D38A2DEBB9B40FE9322.pdf
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="scs:doc_nass" localName="doc_nass" displayName="NASS" queryName="scs:doc_nass">
<s02:value>051999999971
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="inside:doc_organo" localName="doc_organo" displayName="Organos" queryName="inside:doc_organo">
<s02:value>E00010207
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="scs:doc_dni" localName="doc_dni" displayName="DNI Paciente" queryName="scs:doc_dni"/>
<propertyString propertyDefinitionId="scs:id_doc_revocado" localName="id_doc_revocado" displayName="Identificado del Documento de Revocación" queryName="scs:id_doc_revocado"/>
<propertyString propertyDefinitionId="scs:doc_tamano" localName="doc_tamano" displayName="Tamano de la Digitalizacion" queryName="scs:doc_tamano"/>
<propertyString propertyDefinitionId="scs:doc_nombre" localName="doc_nombre" displayName="Nombre Paciente" queryName="scs:doc_nombre"/>
<propertyString propertyDefinitionId="cmis:contentStreamMimeType" localName="contentStreamMimeType" queryName="cmis:contentStreamMimeType">
<s02:value>application/pdf
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="inside:doc_identificadorDocOrigen" localName="doc_identificadorDocOrigen" displayName="Identificador Documento Origen" queryName="inside:doc_identificadorDocOrigen"/>
<propertyString propertyDefinitionId="scs:doc_fechaNacimiento" localName="doc_fechaNacimiento" displayName="Fecha de Nacimiento Paciente" queryName="scs:doc_fechaNacimiento"/>
<propertyString propertyDefinitionId="inside:doc_identificador" localName="doc_identificador" displayName="Identificador" queryName="inside:doc_identificador">
<s02:value>ES_E00010207_2017_C1A890A28C4D38A2DEBB9B40FE9322
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="inside:doc_versionNTI" localName="doc_versionNTI" displayName="Version NTI" queryName="inside:doc_versionNTI">
<s02:value>
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="inside:doc_tipoFirma" localName="doc_tipoFirma" displayName="Tipo de Firma" queryName="inside:doc_tipoFirma"/>
<propertyString propertyDefinitionId="scs:doc_sns" localName="doc_sns" displayName="SNS" queryName="scs:doc_sns"/>
<propertyString propertyDefinitionId="scs:doc_firma" localName="doc_firma" displayName="Valor Firma" queryName="scs:doc_firma">
<s02:value>
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="scs:doc_numHistoriaClinica" localName="doc_numHistoriaClinica" displayName="Numero de Historia Clinica" queryName="scs:doc_numHistoriaClinica">
<s02:value>11645069
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="cmis:versionLabel" localName="versionLabel" queryName="cmis:versionLabel">
<s02:value>1.1
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="cmis:checkinComment" localName="checkinComment" queryName="cmis:checkinComment"/>
<propertyString propertyDefinitionId="inside:doc_estadoElaboracion" localName="doc_estadoElaboracion" displayName="Estado de Elaboración" queryName="inside:doc_estadoElaboracion">
<s02:value>EE99
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="cmis:name" localName="name" queryName="cmis:name">
<s02:value>ES_E00010207_2017_C1A890A28C4D38A2DEBB9B40FE9322.pdf
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="scs:doc_numExpediente" localName="doc_numExpediente" displayName="Numero de Expediente" queryName="scs:doc_numExpediente">
<s02:value>11645069
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="inside:doc_tipoDocumental" localName="doc_tipoDocumental" displayName="Tipo Documental" queryName="inside:doc_tipoDocumental">
<s02:value>TD02
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="scs:doc_idioma" localName="doc_idioma" displayName="Idioma de la Digitalizacion" queryName="scs:doc_idioma"/>
<propertyString propertyDefinitionId="cmis:lastModifiedBy" localName="lastModifiedBy" queryName="cmis:lastModifiedBy">
<s02:value>
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="scs:doc_resolucion" localName="doc_resolucion" displayName="Resolucion de la Digitalizacion" queryName="scs:doc_resolucion"/>
<propertyString propertyDefinitionId="inside:doc_defGeneracionCSV" localName="doc_defGeneracionCSV" displayName="Definición Generación CSV" queryName="inside:doc_defGeneracionCSV"/>
<propertyString propertyDefinitionId="cmis:changeToken" localName="changeToken" queryName="cmis:changeToken"/>
<propertyString propertyDefinitionId="inside:doc_nombreFormato" localName="doc_nombreFormato" displayName="Nombre de Formato" queryName="inside:doc_nombreFormato">
<s02:value>PDF
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="cmis:versionSeriesCheckedOutBy" localName="versionSeriesCheckedOutBy" queryName="cmis:versionSeriesCheckedOutBy"/>
<propertyString propertyDefinitionId="scs:doc_certificado" localName="doc_certificado" displayName="Valor Certificado" queryName="scs:doc_certificado">
<s02:value>
</s02:value>
</propertyString>
<propertyString propertyDefinitionId="scs:valorCSV_revocado" localName="valorCSV_revocado" displayName="Valor CSV del Documento de Revocación" queryName="scs:valorCSV_revocado"/>
</properties>
</objects>
</objects>
Мы пытались найти его используя запрос nodeRef, следующим образом:
SELECT * FROM inside:documento WHERE alfcmis:nodeRef=1234
И система отвечает нам:
Столбец ссылается на несоответствующее свойство alfcmis: nodeRef
Кроме того, мы также попробовали использовать реальное значение nodeRef:
SELECT * FROM inside:documento WHERE alfcmis:nodeRef=workspace://SpacesStore/d6988090-0475-44e0-b346-75041da3cd7b
Однако система отвечает нам:
строка 1:53 несоответствующая входная рабочая область: ожидание COLON ([@ 12,53: 62 = 'workspace:', <37>, 1: 53]) в где [запрос, whereClause, searchOrCondition, searchAndCondition, searchNotCondition, searchTest, предикат, сравнениеPredicate, literalOrParameterName, параметрName, recoverFromMismatchedToken]
Для решения предыдущей проблемы мы обнаружили, что, возможно, нам следует использовать двоеточие вместо знака равенства:
https://docs.alfresco.com/4.2/concepts/rm-searchsyntax-fields.html
Итак, мы написали:
SELECT * FROM inside:documento WHERE alfcmis:nodeRef:workspace://SpacesStore/d6988090-0475-44e0-b346-75041da3cd7b
И вывод:
строка 1:63 не жизнеспособны альтернатива в символе '/'
Из-за последнего исключения мы обнаружили, что строки должны быть заключены в одинарные кавычки '', а специальные символы экранированы обратной косой чертой \
Ошибка в вызов CMIS Query, если строка содержит одинарные или двойные кавычки
Затем мы попробовали оба подхода, сначала с одинарными кавычками:
SELECT * FROM inside:documento WHERE alfcmis:nodeRef:'workspace://SpacesStore/d6988090-0475-44e0-b346-75041da3cd7b'
SELECT * FROM inside:documento WHERE alfcmis:nodeRef:'workspace:\/\/SpacesStore\/d6988090-0475-44e0-b346-75041da3cd7b'
И система отвечает:
1: 53 нет жизнеспособной альтернативы во входном рабочем пространстве '': // SpacesStore / d6988090-0475-44e0-b346-75041da3cd7b \ n '' (решение = 28, состояние 66) решение = << 569: 1: предикат: (сравнениеПредикат | inPredicate | likePredicate | nullPredicate | quanifiedComparisonPredicate | quantifiedInPredicate | textSearchPredicate | folderPredicate); >> в where [запрос, whereClause, searchOrCondition, searchAndCondition, searchNotCondition, searchTest, предикат]
EDIT : Как пишет @Gagravarr, мы проверили следующий запрос:
SELECT * FROM inside:documento WHERE alfcmis:nodeRef='workspace://SpacesStore/d6988090-0475-44e0-b346-75041da3cd7b
'
Итак, система выводит:
Столбец ссылается на несоответствующее свойство alfcmis: nodeRef
Также мы прочитали:
https://docs.alfresco.com/6.1/concepts/dev-api-by-language-alf-rest-finding-content-by-search-query.html
https://docs.alfresco.com/6.1/concepts/dev-api-by-language-alf-rest-finding-content-by-term.html
https://docs.alfresco.com/6.1/concepts/dev-api-by-language-alf-rest-searching-for-nodes.html
https://docs.alfresco.com/4.2/references/API-JS-findNode.html
На открытом воздухе: невозможно выполнить CMIS-запрос по пути
https://docs.alfresco.com/search-enterprise/concepts/searchsyntax-escaping.html