外部Webサービスの呼出し
「外部Webサービスの呼出し」プロセッサは、プロセッサ構成情報、入力データおよびペイロード構造(ユーザー指定)を使用して、標準のHTTP/HTTPS接続を介してEDQサーバーから接続できる任意のREST Webサービスを呼び出し、このプロセッサの出力属性に対する結果を解析します。これは、スタンドアロン・プロセッサとして使用するか、他のプロセッサと組み合せて使用できます。たとえば、データを取得、挿入または更新するOracle SaaSアプリケーションREST Webサービスを呼び出します。
次の表に、「外部Webサービスの呼出し」プロセッサの構成オプションを示します。
構成 | 説明 |
---|---|
入力属性 |
入力属性は、文字列、数値、文字配列または番号配列です。リクエスト・ペイロードでこれらの属性値を使用するか、または(あるいは同時に) WebサービスURLやHTTPヘッダーでそれらをかわりに使用できます(「拡張」タブから)。 注意: プロセッサを使用するには少なくとも1つの入力属性を指定する必要があります。 |
出力属性 |
出力属性には次の2つのタイプがあります。これらは次のとおりです:
|
オプション |
次のオプションは「オプション」タブから使用できます。
|
リクエスト |
「リクエスト」タブには、リクエスト・ペイロードが含まれます。その値は、「オプション」タブで実行した構成に基づいて大幅に変化します。この項では、次のコンポーネントについて説明します。
|
レスポンス |
「レスポンス」タブは、Webサービス・レスポンスから出力属性を作成する際に役立ちます。これは、属性の作成時に、構成に従ってレスポンス・ペイロードから目的の値を読み取ります。これは、次の3つの属性を含みます。これらは次のとおりです:
属性を作成するには、「レスポンス」タブの左下隅にある「追加」アイコンをクリックします。「属性の追加」ダイアログが表示され、属性名の入力、型(文字列、文字配列、数値または番号配列)の選択、ペイロード変数名の入力、およびレベル(レコードまたはメッセージ)の選択を行うことができます。
注意: 「レベル」オプションは、次の設定を行った場合にのみ有効化され、表示されます
レベルおよびペイロード選択の属性タイプの例は、次のとおりです。
注意: このオプションは、次の設定を行った場合にのみ有効化され、表示されます。
例 -
|
拡張 |
「拡張」タブでは、次のオプションを構成できます。
|
「外部Webサービスの呼出し」プロセッサの拡張機能の一部は、次のとおりです。
-
配列のサポート -
- 入力属性 -
- このプロセッサでは、番号配列と文字配列がサポートされます。
- 選択した入力配列は、
{"arr" : ${array}}
としてリクエスト・ペイロードで使用できます(この配列は、選択した入力属性の名前です)。
- 出力属性 - 「レスポンス」タブで、文字配列と番号配列のタイプの出力属性を作成できます。
例 -
{"arr" : ${array}}, {"arr" : ["a", "c\"d", null]}, {"arr" : [1,2,null, 3]}
。 - 入力属性 -
- HTTPヘッダー情報の追加 - 複数のHTTPヘッダーを定義できます。選択した入力属性を使用して、
${InputAttribute}
という形式でHTTPヘッダー値に置換できます。詳細は、「拡張」タブの項を参照してください。 - 複数の出力属性の追加 - 複数の出力を作成して、レスポンス・ペイロードから値を読み取ることができます。詳細は、「レスポンス」タブの項を参照してください。
-
複数レコードの処理 - Webサービスに対する単一のリクエストで複数のレコードを送信できます。この機能は、1つのリクエストで複数のレコードをサポートするWebサービスでのみ使用できます。
この機能でサポートされる主な使用例は2つあります。これらは次のとおりです:
- ペイロード全体が複数のレコードを含む構造になっている複数レコードのWebサービス。
この使用例を処理するには、「リクエスト」タブの「JSONメッセージ構造」を空のままにする必要があります。したがって、リクエストされたペイロードは、レコードの配列になります。
- 外部JSON構造の複数レコード構造および追加属性。
この使用例を処理するには、「リクエスト」タブの「JSONメッセージ構造」で特別なテンプレートの$records$を使用する必要があります。
例 -JSON Message Structure : { "company":"Oracle", "data_type":"product_info", "records":$records$ } JSON Record Structure : { "product_id":${id}, "product_name":"${name}" }
入力データ{(id=11,name=product1), (id=21,name=product2)}の最終リクエスト・ペイロードは、次のようになります。{ "company":"Oracle", "data_type":"product_info", "records": [{"id":11,"name":"product1"},{"id":21,"name":"product2"}] }
注意:
JSONレコード構造で使用されるIdおよびnameは、プロセッサの選択済入力属性です。複数レコード固有の設定:
- オプション - メソッドPOST、複数レコードのリクエスト/レスポンス = はい、バッチ・カウント(最小値50)
- リクエスト - 「JSONメッセージ構造」および「JSONレコード構造」
- レスポンス -
- Webサービスのレスポンス・ペイロード構造に従って、出力を作成します(詳細は、前述の「レスポンス」の項を参照してください)
- レコード・パス - レスポンス・ペイロードのレコードのパス。レスポンス・ペイロードがレコードの配列の場合、空白のままにできます。
注意:
N:Nリクエストがサポートされますが、この場合、リクエスト・ペイロードで送信されるNレコードに対して、レスポンス・ペイロードにNレコードが含まれる必要があります。
- ペイロード全体が複数のレコードを含む構造になっている複数レコードのWebサービス。
- URLでのパラメータ置換 - 選択した入力属性を使用して、WebサービスURLのパラメータ値を置換できます。
例 -
http:webservice.com?Product_id=${ID}
(IDは選択した入力属性)。
リクエスト・ペイロードでのNull処理
- 属性参照が引用符で囲まれない場合(数値、ブール値または配列値の場合)、属性はJSON値のnullに置換されます。たとえば、
{ "num" : ${numval} }
は、属性のnumval
がnullの場合、置換後に{ "num" : null }
になります。 - 属性参照が引用符で囲まれた値の唯一の内容である場合、引用符は削除され、置換後はJSON値のnullになります。たとえば、
{ "str" : "${strval}" }
は、属性のstrval
がnullの場合、置換後に{ "str" : null }
になります。 - 属性参照が引用符で囲まれた値の唯一の内容ではない場合、置換後の属性は空の文字列になります。たとえば、
{ "str" : "abc${strval}def" }
は、属性のstrval
がnullの場合、置換後に{ "str" : "abcdef" }
になります。
例
- この例では、「外部Webサービスの呼出し」を使用して、キャンパスの会社の詳細をフェッチします。キャンパス名がWebサービスURLの一部として送信され、Webサービスからのレスポンスには、その特定のキャンパス内で営業中の会社の詳細が含まれます。
構成オプションは次のとおりです。
構成オプション 値 属性
選択した入力 - 名前 - キャンパス名
- タイプ - 文字列
オプション
- メソッド - GET
- URL -
http://webservice.com/companyinfo?name=${Campus Name }
- 複数レコードのリクエスト/レスポンス - 無効
リクエスト
JSONペイロード構造 - 無効 レスポンス
レスポンス・ペイロード構造 - { "Company": "Company Name", "Country”: "Country Code", "Departments":[{"id":DepartmentId,"Name":"DepartmentName"} ...] }
出力属性
-
名前 = 会社名
タイプ = 文字列
ペイロード変数 = 会社
-
名前 = 国コード
タイプ = 文字列
ペイロード変数 = 国
-
名前 = 部門リスト
タイプ = 文字配列
ペイロード変数 = Departments.Name
-
名前 = 部門IDリスト
タイプ = 番号配列
ペイロード変数 = Departments.Id
Webサービス・リクエスト/レスポンス(入力あり):
入力属性 URL レスポンス・ペイロード キャンパス名 = Campus1
http://webservice.com/companyinfo?name=Campus1
{ "Company": "Oracle", "Country": "IN", "Departments":[{"id":101,"Name":"Department_1"},{"id":102,"Name":"Department_2"}, {"id":103,"Name":"Department_3"}] }
サマリー・ビュー:
キャンパス名 HTTPレスポンス・コード HTTPレスポンス・メッセージ Webサービスのエラー・メッセージ 会社名 国コード 部門リスト 部門IDリスト Campus1
200
OK
<Nil>
Oracle
IN
{Department_1}{Department_2} {Department_3}
{101}{102}{103}
- この例では、「外部Webサービスの呼出し」を使用して、州の各市町村の詳細を取得します。
構成オプションは次のとおりです。
構成オプション 値 属性 選択した入力:
-
名前 = 国
タイプ = 文字列
-
名前: = 状態
タイプ = 文字列
-
名前 = 参照ID
タイプ = 数値
オプション - メソッド - POST
- URL -
http://webservice.com/cityinfo
- 複数レコードのリクエスト/レスポンス - いいえ
リクエスト JSONペイロード構造 { "CountryName" : "${Country}", "StateName" : "${State}", "RefId" : "${ReferenceId}" }
レスポンス レスポンス・ペイロード構造 - { "CountryName" : "Name", "CountryCode" : "Code", "StateName" : "State Name", "StateData" : {"id":id,"CityDetails":{"Count":count,CityList:["City1","City2", . . . . . ]}} }
出力属性 - 名前 = 市区町村数
タイプ = 数値
ペイロード変数 =
StateData.CityDetails.Count
- 名前 = 市区町村名
タイプ = 文字配列
ペイロード変数 =
StateData.CityDetails.CityList
Webサービス・リクエスト/レスポンス(入力あり):
入力属性 URL レスポンス・ペイロード 国 = Country_1 州 = ST1 参照ID = 121
{ "CountryName" : "Country_1", "StateName" : "ST1", "RefId" : 121 }
{ "CountryName" : "Country_1", "CountryCode" : "CC", "StateName" : "ST1", "StateData" : {"id":221,"CityDetails":{"Count":21,CityList:["City1","City2","City3","City4"]}} }
サマリー・ビュー:
国名 状態 参照ID HTTPレスポンス・コード HTTPレスポンス・メッセージ Webサービスのエラー・メッセージ 市区町村数 市区町村名 Country1 State1 11 200 OK <Nil> 21 {City1}{City2}{City3}{City4} -
- この例では、「外部Webサービスの呼出し」を使用して、製品を使用する顧客のリストを取得します。この構成では、単一のWebサービス呼出しで複数のレコードを送受信できます。単一のリクエストでNレコードが送信されると、Webサービスからの有効なレスポンスにもNレコードが含まれます。
構成オプションは次のとおりです。
構成オプション 値 属性 選択した入力:
-
名前 = 製品名
タイプ = 文字列
-
名前 = コード
タイプ = 数値
オプション - メソッド - POST
- URL -
http://webservice.com/multirecords
- 複数レコードのリクエスト/レスポンス - はい
- バッチ・レコード - 50
リクエスト - JSONメッセージ構造 -
{ "Request Name" : "Product_Cus_List", "RefId" : 101, "Records" : $records$ }
- JSONペイロード構造 -
{ "ProductName" : "${ProductName}", "Product Code" : ${ code } }
レスポンス - レスポンス・ペイロード構造 -
{ "Company" : "Company Name", "MetaData" : "Product Customer List", "Records" : [ {"ProductName" : "P1","Cus_List":["Cus1", "Cus2"]} . . . . . ] }
- レコード・パス - レコード
属性オプション -
名前 = 会社
タイプ = 文字列
ペイロード変数 = 会社
レベル = メッセージ
-
名前 = メタデータ
タイプ = 文字列
ペイロード変数 = メタデータ
レベル = メッセージ
-
名前 = 製品
タイプ = 文字列
ペイロード変数 = productName
レベル = レコード
-
名前 = 顧客
タイプ = 文字配列
ペイロード変数 = Cus_List
レベル = レコード
Webサービス・リクエスト/レスポンス(5:5):
入力属性 リクエスト・ペイロード レスポンス・ペイロード - 製品名 = Prod1 コード = 41
- 製品名 = Prod2 コード = 512
- 製品名 = Prod3 コード = 986
- 製品名 = Prod4 コード = 994
- 製品名 = Prod5 コード = 208
{ "Request Name" : "Product_Cus_List", "RefId" : 101, "Records" : [ { "ProductName " : "Prod1", "Product Code":41}, { "ProductName " : "Prod2", "Product Code":512}, { "ProductName " : "Prod3", "Product Code":986}, { "ProductName " : "Prod4", "Product Code":994}, { "ProductName " : "Prod5", "Product Code":208} ] }
{ "Company": "Comp1", "MetaData" : "Product Customer List", "Records" : [ {"ProductName" : "Prod1","Cus_List":["P1_Cus1", "P1_Cus2", "P1_Cus3"]} , {"ProductName" : "Prod2","Cus_List":["P2_Cus1", "P2_Cus2"]}, {"ProductName" : "Prod3","Cus_List":["P3_Cus1", "P3_Cus2", "P3_Cus3"]}, {"ProductName" : "Prod4","Cus_List":["P4_Cus1", "P4_Cus2", "P4_Cus3"]}, {"ProductName" : "Prod5","Cus_List":["P5_Cus1", "P5_Cus2", "P5_Cus3", "P5_Cus4"]} ] }
サマリー・ビュー:
製品名 コード HTTPレスポンス・コード HTTPレスポンス・メッセージ Webサービスのエラー・メッセージ 会社名 メタデータ 製品 顧客 Prod1 41 200 OK <Nil> Comp1 Product Customer List Prod1 {P1_Cus1}{P1_Cus2}{P1_Cus3}
Prod2 512 200 OK <Nil> Comp1 Product Customer List Prod2 {P2_Cus1}{P2_Cus2}
Prod3 986 200 OK <Nil> Comp1 Product Customer List Prod3 {P3_Cus1}{P3_Cus2}{P3_Cus3}
Prod4 994 200 OK <Nil> Comp1 Product Customer List Prod4 {P4_Cus1}{P4_Cus2}{P4_Cus3}
Prod5 208 200 OK <Nil> Comp1 Product Customer List Prod5 {P5_Cus1}{P5_Cus2}{P5_Cus3}{P5_Cus4}
-