実践!ビジネス・プロセス・インテグレーション 2

コンペンセーション(補償ロジック)の設計

コンペンセーション(補償ロジック)の設計

コンペンセーションとはビジネスプロセス中の"Invoke"アクティビティやスコープに対して定義できる取り消し処理のことである。複数のシステムと連携を行うビジネスプロセスでは、プロセスのすべての処理を単一のUOWに含めることが困難である。そのような場合に、既に実行されてしまったトランザクションの取り消しを行う手段がコンペンセーションである。コンペンセーションについては「第3回:ビジネスプロセスを意味のあるプロセスに」も参照していただきたい。

O社のネット注文システムでは、顧客からの注文が受け付けられてから在庫の引き当てに失敗した場合、注文情報管理システムから注文情報を削除して顧客にお詫びのメールを送信するという要件がある。

コンペンセーションを使ってこれを実装することを考えよう。プロセスの仕様は図8の通りである。

コンペンセーションロジックの仕様
図8:コンペンセーションロジックの仕様


ここでは、「在庫の確認と更新」処理に対してFaultのCatchを定義してエラーの処理を行わせている。エラー処理ロジックの中では前のステップのアクティビティである「注文情報の入力」の"Invoke"に対して定義された補償ロジックを呼び出している。これにより、在庫の引き当てに失敗した場合に自動的に「注文情報の入力」処理で行われた処理を取り消して顧客にお詫びのメールを出すことができる。

上記の処理を"Invoke"アクティビティに対して定義した場合WSBPELの内容は図9、10のようになる。

エラー処理ロジック内でのコンペンセーションの呼び出し
図9:エラー処理ロジック内でのコンペンセーションの呼び出し


図10:"Invoke"に対するコンペンセーションの定義


WIDのビジネスプロセスエディタを使用した場合、正常系のフローと同様にGUIのエディタ上でコンペンセーションのロジックが記述できる。また、その記述に基づいたWSBPELは内部で自動的に生成される。

以上見てきたような流れでビジネスプロセスの仕様を定義し、WSBPELの仕様に基づいたXML形式のファイルを作成していくことが、ビジネスプロセスの実装作業となる。

終わりに

今回はO社のネット注文システムを例にWSBPELを記述していく流れを見た。次回はこのようにして作成したビジネスプロセスに対して変更を行う際の柔軟性について説明していく。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る