Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 受付・アダプタ定義編


付録G.2 設定例2(HTTPアダプタの接続先をリクエストごとに動的に変更する)

〈この項の構成〉

(1) 設定例の概要

この設定例では,「付録G.1 設定例1(HTTPサーバからHTTPクライアントにファイルをダウンロードする)」で作成した定義を変更して,HTTPアダプタの接続先パスをリクエストに応じて動的に変更する処理を行うビジネスプロセスを定義します。

動的に変更するための入力データには,HTTP受付に渡すクエリを利用します。

以降の説明は「付録G.1 設定例1(HTTPサーバからHTTPクライアントにファイルをダウンロードする)」を一とおり実施していることが前提となります。

(a) 環境構成

この設定例で作成する環境の構成を次の図に示します。

図G‒2 設定例1で作成する環境の構成

[図データ]

この設定例では,図中の点線で囲まれた部分の定義の変更手順について説明します。

設定例1と同様に,HTTPアダプタの接続先となるHTTPサーバについては事前に準備していることを前提とします。また,設定例2では,http://hostA:80/test2.bmpにアクセスするとtest2.bmpをダウンロードできるようにHTTPサーバを構成しているものとします。

(b) 設定の流れ

設定の流れを次に示します。

  1. 電文フォーマットの作成

  2. 変数定義の変更

  3. データ変換定義の変更

  4. ビジネスプロセスを実行するための準備

  5. ビジネスプロセスの実行

それぞれの手順について次に説明します。

(2) 電文フォーマットの作成

HTTP受付の要求電文(ボディ)として使用する電文フォーマットを作成します。作成した電文フォーマットにHTTPクライアントから渡されるクエリ情報が格納されます。

電文フォーマットはテンプレートを使用して作成します。作成手順を次に示します。

  1. 電文フォーマットのテンプレートが格納されている次のフォルダを任意の場所にコピーします。

    <サービスプラットフォームのインストールディレクトリ>\CSC\custom-reception\http\schema

  2. コピーしたフォルダ内の「urecp_http_body_detail_request.xsd」をテキストエディタで開きます。

  3. 次のようにファイル名を表す要素(斜体の個所)を追加します。

    <?xml version="1.0" encoding="UTF-8" ?>
    <xsd:schema elementFormDefault="qualified"
     targetNamespace="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/request"
     xmlns:hrc="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/request"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <xsd:complexType name="http-body-requestType">
      <xsd:sequence>
       <!-- User Customize -->
       <xsd:element name="filename" type="xsd:string"/>
      </xsd:sequence>
     </xsd:complexType>
    </xsd:schema>
  4. ファイルを上書き保存します。

    注 urecp_http_body_request.xsdは編集しないでください。

(3) 変数定義の変更

(a) HTTP受付

(2)で作成した電文フォーマットをHTTP受付の定義に反映します。

  1. サービス定義一覧のツリーでHTTP受付(recphttp)をダブルクリックします。

    HTTP受付のユーザ定義受付定義画面が開きます。

  2. [要求電文]−[受付]−[電文フォーマット]の[参照]ボタンをクリックして,次の電文フォーマット定義ファイルを指定します。

    <(2)のコピー先フォルダ>\schema\urecp_http_body_request.xsd

    [図データ]

  3. [ファイル]−[保存]を選択してHTTP受付を保存します。

    保存時に次の確認ダイアログが表示された場合は[OK]ボタンをクリックします。

    [図データ]

(b) ビジネスプロセス

HTTP受付の要求電文(ボディ)の割当変数であるrecphttp_body_requestを,(2)で作成した電文フォーマットに更新します。

  1. ツリービューのサービス定義一覧でビジネスプロセス(bp1)をダブルクリックします。

    ビジネスプロセス定義画面が表示されます。

  2. ビジネスプロセス定義画面のキャンバス上の[変数・相関セット]アイコンをダブルクリックします。

    [変数・相関セット一覧]ダイアログが表示されます。

  3. 変数一覧のツリーからrecphttp_body_requestを選択し,[取込]ボタンをクリックします。

    [電文フォーマットの取込]ダイアログが表示されます。

  4. 次のように指定して[OK]ボタンをクリックします。

    変数名

    サービス/受付

    オペレーション名

    電文種別

    電文フォーマット

    recphttp_body_request

    受付名

    recphttp

    get

    要求電文(ボディ)

    recphttp_body_request.xsd

    [図データ]

  5. [変数・相関セット一覧]ダイアログで[更新]ボタンをクリックします。

    変数が更新されます。

  6. [変数・相関セット一覧]ダイアログで[表示]ボタンをクリックします。

    [変数の表示]ダイアログが表示されます。

    [図データ]

    変数が更新されていることを確認してダイアログを閉じます。

  7. [変数・相関セット一覧]ダイアログで[OK]ボタンをクリックします。

    [変数・相関セット一覧]ダイアログが閉じます。

