付録C.3 定義してみましょう

それでは,実際に用意されているサンプルプログラムを使って,サービスアダプタ,ビジネスプロセスなどを定義してみましょう。

各サンプルプログラムの目的を次に示します。

(1)HelloServiceAdapterサンプルプログラム
サービスアダプタの定義を習得することを目的にしています。
(2)HelloBusinessProcessサンプルプログラム
ビジネスプロセスの定義を習得することを目的にしています。
(3)商品手配サンプルプログラム
実際の業務に近い内容での定義を習得することを目的にしています。
<この項の構成>
(1) HelloServiceAdapterサンプルプログラム
(2) HelloBusinessProcessサンプルプログラム
(3) 商品手配のサンプルプログラム

(1) HelloServiceAdapterサンプルプログラム

サービスリクエスタからサービスアダプタを呼び出す,HelloServiceAdapterサンプルプログラムを使って,サービスアダプタを定義してみましょう。

HelloServiceAdapterサンプルプログラムの概要を図C-5に,HelloServiceAdapterサンプルプログラムのコンポーネントを表C-1に示します。

図C-5 HelloServiceAdapterサンプルプログラムの概要

[図データ]

表C-1 HelloServiceAdapterサンプルプログラムのコンポーネント

コンポーネント形態内容
サービスリクエスタHTML/サーブレット入力画面を表示しサービスアダプタを呼び出します。Helloサービスを呼び出した結果をHelloサービスアダプタから受け取り,画面に表示します。
HelloサービスアダプタサービスアダプタHelloサービスを呼び出すためのサービスアダプタです。Helloサービスを呼び出して,サービスリクエスタに応答を返します。
HelloサービスWebサービス入力された文字列を編集して返します。

説明

  1. サービスリクエスタから文字列を入力します。
  2. サービスアダプタから,Webサービスが呼び出されます。
  3. Webサービスから編集された文字列が戻り値として取得されます。
  4. 文字列が画面に表示されます。

HelloServiceAdapterサンプルプログラムでは,次に示すコンポーネントを定義します。

(a)Helloサービスアダプタ
(a) Helloサービスアダプタを定義してみましょう

サービスアダプタは,呼び出すサービス部品に合わせて作成します。HelloServiceAdapterサンプルプログラムを使って,Helloサービスアダプタを定義するときに設定する値を次の表に示します。

表C-2 Helloサービスアダプタを定義するときに設定する値

項目名設定する値説明
サービス部品の種別Webサービス呼び出すサービス部品の種別に合わせて設定したサービスアダプタの種別です。このサンプルプログラムのサービス部品は,Webサービスのためサービスアダプタの種別もWebサービスを設定します。
サービス名Helloサービスアダプタアダプタの名称を指定します。
WSDLファイルHelloService.wsdlWSDLには,Webサービスがどのような機能を持ち,それを利用するためにはどのような要求をすればよいのか,などを記述する方法が定義されています。Helloサービスアダプタは,Helloサービス用WSDL(HelloService.wsdl)を使用して作成します。
Portの指定HelloHelloサービスアダプタのポートを指定します。
サービスIDHelAdpHelloサービスアダプタのIDを指定します。
クライアント定義ファイルc4webcl.properties
(次の内容が設定されています。「c4web.logger.log_file_prefix=HelloService」)
クライアント定義ファイルは,クライアント側の動作を制御するファイルで,「c4webcl.properties 」というファイル名称で利用者が作成します。
このサンプルプログラムでは,トレースファイ
ル,およびアプリケーションログのプレフィクスとして,「HelloService」を設定するクライアント定義ファイルが用意されています。
注 各ファイルの格納場所については,「付録C.4(a) HelloServiceAdapterサンプルプログラムの構成」を参照してください。

 

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

  1. ツリービューのサービス定義一覧で右クリックして「サービスアダプタ追加」を選択します。

    [図データ]

    追加するサービスアダプタから利用するサービス種別を設定するダイアログが表示されます。
  2. ドロップダウンリストから「Webサービス」を選択して,[次へ]ボタンをクリックします。

    [図データ]

    サービスアダプタの追加に必要な情報を入力するダイアログが表示されます。
  3. サービス名に「Helloサービスアダプタ」を,WSDLファイル名には「HelloService.wsdl」を入力して,[次へ]ボタンをクリックします。

    [図データ]

    ポートを指定するダイアログが表示されます。
  4. ドロップダウンリストでポート「Hello」を選択して,[終了]ボタンをクリックします。

    [図データ]

    アダプタ「Helloサービスアダプタ」が作成され,サービスアダプタ定義画面が表示されます。
  5. サービスアダプタ定義画面の基本画面で,サービスIDを「HelAdp」に変更します。

    [図データ]

  6. サービスアダプタ定義画面の詳細画面で,[…]ボタンをクリックして,クライアント定義ファイル「c4webcl.properties」を指定します。
    HelloServiceAdapterサンプルプログラムでは,次の場所にあります。
    <Cosminexusインストールディレクトリ>¥CSCTE¥Samples¥HelloServiceAdapter¥Service¥HelloService¥c4webcl.properties

    [図データ]

  7. [ファイル]-[保管]を選択します。
(b) Helloサービスアダプタの検証とパッケージングをしてみましょう

作成したHelloサービスアダプタは,正しいかどうか検証してから,パッケージングします。検証とパッケージングの手順を次に示します。

  1. ツリービューのサービス定義一覧でHelloサービスアダプタを選択し,右クリックして,「検証」を選択します。

    [図データ]

    検証結果がコンソールビューに表示されます。エラーが発生した場合は,メッセージに従って修正します。
  2. ツリービューのサービス定義一覧で,「Helloサービスアダプタ」を選択し,右クリックして,「パッケージング」を選択します。

    [図データ]

    メッセージダイアログが表示されます。
  3. 次のどちらかの操作をします。
    パッケージングが成功した場合は,[OK]ボタンをクリックします。
    パッケージングが失敗した場合は,ダイアログのメッセージに従って対処し,パッケージングを再実行します。
    これでパッケージングが終了しました。

(2) HelloBusinessProcessサンプルプログラム

