如何在nuxeo中使用properties参数进行查询

时间:2018-02-09 10:50:00

标签: java nuxeo

我想用"动态"提出请求使用nuxeo 8.10从我的Java应用程序中获取属性。

我的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>

有一个&#34; Get&#34;请求我的Nuxeo服务器:

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

当我直接从浏览器执行此请求时,结果包含&#34; dublincore&#34;的所有属性。和&#34; TestDocumentProperties&#34;:

{
    "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",
        ...
    },...
}

所以,我想用我的Java应用程序用相同的参数执行nuxeo nxql请求。 之前,我只执行来自我的Java应用程序的请求,没有&#34;属性&#34;这段代码的参数:

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

但是&#34;查询&#34;来自存储库的方法,无法指定要获取的属性。所以,今天,我尝试使用这段代码:

    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();

不幸的是,结果没有正确获取,我没有&#34; dublincore&#34;我的回复中的属性,但我有&#34; TestDocumentProperties&#34;。如果我删除&#34; TestDocumentProperties&#34;在获取属性参数列表中,响应没有变化......

您能帮助我更正此代码或指明我的替代方案吗?

感谢&#39; S

1 个答案:

答案 0 :(得分:0)

根据nuxeo doc,您可以使用 setHeader(Constants.HEADER_NX_SCHEMAS 方法:

选择要返回的模式。
$sheet->setColumnFormat(array(
                    'A' => '@'
                ));
                foreach ($order_details as $key => $detail) {
                 $sheet->appendRow([(string)$detail->model->id_supplier, $detail->model->mintitle, $detail->qty, $detail->price, $detail->qty * $detail->price,]);
                 $sheet->setHeight($sheet->getHighestRow(), 45);
                }

对于属性。如果我没记错的话,您可以设置要返回的特定属性:

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

或者你可能需要这样做:

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

后者我不确定,希望它有所帮助。