入力パラメーターの受け渡し

JavaScript を使用して REST サービスの各種入力パラメーターを指定する方法を示します。

単純型パラメーターを使用した REST サービスの呼び出し

以下の例では、 MyExternalServiceという名前のサービスに対して echo という名前の操作が呼び出され、応答属性がログ・ファイルに出力されます。

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

複合型 JSON パラメーターを使用した REST サービスの呼び出し

以下の例では、JSON オブジェクトを入力パラメーターとして指定する方法を示します。 さらに、応答コンテンツを解析して新規変数に設定しています。

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

XML パラメーターを使用した REST サービスの呼び出し

以下の例では、REST サービスの入力パラメーターとして XML 文書を指定する方法を指定します。 ビジネス・オブジェクトは、REST 要求の本文として機能する XML ストリングに変換されます。

// 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 および Accept を正しく指定する必要があります。これらは応答として受け入れられます。 要求ヘッダー・フィールドの名前と値は、 Business Automation Workflowによって検証されません。

複数のパラメーターを使用した REST サービスの呼び出し

以下の例では、REST サービスで customer パラメーターに加えて customerId パラメーターも必要な場合に、前の例をどのように拡張できるかを示しています。

// 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
...

配列パラメーターを使用した REST サービスの呼び出し

以下の例では、customer 情報の配列を 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);