ビジネスプロセスの実装
ビジネスプロセスの実装
O社の懸念事項は、コストを抑えながらどれだけ早く商品注文システムを修正できるのかということであった。これに対してビジネスプロセスの修正案を作成し、既存の連携に影響を与えることなく、新しいビジネス要件を追加していくことが可能なシナリオを作成した。
以下からはこのビジネスプロセスの修正案を既存のプロセスに適用するための具体的な手順を説明し、変更を反映するためにどの程度の作業が必要であるかを見ていく。
なお、ここからの説明ではビジネスプロセス全体を「注文〜カード決済」の前半部分と「決済結果の受信〜発送完了通知」の後半部分とに分けて説明する。
注文 〜 カード決済
まず、注文〜カード決済のフローが修正の前後でどのように変更されるかを整理する。変更前のフローは図1のとおりである。

図2:修正前のフロー
このフローに対して今回の修正案を適用していくことを考える。追加するフローの内容は次の2つである。
- 注文データ受信後のデータ分離ロジックの追加
- 提携会社へ注文情報を送付し、受注結果を受け取るフロー
この2つの修正を適用したフローを以下の図3に示す。

図3:修正後のフロー1
(画像をクリックすると別ウィンドウに拡大図を表示します)
注文データ受信後のデータ分離ロジックを実装するために、Assignアクティビティを配置した。Assignアクティビティでは、入力された注文データ内の該当部分が提携会社のシステムへ送信される変数にコピーされる。
並列処理として実施される自社および提携会社への注文情報の入力処理は、Flowアクティビティを使用することにより実現している。Flowアクティビティを使用するとスコープ内のアクティビティを並列に実行することができる。Flow内のアクティビティの実行順序はLinkを使用することにより制御する。詳細はBPELの仕様を参照していただきたい。
図3の青で囲まれた部分が提携会社との連携部分になる。ここでは、Invokeにより提携会社へ注文情報を送付するアクティビティとReceiveにより受注結果を受け取るアクティビティの2つを用いて非同期呼び出しパターンを実装している。非同期呼び出しパターンについては「第2回:ビジネスフローの設計」も参照していただきたい。
以上のフローを実装したBPELのFlow部分は次のようになる。Flow部分以外については前回紹介した内容と基本的に同じである。
Flowアクティビティによって注文処理を並列で実行し、それぞれの注文処理の呼び出し順序をLinkを用いて制御している。提携会社への注文では、送付した注文情報とその結果である受注結果を関連付けるのにCorrelation Setを使用していることにも注意してほしい。これにより自社のプロセスと提携会社のプロセスとの非同期要求・応答処理を実現している。
このように、第2回で作成したBPELを図3のように書き換えることで、ビジネスプロセスの前半部分は修正案を適用したことになる。
