Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 解説


2.15.10 HTTP受付のJSON-XML変換機能

HTTP受付のJSON-XML変換機能とは,HTTP受付でJSON形式の要求電文をXML形式に,またはXML形式の応答電文をJSON形式に変換する機能です。

HTTP受付のJSON-XML変換機能には,XMLスキーマを使用して変換する拡張モードと,XMLスキーマを使用しないで変換する標準モードがあります。どのモードを使って変換するかは,HTTP受付定義ファイルのhttprecp.json-xml-convert.modeプロパティで設定します。HTTP受付定義ファイルの詳細は,マニュアル「サービスプラットフォーム リファレンス」の「3.11.3 HTTP受付定義ファイル」を,標準モードと拡張モードの差異については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「11. JSONデータの変換」を参照してください。

また,使用するモードに合わせて,対応するJSON変換ツールを選択する必要があります。

JSON変換ツールについては,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「14. JSON変換ツールを使用したデータ変換」を参照してください。

〈この項の構成〉

(1) HTTP受付のJSON-XML変換機能の概要

RESTクライアントから送信されたJSON形式の要求電文を,HTTP受付でXML形式の要求電文に変換します。また,ビジネスプロセスから応答されたXML形式の応答電文をJSON形式に変換し,RESTクライアントへ応答します。HTTP受付のJSON-XML変換機能を使用したサービス部品呼び出し要求および応答の流れを次の図に示します。

図2‒146 JSON-XML変換機能を使用したサービス部品呼び出し要求・応答の流れ(HTTP受付)

[図データ]

HTTP受付に設定する電文フォーマット(XMLスキーマ)は,JSON変換ツールで生成します。JSON変換ツールはJSON形式の電文のサンプルを受け取り,JSON-XML変換後のXML形式の電文に適合する電文フォーマットを生成します。JSON-XML変換機能を使用するHTTP受付の開発の流れを次の図に示します。

図2‒147 JSON-XML変換機能を使用するHTTP受付の開発の流れ

[図データ]

HTTP受付の定義の詳細については,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「2.5 HTTP受付の定義」を,JSON変換ツールの詳細については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「14. JSON変換ツールを使用したデータ変換」を参照してください。

(2) HTTP受付のリクエスト処理時のJSON-XML変換機能

HTTP受付のリクエスト処理時のJSON-XML変換のタイミングや設定について説明します。

(a) HTTP受付のリクエスト処理時のJSON-XML変換のタイミング

HTTP受付のリクエスト処理時の,JSON-XML変換のタイミングを次の図に示します。

図2‒148 リクエスト処理時のJSON-XML変換のタイミング(HTTP受付)

[図データ]

図中の1.〜4.について説明します。

  1. HTTP受付がRESTクライアントから要求電文を受信します。

  2. コンポーネント共通UOCでは,RESTクライアントから送信されたJSON形式の要求電文を扱います。

  3. HTTP受付では,コンポーネント共通UOCの呼び出しとデータ変換の間でJSON-XML変換が実行されます。

  4. データ変換では,JSON-XML変換機能で変換されたXML形式の要求電文を扱います。

(b) HTTP受付のリクエスト処理時にJSON-XML変換をする場合の設定

HTTP受付定義ファイルのhttprecp.telegram-auto-convertプロパティが「true」で,要求電文のcontent-type HTTPヘッダがapplication/jsonの場合,またはhttprecp.request.switchover.json-transfer.modeプロパティの値が「true」の場合,HTTP受付のリクエスト処理時にJSON-XML変換が実行されます。要求電文(ヘッダ)では,JSON-XML変換を実行するかどうかの切り替えはできません。プロパティの設定とJSON-XML変換の実行可否を次の表に示します。

表2‒72 リクエスト処理時のJSON-XML変換の実行可否(HTTP受付)

HTTP受付定義ファイルに設定したプロパティの値

JSON-XML変換の実行

−(プロパティを設定していない)

実行されない

false

実行されない

true

実行される

参考

パススルーモードで,HTTPリクエストボディにmsgキーを使用するかどうかの設定に関わらず,JSON-XML変換機能を使用できます。

また,拡張モードでJSON-XML変換を行う場合,HTTP受付定義ファイルのhttprecp.json-xml-convert.modeプロパティに「advanced」を設定し,HTTP受付の要求電文フォーマットに,拡張モードのJSON変換ツールで生成したXMLスキーマファイルを設定する必要があります。

