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

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

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

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

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

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


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

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

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


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


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

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

終わりに

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

人気記事トップ10

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

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30