Pasar parámetros de entrada
- Invocar un servicio REST con un parámetro de tipo simple
- Invocar un servicio REST con un parámetro JSON de tipo complejo
- Invocar un servicio REST con un parámetro XML
- Invocar un servicio REST con varios parámetros
- Invocar un servicio REST con un parámetro de matriz
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
...
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);