Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム ファーストステップガイド


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サービスアダプタの構成を次の図に示します。

図5‒3 InventoryManagementサービスアダプタの構成

[図データ]

(2) アダプタの作成

InventoryManagementサービスアダプタを定義するときに設定する値を次の表に示します。

表5‒1 InventoryManagementサービスアダプタを定義するときに設定する値

属性名

属性値

サービス種別

HTTPアダプタ

サービス名

InventoryManagement

サービスID

InvAdp

最大インスタンス数

0(初期値)

オペレーション

reserveItem

通信モデル

同期(初期値)

システム例外をフォルトに変換する

チェックしない(初期値)

フォルト名

fault_reserveItem

InventoryManagementサービスアダプタの追加と定義手順を次に示します。

  1. Eclipseが終了状態の場合,Eclipseを起動します。

  2. ツリービューの[サービス定義一覧]を選択し,右クリックして,[サービスアダプタ追加]を選択します。

    サービスアダプタの種別を設定するダイアログが表示されます。

  3. ドロップダウンリストから「HTTPアダプタ」を選択して,[次へ]ボタンをクリックします。

    HTTPアダプタの追加に必要な情報を入力するダイアログが表示されます。

  4. サービス名に「InventoryManagement」を入力します。

  5. [終了]ボタンをクリックします。

    サービスアダプタ「InventoryManagementサービスアダプタ」が作成され,サービスアダプタ定義画面が表示されます。

  6. サービスアダプタ定義(基本)画面で次のように設定します。

    • 「サービスID」に「InvAdp」を設定

    • 「最大インスタンス数」に「0」(初期値)を設定

    • 「オペレーション」の「追加」ボタンをクリックし,オペレーション名に「reserveItem」,「フォルト名」に「fault_reserveItem」を設定して,[OK]ボタンをクリック

    • 「システム例外をフォルトに変換する」のチェックを外す(初期値)

    • 「通信モデル」に「同期」(初期値)を設定

    設定後のサービスアダプタ定義(基本)タブの例を次に示します。

    [図データ]

    オペレーション情報の通信モデルは「同期」から変更しないでください。

  7. メニューから[ファイル]−[保管]を選択します。

(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サービスアダプタに設定します。

  1. ツリービューの[サービス定義一覧]からInventoryManagementサービスアダプタをダブルクリックします。

    サービスアダプタ定義(基本)画面が表示されます。

  2. [要求電文]−[サービス部品]−[電文フォーマット]の[参照]ボタンをクリックして,XMLスキーマ「input_Inv.xsd」を指定します。

  3. [応答電文]−[サービス部品]−[電文フォーマット]の[参照]ボタンをクリックして,XMLスキーマ「output_Inv.xsd」を指定します。

  4. メニューから[ファイル]−[保管]を選択します。

設定後のサービスアダプタ定義(基本)タブの例を次に示します。

[図データ]

(4) 定義ファイルの作成

次に示す定義ファイルを作成します。

それぞれの定義ファイルについて説明します。

(a) HTTPアダプタ実行環境プロパティファイル

HTTPアダプタ実行環境プロパティファイルの作成手順を次に示します。この操作は,管理者または管理者特権で実行してください。

  1. HTTPアダプタ実行環境プロパティファイルのテンプレートファイルをコピー&ペーストします。

    コピー元のテンプレートファイル

    <Service Architectのインストールディレクトリ>\CSC\custom-adapter\HTTP\config\template\serviceid.properties

    コピー先のディレクトリ

    <Service Architectのインストールディレクトリ>\CSC\custom-adapter\HTTP\config

  2. コピー先のファイル名を,<HTTPアダプタのサービスID>.propertiesとなるように「InvAdp.properties」へ変更します。

  3. ファイル「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アダプタ定義ファイルの編集方法を説明します。

  1. [サービスアダプタ定義(詳細)]タブでサービスアダプタ定義(詳細)画面に切り替えて,「独自定義ファイル」の「cscadphttp.properties」を選択します。

    「cscadphttp.properties」はHTTPアダプタ定義ファイルです。

  2. [編集]ボタンをクリックして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
  3. メニューから[ファイル]−[すべて保管]を選択します。