注意事項

JSON変換ツール以外で作成したXMLスキーマファイルを指定した場合,動作は保証されません。

XMLスキーマファイルの設定方法は,HTTP受付の定義内容によって異なります。HTTP受付の定義ごとのXMLスキーマファイルの設定方法を次に示します。

表2‒73  HTTP受付の定義ごとのXMLスキーマファイルの設定方法

HTTP受付の定義

ルーティング定義の設定

XMLスキーマファイルの設定

呼出先固定

HTTP受付の要求電文フォーマットに,XMLスキーマファイルを設定します。

呼出先選択

使用しない

使用する

HTTP受付定義ファイルに,XMLスキーマファイルを設定します。また,HTTP受付ルーティング定義ファイルに,XMLスキーマファイルのファイル名を設定します。

(c) HTTP受付のHTTPリクエストヘッダに関連する処理

JSON-XML変換機能に関連しているHTTP受付のHTTPリクエストヘッダについて説明します。

HTTP受付のHTTPリクエストヘッダの処理の詳細については,「2.15.4 HTTP受付のリクエスト処理」を参照してください。

Content-Typeヘッダ

JSON-XML変換は,HTTPリクエストヘッダのContent-Typeヘッダの値に関わらず実行されます。また,Content-TypeヘッダがHTTPリクエストヘッダに設定されていない場合は,要求電文(ヘッダ)のcontent-type要素は生成されません。

Content-Typeヘッダのcharset属性

HTTPリクエストヘッダのContent-Typeヘッダにcharset属性が設定されていない場合は,要求電文(ヘッダ)のcharset属性にHTTP受付定義ファイルのhttprecp.http.charsetプロパティの値が設定されます。httprecp.http.charsetプロパティが設定されていないときは,要求電文(ヘッダ)のcharset属性に「UTF-8」が設定されます。

HTTPリクエストヘッダおよびHTTP受付定義ファイルのプロパティの設定と要求電文(ヘッダ)の関係を次の表に示します。

表2‒74 要求電文(ヘッダ)のcharset属性の設定(HTTP受付)

HTTPリクエスト

ヘッダの設定

HTTP受付定義ファイル

httprecp.http.charset

プロパティの設定

要求電文(ヘッダ)

charset属性の設定

Content-Type

ヘッダ

charset

属性

HTTPリクエストヘッダのcharset属性の値が設定されます。

×

×

httprecp.http.charsetプロパティの値が設定されます。

×

×

「UTF-8」が設定されます。

×

×

要求電文(ヘッダ)のcharset属性は設定されません。

(凡例)

○:値が設定されている

×:値が設定されていない

(3) HTTP受付のレスポンス処理時のJSON-XML変換機能

HTTP受付のレスポンス処理時のJSON-XML変換のタイミングや設定について説明します。

(a) HTTP受付のレスポンス処理時のJSON-XML変換のタイミング

HTTP受付のレスポンス処理時のJSON-XML変換のタイミングを次の図に示します。

図2‒149 レスポンス処理時のJSON-XML変換のタイミング(HTTP受付)

[図データ]

図中の1.〜4.について説明します。

  1. HTTP受付がビジネスプロセスから応答電文を受信します。

  2. データ変換では,ビジネスプロセスから返却されたXML形式の応答電文を扱います。

  3. HTTP受付では,データ変換とコンポーネント共通UOCの呼び出しの間でJSON-XML変換が実行されます。

  4. コンポーネント共通UOCでは,JSON-XML変換機能で変換されたJSON形式の応答電文を扱います。

(b) HTTP受付のレスポンス処理時にJSON-XML変換をする場合の設定

HTTP受付定義ファイルのhttprecp.telegram-auto-convertプロパティが「true」で,要求電文のaccept HTTPヘッダがapplication/jsonの場合,またはhttprecp.response.switchover.json-transfer.modeプロパティの値が「true」の場合は,HTTP受付のレスポンス処理時にJSON-XML変換が実行されます。応答電文(ヘッダ)のjson-transfer要素の値が「false」の場合は,HTTP受付のレスポンス処理時にJSON-XML変換は実行されません。HTTP受付定義ファイルのプロパティおよび応答電文(ヘッダ)の設定とJSON-XML変換の実行可否を次の表に示します。

表2‒75 レスポンス処理時のJSON-XML変換の実行可否(HTTP受付)

