5.2.2 InventoryManagementサービスアダプタの定義
InventoryManagementサービスアダプタについて,機能要件,設定値および設定手順を説明します。この項の操作は,管理者または管理者特権で実行してください。
- 〈この項の構成〉
(1) 機能要件
InventoryManagementサービスアダプタは,RESTful Webサービスである在庫管理サービスを呼び出すHTTPアダプタです。次の条件を満たすように作成します。
(a) HTTPメソッド
-
POST
(b) データ形式
-
JSON
(c) URL
-
スキーム:http
-
オーソリティ:localhost:8008
-
パス:/items/inventories
(d) インタフェース
|
名 |
変数名 |
型 |
|
|---|---|---|---|
|
入力 |
商品名 |
itemName |
NCName |
|
個数 |
quantity |
integer |
|
|
出力 |
引当番号 |
reservationNumber |
NCName |
これらの要件を満たしたInventoryManagementサービスアダプタの構成を次の図に示します。
|
|
(2) アダプタの作成
InventoryManagementサービスアダプタを定義するときに設定する値を次の表に示します。
|
属性名 |
属性値 |
|---|---|
|
サービス種別 |
HTTPアダプタ |
|
サービス名 |
InventoryManagement |
|
サービスID |
InvAdp |
|
最大インスタンス数 |
0(初期値) |
|
オペレーション |
reserveItem |
|
通信モデル |
同期(初期値) |
|
システム例外をフォルトに変換する |
チェックしない(初期値) |
|
フォルト名 |
fault_reserveItem |
InventoryManagementサービスアダプタの追加と定義手順を次に示します。
-
Eclipseが終了状態の場合,Eclipseを起動します。
-
ツリービューの[サービス定義一覧]を選択し,右クリックして,[サービスアダプタ追加]を選択します。
サービスアダプタの種別を設定するダイアログが表示されます。
-
ドロップダウンリストから「HTTPアダプタ」を選択して,[次へ]ボタンをクリックします。
HTTPアダプタの追加に必要な情報を入力するダイアログが表示されます。
-
サービス名に「InventoryManagement」を入力します。
-
[終了]ボタンをクリックします。
サービスアダプタ「InventoryManagementサービスアダプタ」が作成され,サービスアダプタ定義画面が表示されます。
-
サービスアダプタ定義(基本)画面で次のように設定します。
-
「サービスID」に「InvAdp」を設定
-
「最大インスタンス数」に「0」(初期値)を設定
-
「オペレーション」の「追加」ボタンをクリックし,オペレーション名に「reserveItem」,「フォルト名」に「fault_reserveItem」を設定して,[OK]ボタンをクリック
-
「システム例外をフォルトに変換する」のチェックを外す(初期値)
-
「通信モデル」に「同期」(初期値)を設定
設定後のサービスアダプタ定義(基本)タブの例を次に示します。
オペレーション情報の通信モデルは「同期」から変更しないでください。
-
-
メニューから[ファイル]−[保管]を選択します。
(3) 電文フォーマットの作成
HTTPアダプタに設定する要求電文と応答電文の電文フォーマット(XMLスキーマ)は,使用するJSONファイルからcscjson2xsdコマンドを実行して作成します。
- 注意
-
ここで作成するJSONファイルは,すべて文字コードUTF-8で作成してください。
(a) 要求電文
要求電文のXMLスキーマの作成について説明します。ここで作成したXMLスキーマ「input_Inv.xsd」は,HTTPアダプタの要求電文に設定します。
-
コマンドで使用するJSONファイルの作成
テキストエディタを起動し,次の内容のJSONファイルを作成します。このファイルの内容は,InventoryManagementサービスアダプタが在庫管理サービスを呼び出す際の電文の一例です。
{"itemName":"PC", "quantity":1}ここでは,ファイル名をinput_Inv.jsonとし,このJSONファイルを任意の場所に格納します。
-
cscjson2xsdコマンドの実行例
この実行例では,入力するJSONファイルの格納場所を「C:\Users\work」,入力するJSONファイルの名称を「input_Inv.json」,出力するXMLスキーマの名称を「input_Inv.xsd」としています。
C:\Users\work>"%COSMINEXUS_HOME%\CSCTE\bin\cscjson2xsd.bat" -in input_Inv.json -out input_Inv.xsd KECT93001-I Execution of the command will now start. (command = cscjson2xsd) KECT93002-I Execution of the command ended normally. (command = cscjson2xsd)
-
作成されたXMLスキーマ(input_Inv.xsd)
コマンド実行後,次の内容のXMLスキーマ「input_Inv.xsd」が作成されます。
実際に作成されるXMLスキーマは,次に示す内容と異なる場合がありますが,スキーマとしての定義内容は同じであるため,問題ありません。
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="csc-object"> <xs:complexType> <xs:sequence> <xs:element ref="itemName"/> <xs:element ref="quantity"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="itemName" type="xs:NCName"/> <xs:element name="quantity" type="xs:integer"/> </xs:schema>
ここで作成したJSONファイル,およびXMLスキーマのサンプルは次のディレクトリに格納されています。
<Service Architectのインストールディレクトリ>\CSCTE\Samples\SOAP1.1_1.2mode\ProductStock_REST\Schema\InventoryManagementAdapter\request
(b) 応答電文
応答電文のXMLスキーマの作成について説明します。ここで作成したXMLスキーマ「output_Inv.xsd」は,HTTPアダプタの応答電文に設定します。
-
コマンドで使用するJSONファイルの作成
テキストエディタを起動し,次の内容のJSONファイルを作成します。このファイルの内容は,在庫管理サービスがInventoryManagementサービスアダプタに応答する際の電文の一例です。
{"reservationNumber": "R00000001"}ここでは,ファイル名をoutput_Inv.jsonとし,このJSONファイルを任意の場所に格納します。
-
cscjson2xsdコマンドの実行例
この実行例では,入力するJSONファイルの格納場所を「C:\Users\work」,入力するJSONファイルの名称を「output_Inv.json」,出力するXMLスキーマの名称を「output_Inv.xsd」としています。
C:\Users\work>"%COSMINEXUS_HOME%\CSCTE\bin\cscjson2xsd.bat" -in output_Inv.json -out output_Inv.xsd KECT93001-I Execution of the command will now start. (command = cscjson2xsd) KECT93002-I Execution of the command ended normally. (command = cscjson2xsd)
-
作成されたXMLスキーマ(output_Inv.xsd)
コマンド実行後,次の内容のXMLスキーマ「output_Inv.xsd」が作成されます。
実際に作成されるXMLスキーマは,次に示す内容と異なる場合がありますが,スキーマとしての定義内容は同じであるため,問題ありません。
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="csc-object"> <xs:complexType> <xs:sequence> <xs:element ref="reservationNumber"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="reservationNumber" type="xs:NCName"/> </xs:schema>
ここで作成したJSONファイル,およびXMLスキーマのサンプルは次のディレクトリに格納されています。
<Service Architectのインストールディレクトリ>\CSCTE\Samples\SOAP1.1_1.2mode\ProductStock_REST\Schema\InventoryManagementAdapter\response
(c) 電文フォーマットの指定
作成したXMLスキーマをInventoryManagementサービスアダプタに設定します。
-
ツリービューの[サービス定義一覧]からInventoryManagementサービスアダプタをダブルクリックします。
サービスアダプタ定義(基本)画面が表示されます。
-
[要求電文]−[サービス部品]−[電文フォーマット]の[参照]ボタンをクリックして,XMLスキーマ「input_Inv.xsd」を指定します。
-
[応答電文]−[サービス部品]−[電文フォーマット]の[参照]ボタンをクリックして,XMLスキーマ「output_Inv.xsd」を指定します。
-
メニューから[ファイル]−[保管]を選択します。
設定後のサービスアダプタ定義(基本)タブの例を次に示します。
(4) 定義ファイルの作成
次に示す定義ファイルを作成します。
-
HTTPアダプタ実行環境プロパティファイル
URLなど,HTTPアダプタの構成情報を設定します。
-
HTTPアダプタ定義ファイル
HTTPアダプタでJSON-XML変換機能を利用することを設定します。
商品手配システムでは,ビジネスプロセスで扱うXML形式の要求電文を,InventoryManagementサービスアダプタでJSON形式に変換して在庫管理サービスに送信します。また,在庫管理サービスから応答されたJSON形式の応答電文をXML形式に変換し,ビジネスプロセスへ応答します。
JSON-XML変換機能の詳細については,マニュアル「サービスプラットフォーム 解説」の「2.16.15 HTTPアダプタのJSON-XML変換機能」を参照してください。
それぞれの定義ファイルについて説明します。
(a) HTTPアダプタ実行環境プロパティファイル
HTTPアダプタ実行環境プロパティファイルの作成手順を次に示します。この操作は,管理者または管理者特権で実行してください。
-
HTTPアダプタ実行環境プロパティファイルのテンプレートファイルをコピー&ペーストします。
- コピー元のテンプレートファイル
-
<Service Architectのインストールディレクトリ>\CSC\custom-adapter\HTTP\config\template\serviceid.properties
- コピー先のディレクトリ
-
<Service Architectのインストールディレクトリ>\CSC\custom-adapter\HTTP\config
-
コピー先のファイル名を,<HTTPアダプタのサービスID>.propertiesとなるように「InvAdp.properties」へ変更します。
-
ファイル「InvAdp.properties」に次のパラメタを追加します。
追加するパラメタ
設定値
説明
adphttp.request.method
POST
POSTメソッドを使用します。
adphttp.request.uri-scheme-authority
http://localhost:8008
スキーム+オーソリティを指定します。
adphttp.request.uri-path
/items/inventories
パス名を指定します。
adphttp.request.header.content-type
application/json
HTTPリクエストヘッダのContent-TypeヘッダのメディアタイプにJSON形式を指定します。
adphttp.request.part.message.binding
raw
パススルーモードとし,要求電文(ボディ)で指定したデータをHTTPリクエストボディに設定します。
記述例を次に示します。
adphttp.request.method=POST adphttp.request.uri-scheme-authority=http://localhost:8008 adphttp.request.uri-path=/items/inventories adphttp.request.header.content-type=application/json adphttp.request.part.message.binding=raw
HTTPアダプタ実行環境プロパティファイルは,HTTPアダプタの開始時に実行環境に反映されます。そのため,HTTPアダプタを開始済みで,HTTPアダプタ実行環境プロパティファイルの内容を変更する場合は,いったんHTTPアダプタを停止する必要があります。
(b) HTTPアダプタ定義ファイル
HTTPアダプタ定義ファイルの編集方法を説明します。
-
[サービスアダプタ定義(詳細)]タブでサービスアダプタ定義(詳細)画面に切り替えて,「独自定義ファイル」の「cscadphttp.properties」を選択します。
「cscadphttp.properties」はHTTPアダプタ定義ファイルです。
-
[編集]ボタンをクリックしてHTTPアダプタ定義ファイルを開き,次のパラメタを追加します。
追加するパラメタ
設定値
説明
adphttp.request.switchover.json-transfer.mode
true
リクエスト処理時にJSON-XML変換を使用します。
adphttp.response.switchover.json-transfer.mode
true
レスポンス処理時にJSON-XML変換を使用します。
記述例を次に示します。
adphttp.request.switchover.json-transfer.mode=true adphttp.response.switchover.json-transfer.mode=true
-
メニューから[ファイル]−[すべて保管]を選択します。