入力パラメーターの受け渡し
JavaScript を使用して REST サービスの各種入力パラメーターを指定する方法を示します。
- 単純型パラメーターを使用した REST サービスの呼び出し
- 複合型 JSON パラメーターを使用した REST サービスの呼び出し
- XML パラメーターを使用した REST サービスの呼び出し
- 複数のパラメーターを使用した REST サービスの呼び出し
- 配列パラメーターを使用した REST サービスの呼び出し
ヒント: JavaScript 関数、オブジェクト、および属性について詳しくは、参照情報トピック JavaScript APIを参照してください。
単純型パラメーターを使用した 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);