チェックポイントの配置と使用方法のガイドライン
ワークフロー定義では、チェックポイント・システム関数を BeginCheckpoint、RollbackCheckpoint、および EndCheckpoint の順序で配置します。
より詳細には、順序は以下のようになります。
- BeginCheckpoint。対応する RollbackCheckpoint で指定されるワーク・アイテムのデータ・フィールドを保存します。
- リスクがあると思われるいくつかのステップ。
- 前のステップが正常に実行されたかどうかを確認し、ロールバックを実行するか、チェックポイント処理を終了するかを判定するステップ。
- RollbackCheckpoint。保存されたデータ・フィールド値をリストアします。
- EndCheckpoint。保存されたデータ・フィールド値を破棄します。
配置
- Checkpoint ブロック (BeginCheckpoint、RollbackCheckpoint、および EndCheckpoint 呼び出しのシーケンス) はネストできません。
BeginCheckpoint 関数の実行後、別の BeginCheckpoint 関数が出現すると (EndCheckpoint 関数が実行されていない場合)、最初の BeginCheckpoint に対する EndCheckpoint が存在すると見なされます。最初の BeginCheckpoint で保存された情報は破棄され、2 番目の BeginCheckpoint の情報が保存されます。
- RollbackCheckpoint 関数に BeginCheckpoint 関数が関連付けられていない場合、実行時に異常例外が発生します。
- BeginCheckpoint 関数の実行前に EndCheckpoint 関数が出現した場合、EndCheckpoint 関数は無視されます。
使用上の考慮事項
- RollbackCheckpoint 関数は、指定のワーク・アイテム・データ・フィールドのみをロールバックします。BeginCheckpoint 関数と RollbackCheckpoint 関数の間で実行されるシステム関数とユーザー定義ステップの実行結果は、以下のとおりです。
- システム関数の実行結果は消去されません。例えば、Create システム関数で作成されたワーク・アイテムは削除されません。
- 自動外部プロセスの結果は、その結果が手動操作または別の自動プロセスによって取り消されない限り、そのまま残ります。例えば、FileNet® P8 ソフトウェアのスコープの外部にある自動プロセスによって、外部データベースが更新されることがあります。
- 以前に別のワーク・アイテムの WaitForCondition 条件を満たしたワーク・アイテムをロールバックしても、その際に待機中であったワーク・アイテムは再度待機を開始しません。以下のイベント・シーケンスのサンプルは、この動作を示しています。
- ワーク・アイテム B に対して BeginCheckpoint が実行されます。
- ワーク・アイテム B のデータ・フィールド C = 123 です。
- ワーク・アイテム A に対して WaitForCondition が実行されます。データ・フィールド C = 123 であるワーク・アイテムが待機条件を満たします。
- ワーク・アイテム A の WaitForCondition が、ワーク・アイテム B によって満たされます。
- ワーク・アイテム A の次のステップが実行されます。
- ワーク・アイテム B に対して RollbackCheckpoint が実行されます。
ロールバック中にデータ・フィールド C の値が (123 から) 変更された場合でも、WaitForCondition 関数の処理は完了しているため、ワーク・アイテム A は影響を受けません。