ビジネスプロセスからサービスアダプタを呼び出す,HelloBusinessProcessサンプルプログラムを使って,ビジネスプロセスを定義してみましょう。

HelloBusinessProcessサンプルプログラムの概要を図C-6に,HelloBusinessProcessサンプルプログラムのコンポーネントを表C-3に示します。

図C-6 HelloBusinessProcessサンプルプログラムの概要

[図データ]

表C-3 HelloBusinessProcessサンプルプログラムのコンポーネント

コンポーネント形態内容
サービスリクエスタHTML/サーブレット入力画面を表示しビジネスプロセスを呼び出します。Helloサービスを呼び出したビジネスプロセスの結果も画面に表示します。
Helloビジネスプロセスサービスアダプタ/ビジネスプロセスサービスリクエスタからの要求を受け取り,Webサービスを呼び出してサービスリクエスタに応答を返します。
HelloサービスWebサービス入力された文字列を編集して返します。

説明

  1. サービスリクエスタから文字列を入力します。
  2. ビジネスプロセスからサービスアダプタを介して,Webサービスが呼び出されます。
  3. Webサービスから編集された文字列が戻り値として取得されます。
  4. 戻り値の文字列が編集されます。
  5. ビジネスプロセスで編集された文字列が戻り値として取得され,画面に表示されます。

HelloBusinessProcessサンプルプログラムでは,次に示すコンポーネントを定義します。

(a)Helloビジネスプロセス

Helloサービスアダプタの定義については,「付録C.3(1)(a) Helloサービスアダプタを定義してみましょう」を参照してください。

(a) Helloビジネスプロセスを定義してみましょう

ビジネスプロセスは,どのようなプロセスで処理するかによって,定義する内容が異なります。HelloBusinessProcessサンプルプログラムのHelloビジネスプロセスでは,次のようなプロセスで処理します。

  1. Helloビジネスプロセスは,サービスリクエスタから入力された文字列を受け取ります。
  2. Helloサービスアダプタを介してHelloサービスを呼び出します。
  3. Helloサービスを呼び出した結果,取得した文字列に,「△and△Business△Process」(△は半角空白)という文字列を連結します。
    出力文字列: <Helloサービスの出力文字列>△and△Business△Process
  4. サービスリクエスタに文字を連結した結果を返し表示します。

 

HelloBusinessProcessサンプルプログラムのビジネスプロセスは,次の流れで定義します。

  1. 新規ビジネスプロセスを追加します
  2. 変数を設定します
  3. アクティビティを配置します
  4. アクティビティを定義します
  5. ビジネスプロセスの定義を終了します
    注※ アクティビティは,ビジネスプロセスの処理の流れを定義する部品です。

 

HelloBusinessProcessサンプルプログラムを使って,ビジネスプロセスを追加するときに設定する値を次の表に示します。

表C-4 ビジネスプロセスを追加するときに設定する値

項目名設定する値説明
ビジネスプロセス名Helloビジネスプロセスビジネスプロセスの名称を指定します。
ステータスの永続化yesデータベースに記録を残すかどうかを指定します。記録をとると,プロセスの進捗状況などを把握できます。このサンプルプログラムでは,データベースに記録を残すため,「yes」を選択します。
BPELファイル インポートするチェックを外します上流工程でツールを使って作成したBPELをインポートする場合は,チェックを入れます。インポートすると,ビジネスプロセスに必要なアクティビティが自動的に表示されます。このサンプルプログラムでは,インポートしないので,チェックを外します。
サービスIDHelBPビジネスプロセスのIDを指定します。

Helloビジネスプロセスの追加手順を次に示します。

  1. ツリービューのサービス定義一覧で,右クリックして[ビジネスプロセス追加]を選択します。
    ビジネスプロセス定義を追加するためのダイアログが表示されます。

    [図データ]

  2. [ビジネスプロセス名]に「Helloビジネスプロセス」を入力し,[ステータスの永続化]で「yes」を選択します。[BPELファイル]の[インポートする]はチェックを外します。

    [図データ]

  3. [終了]ボタンをクリックします。
    ビジネスプロセス「Helloビジネスプロセス」が作成され,ビジネスプロセス定義画面が表示されます。
  4. ビジネスプロセス定義画面のプロパティービューで,サービスIDを「HelBP」に変更します。

    [図データ]

 

ビジネスプロセスでは,アクティビティを定義するときに変数を使用します。そのため,使用する変数をあらかじめ設定してから,アクティビティを定義します。Helloビジネスプロセスで使用する変数を次の表に示します。

表C-5 Helloビジネスプロセスで使用する変数

変数名種別xsdファイル
入力データmessageType入力データ.xsd
出力データmessageType出力データ.xsd

Helloビジネスプロセスで使用する変数の設定手順を次に示します。

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

    [図データ]

    [変数・相関セット一覧]ダイアログが表示されます。
  2. [変数一覧]を選択します。変数名に「入力データ」を入力し,種別は,ドロップダウンリストから「messageType」を選択します。

    [図データ]

  3. [取込]ボタンをクリックします。
    [電文フォーマットの取込]ダイアログが表示されます。
  4. [サービス名]を選択して,ドロップダウンリストから「Helloサービスアダプタ」を選択します。
  5. [オペレーション名]はドロップダウンリストから「getHelloString」を,[電文種別]はドロップダウンリストから「要求電文」を選択します。[電文フォーマット]に「入力データ」を入力します。

    [図データ]

  6. [OK]ボタンをクリックします。
    [電文フォーマットの取込]ダイアログが閉じます。
  7. [変数・相関セット一覧]ダイアログの[追加]ボタンをクリックします。
    [変数一覧]に,「入力データ」が追加されます。
  8. [変数・相関セット一覧]ダイアログの[変数一覧]を選択します。変数名に「出力データ」を入力し,種別は,ドロップダウンリストから「messageType」を選択します。
  9. [取込]ボタンをクリックします。
    [電文フォーマットの取込]ダイアログが表示されます。
  10. [サービス名]を選択して,ドロップダウンリストから「Helloサービスアダプタ」を選択します。
  11. オペレーション名はドロップダウンリストから「getHelloString」を,電文種別はドロップダウンリストから「応答電文」を選択します。電文フォーマットに「出力データ」を入力します。

    [図データ]

  12. [OK]ボタンをクリックします。
    [電文フォーマットの取込]ダイアログが閉じます。
  13. [変数・相関セット一覧]ダイアログの[追加]ボタンをクリックします。
    [変数一覧]に,「出力データ」が追加されます。
  14. [変数・相関セット一覧]ダイアログの[OK]ボタンをクリックします。
    これで変数が設定できました。

    [図データ]

 

