"bpelx:replay"フォルトによるBPELアクティビティの再実行
ビジネス・プロセスでは、例外発生時に実行済みの処理を再実行したい場合があります。ですが、BPELプロセスにおける通常のフォルト処理(例外処理)では、実行済みのアクティビティを再実行することは、簡単にはできません。
正確には、
これで、めでたくフォルト発生時に
そこで、登場するのがBPEL PM固有のフォルト"bpelx:replay"です。これを使うことで、BPELプロセスの再実行をスマートに定義できます。このフォルトがスローされると、Oracle BPEL Process Manager(BPEL PM)はそのフォルトを包含する一番内側のスコープを始めから再実行します。
例として、BPEL PM付属のサンプル・プロセスを紹介します。このサンプルは、
BPELファイル ReplayFault.bpelの一部を引用して、コメントを追加してみます。
<!-- カウンタを0で初期化 --> <!-- 5秒スリープ --> <!-- カウンタをインクリメント --> <!-- カウンタが3より大きかったら、何もせずそのまま次へ --> <!-- カウンタが3以下だったら、bpelx:replayフォルトをスローし --> <!-- スコープの冒頭から再実行 -->
このプロセスを実行すると、スコープが4回実行されます。