長時間にわたる処理
長時間にわたる処理
複数のシステムにまたがるビジネスプロセスの場合、人手による処理、バッチ処理、社外システムとの連携などにより、短時間で処理が終わらないケースが少なくない。このような処理の場合には長時間にわたる処理特有の要件も存在する。
処理が長時間になる場合、そのビジネスプロセスがどのような状態になっているのかを確認するという要件がある。システム管理者が確認する場合もあれば、エンドユーザが自分に関係するビジネスプロセスがどのような状態にあるか確認する場合もある(例えば、インターネットで購入した商品が、既に発送され たのか、在庫がなくまだ発送されていないのか確認するなど)。また、処理の途中でそのビジネスプロセスをキャンセルするという要件も存在する。
では、この「ビジネスプロセスの状態確認」と「ビジネスプロセスのキャンセル」について、これらを解決するために具体的にどのような機能が必要なのだろうか。
ビジネスプロセスの状態確認については、ビジネスプロセスの進捗状況をリアルタイムに監視できる必要があるが、そのための機能としては以下の項目の表示機能がある。
- 実行中のビジネスプロセスに関する詳細属性情報
- ビジネスプロセスの制御情報(開始日時、開始ユーザ、プロセス番号等)
- ビジネスプロセスの業務情報(顧客名、顧客住所、注文商品名等)
- 属性をキーにした複数のビジネスプロセスのリスト
- 実行中のビジネスプロセスの現在実行している処理、もしくは待ちになっている処理に関する情報
これらにより、エンドユーザは自分の申し込みが、今どこまで進んでいるのか、どこで止まっているのか把握することができる。
次にビジネスプロセスのキャンセルのための機能であるが、実現するためには以下のような仕組みが必要である。
- ビジネスプロセスエンジンとしての仕組み
- 任意のタイミングでエンドユーザからのキャンセルリクエストを受け付け、キャンセルすべき実行中ビジネスプロセスを検索する。
検索したビジネスプロセスに、キャンセルリクエストを受け付けるための呼び出し口が設定されている場合には、リクエストをパラメーターとして呼び出し実行する。
- ビジネスプロセス定義時の仕組み
- ビジネスプロセスの定義時に、通常処理フローだけでなく、イベントをトリガーとして起動するフローを定義し、その時点で実行している処理をコントロールするように記述できる。
この機能を実現するための標準的な技術としては前述のWSBPELがあげられる。WSBPELには「コリレーション」と「イベントハンドラー」と いう機能ががある。「コリレーション」によってビジネスプロセスエンジンとしての仕組みの動作、つまりリクエストの中のある情報を元にそのメッセージを受 け付けるのに適当なビジネスプロセスを検出することができ、また「イベントハンドラー」により、ビジネスプロセス中の任意のタイミングでイベントを受け付け、それをトリガーに起動する処理ロジックを定義することができる(図5)。

図5:イベントのキャンセル
つまり、WSBPELをサポートするビジネスプロセスエンジンなら、上記のような機能を実現することができるのである。