Nuxeo Server

Automation Helpers

Updated: September 22, 2017 Page Information Edit on GitHub

Automation Helpers are stateless tool functions used in MVEL or Javascript Automation scripts.

Default Automation Helpers

Two helpers are set by default into Nuxeo Platform: "Fn" and "HTTP".

  • Fn: Functions of Fn helper can be retrieved on this class. (Fn.getVocabularyLabel(...), Fn.getNextId(), Fn.getEmails(...).....)

  • HTTP: Functions of HTTP helper can be used to make remote REST Calls.

HTTP Examples

GET REST Call from Nuxeo to another Nuxeo repository

import org.nuxeo.ecm.core.api.Blob;
import org.nuxeo.ecm.core.api.CoreSession;
import org.nuxeo.ecm.automation.AutomationService;
import org.nuxeo.ecm.automation.OperationContext;
import org.nuxeo.ecm.automation.OperationException;

Map<String, Object> params = new HashMap<>();

// Defining MVEL expression and store it in Operation Context under 'script' key parameter
params.put("script","Context.result = HTTP.call(\"Administrator\",\"Administrator\",\"GET\", \"http://localhost:18090/api/v1/path/default-domain\");");

OperationContext ctx = new OperationContext(session);

// Running the operation 'RunScript' which is evaluate a MVEL expression 'script'
automationService.run(ctx, "RunScript", params);

// 'result' will be the JSON Payload definition of the document 'default-domain'
String result = ((Blob) ctx.get("result")).getString();

POST REST Call from Nuxeo to another Nuxeo repository

import org.nuxeo.ecm.core.api.Blob;
import org.nuxeo.ecm.core.api.CoreSession;
import org.nuxeo.ecm.automation.AutomationService;
import org.nuxeo.ecm.automation.OperationContext;
import org.nuxeo.ecm.automation.OperationException;

// Defining the new document to create in JSON Format
String data = "{\"entity-type\": \"document\",\"type\": \"Workspace\",\"name\":\"newName\",\"properties\": {\"dc:title\":\"My title\",\"dc:description\":\" \"}}";

Map<String, String> headers = new HashMap<>();
headers.put("Content-type", "application/json+nxentity");
Map<String, Object> params = new HashMap<>();
OperationContext ctx = new OperationContext(session);

// Store headers and JSON Format in Operation Context
ctx.put("data", data);
ctx.put("headers", headers);

// Set the MVEL Expression to assess in RunScript operation
params.put("script", "Context.result = HTTP.call(\"Administrator\",\"Administrator\",\"POST\", \"http://localhost:18090/api/v1/path/default-domain\", Context.data, Context.headers);");

// RunScript
automationService.run(ctx, "RunScript", params);

// 'result' will be the current document JSON Payload definition which has been created under 'default-domain'
String result = ((Blob) ctx.get("result")).getString();

Contributions

Automation Helpers can be contributed to the Nuxeo Platform easily through extension point:

<extension-point name="contextHelpers">
  <documentation>
    <code>
      <!-- 'id' is the prefix to use in MVEL or Javascript scripts to get access to all embedded functions -->
      <contextHelper id="platformFunctions" class="org.nuxeo.ecm.automation.features.PlatformFunctions"/>
    </code>
  </documentation>
  <object class="org.nuxeo.ecm.automation.context.ContextHelperDescriptor"/>
</extension-point>

Default Contribution

<extension target="org.nuxeo.ecm.core.operation.OperationServiceComponent"
           point="contextHelpers">
  <contextHelper id="Fn" class="org.nuxeo.ecm.automation.features.PlatformFunctions"/>
  <contextHelper id="HTTP" class="org.nuxeo.ecm.automation.features.HTTPHelper"/>
</extension>

Custom Contribution

In order to contribute custom Helpers contribution, you have to create your own POJO extending the interface 'org.nuxeo.ecm.automation.context.ContextHelper':

XML Contribution

<extension target="org.nuxeo.ecm.core.operation.OperationServiceComponent"
           point="contextHelpers">
  <contextHelper id="dummy" class="org.test.DummyHelper"/>
</extension>

POJO

package org.test;

import org.nuxeo.ecm.automation.context.ContextHelper;

public class DummyHelper implements ContextHelper {

    public String helper1() {
        return "hello";
    }
}

3 days ago manonlumeau NXDOC-1323: Update BDE doc
2 years ago Solen Guitter 16 | ix page layout to use 2/3 layou
2 years ago Solen Guitter 15
2 years ago Vladimir Pasquier 14
2 years ago Vladimir Pasquier 13
2 years ago Vladimir Pasquier 12
2 years ago Vladimir Pasquier 11
2 years ago Vladimir Pasquier 10
2 years ago Vladimir Pasquier 7
2 years ago Vladimir Pasquier 8
2 years ago Vladimir Pasquier 9
2 years ago Vladimir Pasquier 4
2 years ago Vladimir Pasquier 5
2 years ago Vladimir Pasquier 6
2 years ago Vladimir Pasquier 3
2 years ago Vladimir Pasquier 2
2 years ago Vladimir Pasquier 1
History: Created by Vladimir Pasquier