Makeのシナリオでは、各モジュールにのエラーハンドラを追加しておく事で、モジュールがエラーになった場合の処理を予め指定できます。
※エラーハンドラが設定されていないモジュールでエラーが発生した場合は、その時点でシナリオは終了します。(ACIDモジュールは、Auto commitの設定に基づいて、処理されます。)
前回の記事『ACIDモジュールとAuto commitについて』で解説したDataStore、シナリオを使用してCommit、RollBack、Ignoreの解説を行います。Auto commitはNoに設定しています。
Commit
エラーになった直前のモジュールまでのすべてのACIDモジュール操作をコミットし、シナリオを終了します。
エラーハンドラにCommitを追加してシナリオを実行します。
Bandle2でエラーが発生し、直前までの操作をコミットしてシナリオを終了しています。
DataStoreを確認すると、Bandle1(りんごの在庫を50にする)操作がコミットされていることが確認できます。
Rollback
エラーになった直前のモジュールまでのすべてのACIDモジュール操作をロールバックし、シナリオを終了します。
エラーハンドラにRollbackを追加してシナリオを実行します。
Bandle2でエラーが発生し、直前までの操作をロールバックしてシナリオを終了しています。
DataStoreを確認すると、Bandle1(りんごの在庫を50にする)操作がロールバックされていることが確認できます。
Ignore
エラーを無視してシナリオを継続します。エラーになったBandleはシナリオから削除し、残りのBandleを継続処理します。
エラーハンドラにIgnoreを追加してシナリオを実行します。
Bandle2のエラーを無視し、最後までシナリオを実行しています。
DataStoreを確認すると、エラーになったBandle2(みかんの在庫を50にする)操作を無視し、最後まで処理が実行されていることが確認できます。