HTTP受付定義ファイルに設定したプロパティの値

応答電文(ヘッダ)

json-transfer要素

JSON-XML変換の実行

−(プロパティを設定していない)

要素なし

実行されない

false

true

false

要素なし

実行されない

false

true

true

設定なし

実行される

false

実行されない

true

実行される

また,拡張モードでJSON-XML変換を行う場合,HTTP受付定義ファイルのhttprecp.json-xml-convert.modeプロパティに「advanced」を設定し,HTTP受付の要求電文フォーマットに,拡張モードのJSON変換ツールで生成したXMLスキーマファイルを設定する必要があります。

注意事項

JSON変換ツール以外で作成したXMLスキーマファイルを指定した場合,動作は保証されません。

XMLスキーマファイルの設定方法は,HTTP受付の定義内容によって異なります。HTTP受付の定義ごとのXMLスキーマファイルの設定方法を次に示します。

表2‒76  HTTP受付の定義ごとのXMLスキーマファイルの設定方法

HTTP受付の定義

ルーティング定義の設定

XMLスキーマファイルの設定

呼出先固定

HTTP受付の応答電文フォーマットに,XMLスキーマファイルを設定します。

呼出先選択

使用しない

使用する

HTTP受付定義ファイルに,XMLスキーマファイルを設定します。また,HTTP受付ルーティング定義ファイルに,XMLスキーマファイルのファイル名を設定します。

(c) HTTP受付のHTTPレスポンスヘッダに関連する処理

JSON-XML変換機能に関連しているHTTP受付のHTTPレスポンスヘッダについて説明します。

HTTP受付のHTTPレスポンスヘッダの処理の詳細については,「2.15.5 HTTP受付のレスポンス処理」を参照してください。

Content-Typeヘッダ

JSON-XML変換は,応答電文(ヘッダ)に設定されているContent-Typeの値に関わらず実行されます。また,応答電文(ヘッダ)にContent-Typeが設定されていない場合は,「text/xml」がHTTPレスポンスヘッダのContent-Typeヘッダに設定されます。

Content-Typeヘッダのcharset属性

応答電文(ヘッダ)のContent-Typeにcharset属性が設定されていない場合は,HTTPレスポンスヘッダに設定されるContent-Typeヘッダのcharset属性に,HTTP受付定義ファイルのhttprecp.http.charsetプロパティの値が設定されます。httprecp.http.charsetプロパティが設定されていないときは,Content-Typeヘッダのcharset属性に「UTF-8」が設定されます。

応答電文(ヘッダ)およびHTTP受付定義ファイルのプロパティの設定とHTTPレスポンスヘッダのcharset属性の関係を次の表に示します。

表2‒77 HTTPレスポンスヘッダのcharset属性の設定(HTTP受付)

応答電文(ヘッダ)

の設定

HTTP受付定義ファイル

httprecp.http.charset

プロパティの設定

HTTPレスポンスヘッダ

charset属性の設定

Content-Type

ヘッダ

charset

属性

応答電文(ヘッダ)のcharset属性の値が設定されます。

×

×

httprecp.http.charsetプロパティの値が設定されます。

×

×

「UTF-8」が設定されます。

×

×

HTTPレスポンスヘッダのcharset属性は設定されません。

(凡例)

○:値が設定されている

×:値が設定されていない

(4) 拡張モードのJSON-XML変換で変換できない要素があった場合の処理

拡張モードのJSON-XML変換で変換できない要素があった場合,次の処理のどちらかを選択できます。

変換できない要素があった場合の処理は,HTTP受付定義ファイルのhttprecp.json-transfer.allow-partial-conversionで設定できます。httprecp.json-transfer.allow-partial-conversionの設定については,マニュアル「サービスプラットフォーム リファレンス」の「3.11.3 HTTP受付定義ファイル」を参照してください。

ただし,変換できた要素がない場合は,設定に関係なくリクエスト処理はエラーとなります。

変換結果に問題がある場合は,メッセージを確認し,変換前のデータを修正して,再度リクエストを実行してください。変換できる要素だけを対象にして,部分的に変換を行ってリクエスト処理を続行させるときは,メッセージ「KDEC00065-W」を出力します。リクエスト処理をエラーにするときは,メッセージ「KDEC00060-E」を出力します。メッセージの引数「error message」に,変換に失敗したすべての要素と,それぞれの発生原因が出力されます。