Как сделать запрос с параметром свойств в nuxeo

Я хочу сделать запрос с «динамическими» свойствами из моего приложения Java с помощью nuxeo 8.10.

Вот декларация моего NuxeoDocument:

    <schema name="TestDocumentProperties" src="data/TestDocumentProperties.xsd" prefix="test" />
    <doctype name="TestDocument" extends="Document">
        <schema name="dublincore"/>
        <schema name="TestDocumentProperties"/>
    </doctype>

Есть схема:

<xs:schema ...>  
  <xs:element name="summary" type="xs:string"/>
  <xs:element name="content" type="xs:string"/>
</xs:schema>

На мой сервер Nuxeo есть запрос «Получить»:

https:xxx/nuxeo/site/api/v1/search/lang/NXQL/execute?query=SELECT * FROM Document WHERE ecm:fulltext = 'test'&properties=TestDocumentProperties, dublincore

Когда я выполняю этот запрос прямо из своего браузера, результат содержит все свойства «dublincore» и «TestDocumentProperties»:

{
    "entity-type": "document",
    "type": "TestDocument",
    ...
    "properties": {
        "test:summary": "test text to search in summary",
        "test:content": "test text to search in content",
        "dc:description": null,
        "dc:language": null,
        "dc:coverage": null,
        "dc:valid": null,
        "dc:creator": "xxx",
        "dc:modified": "2017-12-13T16:28:38.44Z",
        ...
    },...
}

Итак, я хочу выполнить запрос nuxeo nxql из своего Java-приложения с тем же параметром. Раньше я выполнял только запрос из своего java-приложения без параметра "свойства" с этим кодом:

return this.nuxeoClient.repository().query("SELECT * FROM Document WHERE ecm:fulltext = 'test'");

Но с помощью метода «запрос» из репозитория невозможно указать свойства для извлечения. Итак, сегодня я пытаюсь использовать этот код:

    Map<String, Object> parameters = new HashMap<>();
    parameters.put("query", "SELECT * FROM Document WHERE ecm:fulltext = 'test'");
    parameters.put("properties", "TestDocumentProperties, dublincore");
    return this.nuxeoClient.automation("Repository.Query").parameters(parameters).execute();

К сожалению, результат получен неправильно, в моем ответе нет свойств «dublincore», но у меня есть «TestDocumentProperties». Если я удалю «TestDocumentProperties» в списке параметров свойств выборки, ответ не изменится...

Можете ли вы помочь мне исправить этот код или указать мне альтернативу?

Спасибо


person julien dumortier    schedule 09.02.2018    source источник
comment
Попробуйте установить его через заголовки: .setHeader(Constants.HEADER_NX_SCHEMAS, TestDocumentProperties,dublincore).parameters(parameters).execute();   -  person Jannes Botis    schedule 20.02.2018
comment
Я уже проверил, изменив заголовок, это работает, но этот метод доступен только из nuxeoClient (Singleton); нет доступа к возврату метода автоматизации.   -  person julien dumortier    schedule 20.02.2018
comment
Рад, что это помогло. Прошло много времени с тех пор, как я использовал его.   -  person Jannes Botis    schedule 20.02.2018


Ответы (1)


Согласно документу Nuxeo, вы можете выбрать схемы для возврата, используя < Метод strong>setHeader(Constants.HEADER_NX_SCHEMAS):

return this.nuxeoClient.setHeader(Constants.HEADER_NX_SCHEMAS, "TestDocumentProperties,dublincore").automation("Repository.Query").parameters(parameters).execute();

Для свойств. если я правильно помню, вы можете установить определенные свойства для возврата:

parameters.put("properties", "dc:title,dc:description");

или, может быть, вам нужно сделать так:

import org.nuxeo.ecm.automation.client.model.Document;
// Instantiate a new Document with the simple constructor
Document document = new Document("myDocument", "File");
document.set("dc:title", "My File");
document.set("dc:description", "My Description");
parameters.put("properties", document);

В этом последнем я не уверен, надеюсь, это поможет.

person Jannes Botis    schedule 20.02.2018