Pasar parámetros de entrada

Cómo utilizar JavaScript para especificar diferentes parámetros de entrada para un servicio REST.

Invocar un servicio REST con un parámetro de tipo simple

En el ejemplo siguiente, se invoca una operación denominada echo para un servicio denominado MyExternalService, y los atributos de respuesta se generan en el archivo de registro.

// prepare REST request
var request = new BPMRESTRequest();

request.externalServiceName = "MyExternalService";
request.operationName = "echo";

// prepare the one string parameter that is needed for the REST request
request.parameters = {"text": "hello world!"};

// invoke the REST request, which returns a BPMRESTResponse instance.
var response = tw.system.invokeREST(request);

// have a look at the response
log.info("Response - httpStatusCode: " + response.httpStatusCode);
log.info("Response - httpStatusMessage: " + response.httpStatusMessage);
log.info("Response - httpHeaders: " + response.httpHeaders);
log.info("Response - content: " + response.content);

Invocar un servicio REST con un parámetro JSON de tipo complejo

El ejemplo siguiente muestra cómo especificar un objeto JSON como parámetro de entrada. También analiza el contenido de la respuesta en una variable nueva.

// prepare REST request
var request = new BPMRESTRequest();

request.externalServiceName = "MyExternalService";
request.operationName = "addCustomer";

// set http headers
var headers = {"Content-Type": "application/json", 
               "Accept": "application/json"};
request.httpHeaders = headers;

// prepare the complex-typed input parameter that is needed for the REST request
// we provide the complex type (BO) as JSON object.
request.parameters = {"customer": {"name" : "Hugo", 
                                   "age" : "32", 
                                   "since" : "2016-08-14T22:44:53Z"}};

// invoke the REST request, which returns a BPMRESTResponse instance.
var response = tw.system.invokeREST(request);

// have a look at the response
log.info("Response - httpStatusCode: " + response.httpStatusCode);
log.info("Response - httpStatusMessage: " + response.httpStatusMessage);
log.info("Response - httpHeaders: " + response.httpHeaders);
log.info("Response - content: " + response.content);

var content = JSON.parse(response.content);
log.info("Response - content.message: " + content.message);

Invocar un servicio REST con un parámetro XML

El ejemplo siguiente muestra cómo proporcionar un documento XML como parámetro de entrada para un servicio REST. Un objeto de negocio se convierte en una serie XML que actúa como cuerpo de la solicitud REST.

// prepare REST request
var request = new BPMRESTRequest();

request.externalServiceName = "MyExternalService";
request.operationName = "addCustomer";

// set http headers
var headers = {"Content-Type": "application/xml", 
               "Accept": "application/xml"};
request.httpHeaders = headers;

// prepare a custom business object that has been discovered or modeled
tw.local.customer = new tw.object.Customer();
tw.local.customer.name = "Hugo";
tw.local.customer.age = 32;
var date = new TWDate();
tw.local.customer.since = date;

// prepare the input parameter for the REST request
// because the 'content-type' is set to 'application/xml', provide the business object as an XML string.
request.parameters = {"customer": tw.local.customer.toXMLString()};

// invoke the REST request, which returns a BPMRESTResponse instance.
var response = tw.system.invokeREST(request);

// have a look at the response
...
Recuerde: Debe especificar las cabeceras Content-Type y Accept correctamente para que coincidan con el tipo de contenido que proporcione y que aceptará como respuesta. Business Automation Workflowno valida los nombres y valores de los campos de cabecera de solicitud.

Invocar un servicio REST con varios parámetros

En el ejemplo siguiente se muestra cómo podría ampliarse el ejemplo anterior si el servicio REST requiere un parámetro customerId además del parámetro customer.

// prepare REST request
var request = new BPMRESTRequest();

request.externalServiceName = "MyExternalService";
request.operationName = "addCustomer";

// set the http headers
var headers = {"Content-Type": "application/json", 
               "Accept": "application/json"};
request.httpHeaders = headers;

// prepare all input parameters that are needed for the REST request
// the parameters are handed over in the parameters object
request.parameters = {"customer": {"name" : "Hugo", 
                                   "age" : "32", 
                                   "since" : "2016-08-14T22:44:53Z"}, 
                      "customerId": "1234"};

// invoke the REST request, which returns a BPMRESTResponse instance.
var response = tw.system.invokeREST(request);

// have a look at the response
...

Invocar un servicio REST con un parámetro de matriz

El ejemplo siguiente ilustra cómo puede pasarse una matriz de información customer como parámetro de matriz customers.

// prepare REST request
var request = new BPMRESTRequest();

request.externalServiceName = "MyExternalService";
request.operationName = "addCustomers";

// prepare array parameters for the REST request
request.parameters = {"customers": 
                        [{"customer": {"name" : "Hugo", 
                                       "age" : "32", 
                                       "since" : "2016-08-14T22:44:53Z"}}, 
                         {"customer": {"name" : "Max", 
                                       "age" : "23", 
                                       "since" : "2016-08-14T22:44:53Z"}}]};

// invoke the REST request, which returns a BPMRESTResponse instance.
var response = tw.system.invokeREST(request);

// have a look at the response
log.info("Response - httpStatusCode: " + response.httpStatusCode);
log.info("Response - httpStatusMessage: " + response.httpStatusMessage);
log.info("Response - httpHeaders: " + response.httpHeaders);