HelloBusinessProcessサンプルプログラムのビジネスプロセスに必要なアクティビティを次の表に示します。

表C-6 HelloBusinessProcessサンプルプログラムのビジネスプロセスに必要なアクティビティ

設定する値説明
受付アクティビティサービスリクエスタからの応答を受け付けます。
サービス呼出アクティビティHelloサービスを呼び出します。
データ変換アクティビティ文字列を編集します。
応答アクティビティ処理結果をサービスリクエスタへ返します。

アクティビティの配置手順を次に示します。

  1. パレットから次のアクティビティをクリックし,キャンバス上の適当な位置にクリックして配置します。
    • 受付
    • サービス呼出
    • データ変換
    • 応答
  2. アクティビティを連結するために,パレットの[コネクション]をクリックします。
  3. 連結元である開始アクティビティをクリックします。
  4. 連結先である受付アクティビティをクリックします。
    これで開始アクティビティと受付アクティビティを連結できました。
  5. 受付アクティビティから終了アクティビティまでを,手順2.~4.と同様の操作で一つづつアクティビティを連結します。

    [図データ]

 

キャンバスへ配置した各アクティビティの内容を定義します。

 

<受付アクティビティ>

  1. キャンバスの受付アクティビティをダブルクリックします。
    [受付アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名受付アクティビティの名称を指定します。
    オペレーション名getHelloStringサービスリクエスタからサービス部品を呼び出すときに利用するオペレーションの名称を指定します。
    割当変数入力データビジネスプロセスの要求電文に割り当てる変数をドロップダウンリストから選択します。
    割当相関セット群なし相関セットグループをアクティビティに割り当てる場合に設定します。このサンプルプログラムでは使用しないため,設定しません。
    通信モデル同期オペレーションの通信モデルを指定します。このサンプルプログラムで使用するHelloサービスは,Webサービスのため,「同期」を設定します。
    インスタンス生成yes要求電文を受け付けたときに,プロセスを初期化するかどうかを選択します。このサンプルプログラムでは,「yes」を設定します。
  3. [OK]ボタンをクリックします。

 

<サービス呼出アクティビティ>

  1. キャンバスのサービス呼出アクティビティをダブルクリックします。
    [サービス呼出アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名Helloサービスアクティビティの名称を入力します。
    サービス名Helloサービスアダプタ要求電文を送信して呼び出すサービス部品の名称をドロップダウンリストから選択します。
    オペレーション名getHelloString[サービス名]で指定したサービス部品(Helloサービスアダプタ)のオペレーションのうち,実際に呼び出すオペレーションの名称を指定します。
    通信モデル同期[オペレーション名]で指定したオペレーションに設定されている通信モデルが表示されます。
    要求電文用割当変数入力データ在庫管理サービスを呼び出す要求電文に割り当てる変数をドロップダウンリストから選択します。
    応答電文用割当変数出力データ同期オペレ-ションから受け取る応答電文に割り当てる変数をドロップダウンリストから選択します。
    割当相関セット群なし相関セットグループをアクティビティに割り当てる場合に設定します。このサンプルプログラムでは使用しないため,設定しません。
  3. [OK]ボタンをクリックします。

 

<データ変換アクティビティ>

  1. キャンバスのデータ変換アクティビティをダブルクリックします。
    [データ変換アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名出力文字列編集アクティビティの名称を指定します。
    変数(変換元)出力データデータの変換元になる変数をドロップダウンリストから選択し,[追加]ボタンをクリックします。
    変数(変換先)出力データデータの変換先になる変数をドロップダウンリストから選択します。
    データ変換定義出力文字列編集データ変換定義ファイルに仮想的に付ける名称を指定します。
  3. [OK]ボタンをクリックします。
  4. キャンバスのデータ変換アクティビティを右クリックして,[マッピング定義起動]を選択します。
    [ルート要素選択]ダイアログが表示されます。
  5. [変換元]のスキーマ論理名「出力データ」のルート要素として,ドロップダウンリストから「hls:getHelloStringResponse」を選択し,[変換先]のスキーマ論理名「出力データ」のルート要素として,ドロップダウンリストから「hls:getHelloStringResponse」を選択します。

    [図データ]

  6. [OK]ボタンをクリックします。
    データ変換定義画面が表示されます。

    [図データ]

  7. データ変換定義画面のパレットから[concat]をクリックし,キャンバスの変換元と変換先の間にクリックして配置します。
  8. データ変換定義画面のパレットから[const]をクリックし,キャンバスの変換元と変換先の間にクリックして配置します。
  9. データ変換定義画面のパレットから[マッピング]を選択します。
  10. マッピング元となる変換元ノードのノードアダプタをクリックします。
  11. マッピング先となる[concat]をクリックします。
    マッピング線が設定されます。
  12. 手順11.~12.と同様の操作で,[concat]から変換先ノードのノードアダプタにマッピング線を設定します。
    [const]から[concat]へのマッピング線を先に設定すると,出力文字列の順序が変わってしまうため,注意してください。
  13. 手順11.~12.と同様の操作で,[const]から[concat]にマッピング線を設定します。

    [図データ]

  14. データ変換定義画面のパレットから[選択]をクリックします。
  15. [const]をダブルクリックします。
    [定数]ダイアログが表示されます。
  16. [文字列]を選択して,「△and△Business△Process」を入力します(△は半角の空白です)。

    [図データ]

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

 

<応答アクティビティ>

  1. キャンバスの応答アクティビティをダブルクリックします。
    [応答アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名応答アクティビティの名称を指定します。
    オペレーション名getHelloString対応する受付アクティビティに指定したオペレーションの名称を指定します。
    割当変数出力データ応答電文に割り当てる変数をドロップダウンリストから選択します。
    割当相関セット群なし相関セットグループをアクティビティに割り当てる場合に設定します。このサンプルプログラムでは使用しないため,設定しません。
    フォルト名なしフォルト処理として応答アクティビティを定義して,サービスリクエスタにフォルトが発生したことを示す応答電文を送信する場合のフォルトの名称を指定します。このサンプルプログラムではフォルト処理を使用しないため,設定しません。
  3. [OK]ボタンをクリックします。

 

すべてのアクティビティを定義したら,[ファイル]-[保管]を選択して,ビジネスプロセスの定義を終了します。

(b) Helloビジネスプロセスの検証とパッケージングをしてみましょう

作成したビジネスプロセスは,正しいかどうか検証してから,パッケージングします。検証とパッケージングの方法は,Helloサービスアダプタと同じです。検証とパッケージングの詳細については,「付録C.3(1)(b) Helloサービスアダプタの検証とパッケージングをしてみましょう」を参照してください。

(3) 商品手配のサンプルプログラム

実際の業務に近い内容のビジネスプロセスからサービスアダプタを呼び出す,商品手配サンプルプログラムを使って,ビジネスプロセスを定義してみましょう。

ここで紹介する商品手配のサンプルプログラムは,店舗の担当者が業務システムを使って商品の手配をする場合に,在庫引当や配送手配の処理をすることを想定しています。商品手配サンプルプログラムの概要を図C-7に,商品手配サンプルプログラムのコンポーネントを表C-7に示します。

図C-7 商品手配サンプルプログラムの概要

[図データ]

表C-7 商品手配サンプルプログラムのコンポーネント

コンポーネント形態内容
サービスリクエスタHTML/サーブレット/JSP入力画面を表示しビジネスプロセスを呼び出します。サービスを呼び出したビジネスプロセスの結果も画面に表示します。
商品手配/在庫管理・配送受付サービスアダプタ/ビジネスプロセスサービスリクエスタからの要求を受け取り,在庫管理サービスや配送受付サービスを呼び出して,サービスリクエスタに応答を返します。
在庫管理サービスWebサービス商品の在庫を引き当て,引当番号を返します。
配送受付サービスWebサービス配送を手配し,配送番号を返します。

説明

  1. サービスリクエスタから商品名および個数を入力すると,商品手配ビジネスプロセスが呼び出されます。
  2. ビジネスプロセスから,在庫管理サービスアダプタを介して在庫管理サービスが呼び出されます。
  3. ビジネスプロセスには,在庫管理サービスで在庫を引き当てた結果が,引当番号として取得されます。
  4. 在庫管理サービスの呼び出し結果から,ビジネスプロセスでは,在庫がない場合は「*」(在庫無し)をサービスリクエスタに返します。
  5. 在庫がある場合は,ビジネスプロセスから配送受付サービスアダプタを介して配送受付サービスが呼び出されます。
  6. ビジネスプロセスには,配送受付サービスで配送手配した結果が,配送番号として取得されます。
  7. 配送受付サービスの呼び出し結果から,配送番号をサービスリクエスタに返します。

商品手配サンプルプログラムでは,次に示す三つのコンポーネントを定義します。

(a)在庫管理サービスアダプタ
(b)配送受付サービスアダプタ
(c)商品手配ビジネスプロセス
(a) 在庫管理サービスアダプタを定義してみましょう

在庫管理サービスアダプタは,在庫管理サービス用WSDL(InventoryManagementService.wsdl)を使用して定義します。在庫管理サービスアダプタを定義するときに設定する値を次の表に示します。

表C-8 在庫管理サービスアダプタを定義するときに設定する値

項目名設定する値説明
サービス部品の種別Webサービス呼び出すサービス部品の種別に合わせて設定したサービスアダプタの種別です。このサンプルプログラムのサービス部品は,Webサービスのためサービスアダプタの種別もWebサービスを設定します。
サービス名在庫管理アダプタの名称を指定します。
WSDLファイルInventoryManagementService.wsdlWSDLには,Webサービスがどのような機能を持ち,それを利用するためにはどのような要求をすればよいのか,などを記述する方法が定義されています。在庫管理サービスアダプタは,在庫管理サービス用WSDL(InventoryManagementService.wsdl)を使用して作成します。
Portの指定InventoryManager在庫管理サービスアダプタのポートを指定します。
サービスIDInvAdp在庫管理サービスアダプタのIDを指定します。
クライアント定義ファイルc4webcl.properties
(次の内容が設定されています。「c4web.logger.log_file_prefix=InventoryManagementService」)
クライアント定義ファイルは,クライアント側の動作を制御するファイルで,「c4webcl.properties 」というファイル名称で利用者が作成します。
このサンプルプログラムでは,トレースファイ
ル,およびアプリケーションログのプレフィクスとして,「InventoryManagementService」を設定する,クライアント定義ファイルが用意されています。
注 各ファイルの格納場所については,「付録C.4(c) 商品手配サンプルプログラムの構成」を参照してください。

 

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

  1. ツリービューのサービス定義一覧で右クリックして「サービスアダプタ追加」を選択します。
    追加するサービスアダプタから利用するサービス種別を設定するダイアログが表示されます。
  2. ドロップダウンリストから「Webサービス」を選択して,[次へ]ボタンをクリックします。
    サービスアダプタの追加に必要な情報を入力するダイアログが表示されます。
  3. サービス名に「在庫管理」を,WSDLファイルには「InventoryManagementService.wsdl」を入力して,[次へ]ボタンをクリックします。

    [図データ]

    ポートを指定するダイアログが表示されます。
  4. ドロップダウンリストでポート「InventoryManager」を選択して,[終了]ボタンをクリックします。

    [図データ]

    アダプタ「在庫管理サービスアダプタ」が作成され,サービスアダプタ定義画面が表示されます。
  5. サービスアダプタ定義画面の基本画面で,サービスIDを「InvAdp」に変更します。

    [図データ]

  6. サービスアダプタ定義画面の詳細画面で,[…]ボタンをクリックして,クライアント定義ファイル「c4webcl.properties」を指定します。
    商品手配サンプルプログラムでは,次の場所にあります。
    <Cosminexusインストールディレクトリ>¥CSCTE¥Samples¥商品手配¥Service¥InventoryManagementService¥c4webcl.properties
  7. [ファイル]-[保管]を選択します。
(b) 配送受付サービスアダプタを定義してみましょう

配送受付サービスアダプタは,配送受付サービス用WSDL(DeliveryService.wsdl)を使用して定義します。配送受付サービスアダプタを定義するときに設定する値を次の表に示します。

表C-9 配送受付サービスアダプタを定義するときに設定する値

項目名設定する値説明
サービス部品の種別Webサービス呼び出すサービス部品の種別に合わせて設定したサービスアダプタの種別です。このサンプルプログラムのサービス部品は,Webサービスのためサービスアダプタの種別もWebサービスを設定します。
サービス名配送受付アダプタの名称を指定します。
WSDLファイルDeliveryService.wsdlWSDLには,Webサービスがどのような機能を持ち,それを利用するためにはどのような要求をすればよいのか,などを記述する方法が定義されています。配送受付サービスアダプタは,配送受付サービス用WSDL(DeliveryService.wsdl)を使用して作成します。
Portの指定Delivery配送受付サービスアダプタのポートを指定します。
サービスIDDelAdp配送受付サービスアダプタのIDを指定します。
クライアント定義ファイルc4webcl.properties
(次の内容が設定されています。「c4web.logger.log_file_prefix=DeliveryService」)
クライアント定義ファイルは,クライアント側の動作を制御するファイルで,「c4webcl.properties 」というファイル名称で利用者が作成します。
このサンプルプログラムでは,トレースファイ
ル,およびアプリケーションログのプレフィクスとして,「DeliveryService」を設定する,クライアント定義ファイルが用意されています。
注 各ファイルの格納場所については,「付録C.4(c) 商品手配サンプルプログラムの構成」を参照してください。

 

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

  1. ツリービューのサービス定義一覧で右クリックして「サービスアダプタ追加」を選択します。
    追加するサービスアダプタから利用するサービス種別を設定するダイアログが表示されます。
  2. ドロップダウンリストから「Webサービス」を選択して,[次へ]ボタンをクリックします。
    サービスアダプタの追加に必要な情報を入力するダイアログが表示されます。
  3. サービス名に「配送受付」を,WSDLファイルには「DeliveryService.wsdl」を入力して,[次へ]ボタンをクリックします。
    ポートを指定するダイアログが表示されます。

    [図データ]

  4. ドロップダウンリストでポート「Delivery」を選択して,[終了]ボタンをクリックします。

    [図データ]

    アダプタ「配送受付サービスアダプタ」が作成され,サービスアダプタ定義画面が表示されます。
  5. サービスアダプタ定義画面の基本画面で,サービスIDを「DelAdp」に変更します。

    [図データ]

  6. サービスアダプタ定義画面の詳細画面で,[…]ボタンをクリックして,クライアント定義ファイル「c4webcl.properties」を指定します。
    商品手配サンプルプログラムでは,次の場所にあります。
    <Cosminexusインストールディレクトリ>¥CSCTE¥Samples¥商品手配¥Service¥DeliveryService¥c4webcl.properties
  7. [ファイル]-[保管]を選択します。
(c) 商品手配ビジネスプロセスを定義してみましょう

商品手配サンプルプログラムの商品手配ビジネスプロセスでは,次のようなプロセスで処理します。

  1. 商品手配ビジネスプロセスは,サービスリクエスタから入力された商品名と個数の情報を受け取ります。
  2. 在庫管理サービスアダプタを介して在庫管理サービスを呼び出します。
  3. 在庫管理サービスを呼び出した結果,在庫がない場合は,「*」(在庫無し)をサービスリクエスタに返します。
  4. 在庫がある場合は,配送受付サービスアダプタを介して配送受付サービスを呼び出し,配送番号を取得します。
  5. サービスリクエスタに,取得した配送番号を返します。

なお,商品手配ビジネスプロセスはユーザ定義受付を利用して呼び出すため,WSDL(ArrangementService.wsdl)を使用してユーザ定義受付を作成します。

商品手配サンプルプログラムのビジネスプロセスは,次の流れで定義します。

  1. 新規ビジネスプロセスを追加します
  2. ユーザ定義受付を追加します
  3. 変数を設定します
  4. アクティビティを配置します
  5. アクティビティを定義します
  6. ビジネスプロセスの定義を終了します

 

商品手配ビジネスプロセスを追加するときに設定する値を表C-10に示します。

表C-10 商品手配ビジネスプロセスを追加するときに設定する値

項目名設定する値説明
ビジネスプロセス名商品手配ビジネスプロセスの名称を指定します。
ステータスの永続化yesデータベースに記録を残すかどうかを指定します。記録をとると,プロセスの進捗状況などを把握できます。このサンプルプログラムでは,データベースに記録を残すため,「yes」を選択します。
BPELファイル インポートするチェックオフ上流工程でツールを使って作成したBPELをインポートする場合は,チェックを入れます。インポートすると,ビジネスプロセスに必要なアクティビティが自動的に表示されます。このサンプルプログラムでは,インポートしないので,チェックを外します。
サービスIDArrBPビジネスプロセスのIDを指定します。

商品手配ビジネスプロセスの追加手順を次に示します。

  1. ツリービューのサービス定義一覧で,右クリックして[ビジネスプロセス追加]を選択します。
    ビジネスプロセス定義を追加するためのダイアログが表示されます。
  2. [ビジネスプロセス名]に「商品手配」を入力し,[ステータスの永続化]で「yes」を選択します。[BPELファイル]の[インポートする]はチェックを外します。

    [図データ]

  3. [終了]ボタンをクリックします。
    ビジネスプロセス「商品手配」が作成され,ビジネスプロセス定義画面が表示されます。
  4. ビジネスプロセス定義画面のプロパティービューで,サービスIDを「ArrBP」に変更します。

    [図データ]

 

商品手配サンプルプログラムでは,サービス部品に合わせた受付を使用して,サービスリクエスタからの要求を受け付けます。そのため,ユーザ定義受付が必要になります。ユーザ定義受付を追加するときに設定する値を表C-12に示します。

表C-11 ユーザ定義受付を追加するときに設定する値

受付名サービス受付ユーザ定義受付の名称を指定します。
WSDLファイルArrangementService.wsdl使用するWSDLファイル名を指定します。
ポート名Arrangementポート名を指定します。

商品手配のユーザ定義受付の追加手順を次に示します。

  1. ツリービューのサービス定義一覧からビジネスプロセス名[商品手配]を選択し,右クリックして「ユーザ定義受付追加」を選択します。
    ユーザ定義受付を追加するためのダイアログが表示されます。

    [図データ]

  2. 受付名に「サービス受付」を入力し,WSDLファイルに「ArrangementService.wsdl」を入力します。

    [図データ]

  3. [次へ]ボタンをクリックします。
  4. ドロップダウンリストでポート「Arrangement」を選択して,[終了]ボタンをクリックします。

    [図データ]

    ユーザ定義受付がビジネスプロセスに追加され,ユーザ定義受付定義画面が表示されます。

    [図データ]

 

ビジネスプロセスでは,アクティビティを定義するときに変数を使用します。そのため,使用する変数をあらかじめ設定してから,アクティビティを定義します。商品手配ビジネスプロセスで使用する変数を次の表に示します。

表C-12 商品手配ビジネスプロセスで使用する変数

変数名種別xsdファイル
入力データmessageType入力データ.xsd
出力データmessageType出力データ.xsd
在庫引当入力データmessageType在庫引当入力データ.xsd
在庫引当出力データmessageType在庫引当出力データ.xsd
配送手配入力データmessageType配送手配入力データ.xsd
配送手配出力データmessageType配送手配出力データ.xsd

商品手配ビジネスプロセスで使用する変数の設定手順を次に示します。

  1. ビジネスプロセス定義画面のキャンバス上の[変数・相関セット]アイコンをダブルクリックします。
    [変数・相関セット一覧]ダイアログが表示されます。
  2. [変数一覧]を選択します。変数名に「入力データ」を入力し,種別は,ドロップダウンリストから「messageType」を選択します。
  3. [取込]ボタンをクリックします。
    [電文フォーマットの取込]ダイアログが表示されます。
  4. [受付名]を選択して,ドロップダウンリストから「サービス受付」を選択します。
  5. [オペレーション名]はドロップダウンリストから「arrangeItem」を,[電文種別]はドロップダウンリストから「要求電文」を選択します。[電文フォーマット]に「入力データ」を入力します。

    [図データ]

  6. [OK]ボタンをクリックします。
    [電文フォーマットの取込]ダイアログが閉じます。
  7. [変数・相関セット一覧]ダイアログの[追加]ボタンをクリックします。
    変数一覧に変数「入力データ」が追加されます。
  8. 変数「出力データ」,「在庫引当入力データ」,「在庫引当出力データ」,「配送手配入力データ」および「配送手配出力データ」についても,手順2.~7.と同様の操作で設定します。

    [図データ]

    [図データ]

    [図データ]

    [図データ]

    [図データ]

    [変数・相関セット一覧]ダイアログ[電文フォーマットの取込]ダイアログ
    変数名種別サービス/受付サービス/受付の名称オペレーション名電文種別電文フォーマット
    出力データmessageType受付名サービス受付arrangeItem応答電文出力データ
    在庫引当入力データmessageTypeサービス名在庫管理reserveItem要求電文在庫引当入力データ
    在庫引当出力データmessageTypeサービス名在庫管理reserveItem応答電文在庫引当出力データ
    配送手配入力データmessageTypeサービス名配送受付deliverItem要求電文配送手配入力データ
    配送手配出力データmessageTypeサービス名配送受付deliverItem応答電文配送手配出力データ
  9. [変数・相関セット一覧]ダイアログの[OK]ボタンをクリックします。
    これで変数が設定できました。

    [図データ]

 

商品手配サンプルプログラムのビジネスプロセスに必要なアクティビティを次の表に示します。

表C-13 商品手配サンプルプログラムのビジネスプロセスに必要なアクティビティ

設定する値説明
受付アクティビティサービスリクエスタからの応答を受け付けます。
データ変換アクティビティ入力時,出力時,在庫引当時,および配送手配時のデータを編集します。
サービス呼出アクティビティ在庫管理サービスまたは配送受付サービスを呼び出します。
分岐開始アクティビティ条件(在庫の有無)による処理をします。
応答アクティビティ処理結果をサービスリクエスタへ返します。
分岐終了アクティビティ条件(在庫の有無)による処理を終了します。

アクティビティの配置手順を次に示します。

  1. パレットから次のアクティビティをクリックし,キャンバス上の適当な位置にクリックして配置します。
    • 受付アクティビティ
    • データ変換アクティビティ
    • サービス呼出アクティビティ
    • 分岐開始アクティビティ
    • データ変換アクティビティ
    • 応答アクティビティ
    • データ変換アクティビティ
    • サービス呼出アクティビティ
    • データ変換アクティビティ
    • 応答アクティビティ
    • 分岐終了アクティビティ
  2. アクティビティを連結するために,パレットの[コネクション]をクリックします。
  3. 連結元である開始アクティビティをクリックします。
  4. 連結先である受付アクティビティをクリックします。
    これで開始アクティビティと受付アクティビティを連結できました。
  5. 受付アクティビティから終了アクティビティまでを,手順2.~4.と同様の操作で一つずつアクティビティを連結します。

    [図データ]

 

キャンバスへ配置した各アクティビティの内容を定義します。

<受付アクティビティ>

  1. キャンバスの受付アクティビティをダブルクリックします。
    [受付アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名受付アクティビティの名称を入力します。
    オペレーション名arrangeItemサービスリクエスタから在庫管理サービスを呼び出すときに利用するオペレーションの名称を入力します。
    割当変数入力データビジネスプロセスの要求電文に割り当てる変数をドロップダウンリストから選択します。
    割当相関セット群設定なし相関セットグループをアクティビティに割り当てる場合に設定します。このサンプルプログラムでは使用しないため,設定しません。
    通信モデル同期オペレーションの通信モデルを指定します。このサンプルプログラムで使用する商品手配サービスは,Webサービスのため,「同期」を設定します。
    インスタンス生成yes要求電文を受け付けたときに,プロセスを初期化するかどうかを選択します。このサンプルプログラムでは,初期化するため「yes」を設定します。
  3. [OK]ボタンをクリックします。

 

<データ変換アクティビティ>(在庫引当の前処理の場合)

  1. キャンバスのデータ変換アクティビティをダブルクリックします。
    [データ変換アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名在庫引当前処理アクティビティの名称を入力します。
    変数(変換元変数)入力データデータの変換元になる変数をドロップダウンリストから選択し,[追加]ボタンをクリックします。
    変数(変換先変数)在庫引当入力データデータの変換先になる変数をドロップダウンリストから選択します。
    データ変換定義在庫引当前処理変数の変換に使うデータ変換定義ファイルの名称を入力します。
  3. [OK]ボタンをクリックします。
  4. キャンバスのデータ変換アクティビティを右クリックし,[マッピング定義起動]を選択します。
    [ルート要素選択]ダイアログが表示されます。
  5. 変換元のスキーマ論理名「入力データ」のルート要素をクリックして,ドロップダウンリストから「ars:arrangeItem」を選択します。
  6. 変換先のスキーマ論理名「在庫引当入力データ」のルート要素をクリックして,ドロップダウンリストから「ims:reserveItem」を選択します。

    [図データ]

  7. [OK]ボタンをクリックします。
    データ変換定義画面が表示されます。

    [図データ]

  8. データ変換定義画面のパレットから「マッピング」を選択します。
  9. マッピング元となる変換元ノードのノードアダプタをクリックします。
  10. マッピング先となる変換先ノードのノードアダプタをクリックします。
    マッピング線が設定されます。

    [図データ]

 

<データ変換アクティビティ>(在庫なしの場合)

  1. キャンバスのデータ変換アクティビティをダブルクリックします。
    [データ変換アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名在庫なし設定アクティビティの名称を入力します。
    変数(変換元変数)在庫引当出力データデータの変換元になる変数をドロップダウンリストから選択し,[追加]ボタンをクリックします。
    変数(変換先変数)出力データデータの変換先になる変数をドロップダウンリストから選択します。
    データ変換定義在庫なし設定変数の変換に使うデータ変換定義ファイルの名称を入力します。
  3. [OK]ボタンをクリックします。
  4. キャンバスのデータ変換アクティビティを右クリックし,[マッピング定義起動]を選択します。
    [ルート要素選択]ダイアログが表示されます。
  5. 変換元のスキーマ論理名「在庫引当出力データ」のルート要素をクリックして,ドロップダウンリストから「ims:reserveItemResponse」を選択します。
  6. 変換先のスキーマ論理名「出力データ」のルート要素クリックして,ドロップダウンリストから「ars:arrangeItemResponse」を選択します。

    [図データ]

  7. [OK]ボタンをクリックします。
    データ変換定義画面が表示されます。

    [図データ]

  8. データ変換定義画面のパレットから[マッピング]を選択します。
  9. マッピング元となる変換元ノードのノードアダプタをクリックします。
  10. マッピング先となる変換先ノードのノードアダプタをクリックします。
    マッピング線が設定されます。

    [図データ]

 

<データ変換アクティビティ>(配送手配の前処理の場合)

  1. キャンバスのデータ変換アクティビティをダブルクリックします。
    [データ変換アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名配送手配前処理アクティビティの名称を入力します。
    変数(変換元変数)在庫引当出力データデータの変換元になる変数をドロップダウンリストから選択し,[追加]ボタンをクリックします。
    変数(変換先変数)配送手配入力データデータの変換先になる変数をドロップダウンリストから選択します。
    データ変換定義配送手配前処理変数の変換に使うデータ変換定義ファイルの名称を入力します。
  3. [OK]ボタンをクリックします。
  4. キャンバスのデータ変換アクティビティを右クリックし,[マッピング定義起動]を選択します。
    [ルート要素選択]ダイアログが表示されます。
  5. 変換元のスキーマ論理名「在庫引当出力データ」のルート要素をクリックして,ドロップダウンリストから「ims:reserveItemResponse」を選択します。
  6. 変換先のスキーマ論理名「配送手配入力データ」のルート要素をクリックして,ドロップダウンリストから「dls:deliverItem」を選択します。

    [図データ]

  7. [OK]ボタンをクリックします。
    データ変換定義画面が表示されます。

    [図データ]

  8. データ変換定義画面のパレットから「マッピング」を選択します。
  9. マッピング元となる変換元ノードのノードアダプタをクリックします。
  10. マッピング先となる変換先ノードのノードアダプタをクリックします。
    マッピング線が設定されます。

    [図データ]

 

<データ変換アクティビティ>(配送番号の設定の場合)

  1. キャンバスのデータ変換アクティビティをダブルクリックします。
    [データ変換アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名配送番号設定アクティビティの名称を入力します。
    変数(変換元変数)配送手配出力データデータの変換元になる変数をドロップダウンリストから選択し,[追加]ボタンをクリックします。
    変数(変換先変数)出力データデータの変換先になる変数をドロップダウンリストから選択します。
    データ変換定義配送番号設定変数の変換に使うデータ変換定義ファイルの名称を入力します。
  3. [OK]ボタンをクリックします。
  4. キャンバスのデータ変換アクティビティを右クリックし,[マッピング定義起動]を選択します。
    [ルート要素選択]ダイアログが表示されます。
  5. 変換元のスキーマ論理名「配送手配出力データ」のルート要素をクリックして,ドロップダウンリストから「dls:deliverItemResponse」を選択します。
  6. 変換先のスキーマ論理名「出力データ」のルート要素をクリックして,ドロップダウンリストから「ars:arrangeItemResponse」を選択します。

    [図データ]

  7. [OK]ボタンをクリックします。
    データ変換定義画面が表示されます。

    [図データ]

  8. データ変換定義画面のパレットから[マッピング]を選択します。
  9. マッピング元となる変換元ノードのノードアダプタをクリックします。
  10. マッピング先となる変換先ノードのノードアダプタをクリックします。
    マッピング線が設定されます。

    [図データ]

 

<サービス呼出アクティビティ>(在庫を引き当てる場合)

  1. キャンバスのサービス呼出アクティビティをダブルクリックします。
    [サービス呼出アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名在庫引当アクティビティの名称を入力します。
    サービス名在庫管理要求電文を送信して呼び出すサービス部品の名称をドロップダウンリストから選択します。
    オペレーション名reserveItem[サービス名]で指定したサービス部品(在庫管理)のオペレーションのうち,実際に呼び出すオペレーションの名称を指定します。
    通信モデル同期[オペレーション名]で指定したオペレーションに設定されている通信モデルが表示されます。
    要求電文用割当変数在庫引当入力データ在庫管理サービスを呼び出す要求電文に割り当てる変数をドロップダウンリストから選択します。
    応答電文用割当変数在庫引当出力データ同期オペレ-ションから受け取る応答電文に割り当てる変数をドロップダウンリストから選択します。
    割当相関セット群なし相関セットグループをアクティビティに割り当てる場合に設定します。このサンプルプログラムでは使用しないため,設定しません。

 

<サービス呼出アクティビティ>(配送を手配する場合)

  1. キャンバスのサービス呼出アクティビティをダブルクリックします。
    [サービス呼出アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名配送手配アクティビティの名称を入力します。
    サービス名配送受付要求電文を送信して呼び出すサービス部品の名称をドロップダウンリストから選択します。
    オペレーション名deliverItem[サービス名]で指定したサービス部品(配送手配)のオペレーションのうち,実際に呼び出すオペレーションの名称を指定します。
    通信モデル同期[オペレーション名]で指定したオペレーションに設定されている通信モデルが表示されます。
    要求電文用割当変数配送手配入力データ配送手配サービスを呼び出す要求電文に割り当てる変数をドロップダウンリストから選択します。
    応答電文用割当変数配送手配出力データ同期オペレ-ションから受け取る応答電文に割り当てる変数をドロップダウンリストから選択します。
    割当相関セット群なし相関セットグループをアクティビティに割り当てる場合に設定します。このサンプルプログラムでは使用しないため,設定しません。

 

<応答アクティビティ>(在庫がない場合)

  1. キャンバスの応答アクティビティをダブルクリックします。
    [応答アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名応答_在庫なしエラーアクティビティの名称を入力します。
    オペレーション名arrangeItem対応する受付アクティビティに指定したオペレーション名を入力します。
    割当変数出力データビジネスプロセスの応答電文に割り当てる変数をドロップダウンリストから選択します。
    割当相関セット群:設定なし相関セットグループをアクティビティに割り当てる場合に入力します。このサンプルプログラムでは使用しないため,設定しません。
    フォルト名設定なしフォルト処理として応答アクティビティを定義して,サービスリクエスタにフォルトが発生したことを示す応答電文を送信する場合のフォルトの名称を入力します。このサンプルプログラムではフォルト処理を使用しないため,設定しません。

 

<応答アクティビティ>(配送手配が成功した場合)

  1. キャンバスの応答アクティビティをダブルクリックします。
    [応答アクティビティ]ダイアログが表示されます。
  2. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    アクティビティ名応答_手配成功アクティビティの名称を入力します。
    オペレーション名arrangeItem対応する受付アクティビティに指定したオペレーション名を入力します。
    割当変数出力データビジネスプロセスの応答電文に割り当てる変数をドロップダウンリストから選択します。
    割当相関セット群:設定なし相関セットグループをアクティビティに割り当てる場合に入力します。このサンプルプログラムでは使用しないため,設定しません。
    フォルト名設定なしフォルト処理として応答アクティビティを定義して,サービスリクエスタにフォルトが発生したことを示す応答電文を送信する場合のフォルトの名称を入力します。このサンプルプログラムではフォルト処理を使用しないため,設定しません。

 

<分岐開始クティビティ>

  1. キャンバスの分岐開始アクティビティをダブルクリックします。
    [分岐開始アクティビティ]ダイアログが表示されます。
  2. アクティビティ名に「在庫引当結果チェック」を入力します。
  3. [遷移先]が[在庫なし設定]の行をクリックし,[上へ]ボタンをクリックして,一番上の行に移動します。
  4. 一番上の行を選択し,[条件設定]ボタンをクリックします。
    [条件設定]ダイアログが表示されます。
  5. 次の内容を入力します。

    [図データ]

    項目名設定する値説明
    条件名在庫なし在庫引当チェックの結果,在庫がない場合の条件を指定します。
    変数在庫引当出力データ条件式で使用する変数をドロップダウンリストから選択します。
    条件式csc:getVariableData("在庫引当出力データ", "/*[local-name()='reserveItemResponse' and namespace-uri()='http://sample/InventoryManagementService']/*[local-name()='ReservationNumber' and namespace-uri()='http://sample/InventoryManagementService']")="*"在庫がない場合の条件式をXPath式で指定します。
  6. [OK]ボタンをクリックします。
    分岐アクティビティ画面に戻ります。
  7. [遷移先]が[配送手配前処理]の[優先順位]をクリックし,ドロップダウンリストから「Default」を選択します。
    「Default」を選択すると,条件の設定は不要になります。

    [図データ]

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

 

<分岐終了アクティビティ>

  1. キャンバスの分岐終了アクティビティをクリックします。
    プロパティービューに,分岐終了アクティビティの内容が表示されます。
  2. アクティビティ名に,「在庫引当結果チェック_終了」を入力します。

    [図データ]

 

すべてのアクティビティを定義したら,[ファイル]-[保管]を選択して,ビジネスプロセスの定義を終了します。

(d) 検証とパッケージングをしてみましょう

次に示すものは,定義した内容が正しいかどうか検証してから,パッケージングします。

検証とパッケージングは,Helloサービスアダプタの検証とパッケージングの手順と同様です。手順の詳細については,「付録C.3(1)(b) Helloサービスアダプタの検証とパッケージングをしてみましょう」を参照してください。