(4) データ変換定義の変更

変更したHTTP受付の要求電文(ボディ)の変数を利用して,マッピング定義を変更します。

(a) HTTPアダプタボディ要求電文へのマッピング

  1. ビジネスプロセス定義画面でデータ変換アクティビティ(HTTPアダプタボディ要求電文生成)をダブルクリックします。

  2. マッピング定義起動を確認するダイアログが表示されます。

    [図データ]

  3. [OK]ボタンをクリックします。

    マッピング定義画面が表示されます。

    [図データ]

マッピング元にfilename要素が追加されています。設定例1と同様にマッピングは不要です。

(b) HTTPアダプタヘッダ要求電文へのマッピング

  1. ビジネスプロセスの定義画面でデータ変換アクティビティ(HTTPアダプタヘッダ要求電文生成)を右クリックし,[設定]を選択します。

    [データ変換アクティビティ]ダイアログが表示されます。

  2. 変換元変数の[変数]ドロップダウンリストから「recphttp_body_request」を選択して[追加]ボタンをクリックします。

    一覧にrecphttp_body_requestが追加されます。

    [図データ]

  3. [OK]ボタンをクリックします。

    [データ変換アクティビティ]ダイアログが閉じます。

  4. データ変換アクティビティ(HTTPアダプタヘッダ要求電文生成)をダブルクリックします。

    マッピング定義起動を確認するダイアログが表示されます。

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

    [ルート要素選択]ダイアログが表示されます。

    [図データ]

  6. [OK]ボタンをクリックします。

    マッピング定義画面が表示されます。

    マッピング元にはrecphttp_body_request変数が追加されています。

    [図データ]

    このあと,recphttp_body_requestのfilename要素を使って,HTTPアダプタが取得するファイル名をHTTPアダプタ実行環境プロパティファイルの設定値から変更するマッピングを定義します。

  7. constファンクションを配置して,constファンクションをダブルクリックします。

    [定数]ダイアログが表示されます。

  8. 「文字列」を選択して「値」に「/」を入力します。

    [図データ]

  9. [OK]ボタンをクリックします。

    [定数]ダイアログが閉じます。

  10. concatファンクションを配置します。

  11. 次の表を参考にマッピングします。

    マッピングする順番に注意してください。マッピング元およびマッピング先はルート要素からのパスで記載しています。

    順番

    マッピング元

    マッピング先

    1

    constファンクション

    concatファンクション

    2

    /hrc:http-body-request/hrc:parameter/hrc:filename

    concatファンクション

    3

    concatファンクション

    /tns:http-header-request/tns:uri-path

    [図データ]

(5) ビジネスプロセスを実行するための準備

定義したHCSCコンポーネントを配備定義します。操作手順を次に示します。

  1. [ファイル]−[すべて保管]を選択します。

    HTTPアダプタ,HTTP受付,およびビジネスプロセスの定義が保存されます。

  2. ツリービューの[サービス定義一覧]を右クリックして,[複数サービスをサーバに配備して開始]を選択します。

  3. サービス選択ページで配備および開始するサービスを選択します。

  4. [Finish]ボタンをクリックします。

    処理中であることを知らせるメッセージが表示されたあと,結果を知らせるメッセージが表示されます。

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

次のダイアログが表示されていれば処理が正常に完了しています。

[図データ]

失敗した場合は,エラー内容を基にここまで定義した内容に誤りがないか確認してください。

(6) ビジネスプロセスの実行

  1. Webブラウザを起動して次のURLにアクセスします。

    http://hostB/rcp1/get?filename=test2.bmp

    URL中の「hostB」は,hostBのIPv4形式のIPアドレスに名前解決されるものとします。ホスト名以下のパスは「/受付ID/受付のオペレーション名」です。クエリには,定義したfilenameのパラメタを指定します。

ビジネスプロセスが正しく実行されている場合は,HTTP受付からファイルをダウンロードできます。Webブラウザでは次のポップアップが出力されます。

[図データ]

付録G.1(9)(c) HTTP受付ボディ応答電文生成」で,ダウンロードするファイル名を静的に設定しているため,ファイル名は設定例1と同じ「test.bmp」となります。

設定例2の実行結果から,HTTPアダプタ実行環境プロパティファイルで設定した接続先のパスをHTTPアダプタの要求電文(ヘッダ)で上書きしたことを確認できます。

参考

ダウンロードするファイルの違いを確認したい場合は,次のように設定例1のファイルをダウンロードするようにパラメタ値を変更してURLにアクセスしてください。

http://hostB/rcp1/get?filename=test.bmp