変更プリプロセッサーとイベント・ハンドラー
変更プリプロセッサーとイベント・アクション・ハンドラーのどちらを使用するかを、常に明確に判断できるとは限りません。特に、ソース・オブジェクトを変更する場合に、この状況があてはまります。
以下の表に、変更プリプロセッサー (常に同期的に実行される) の機能とイベント・アクション・ハンドラー (同期的に実行するか非同期的に実行するかを構成できる) の機能との比較を示します。
変更プリプロセッサー - 同期 | イベント・アクション - 同期 | イベント・アクション - 非同期 | |
---|---|---|---|
アクション・ハンドラー実行のタイミング (Content Engine への要求はすべて、各サーバー拡張機能タイプを 1 つ以上トリガーできます。) | トランザクション中、データベース更新が発生する前。 最初に実行されます。 | トランザクション中、データベース更新が発生した後。 2 番目に実行されます。 | トランザクションのコミット後。 別個のトランザクションで 3 番目に実行されます。 |
ソース・オブジェクトが保存される前に実行するかどうか | はい | はい | いいえ |
実行中にサーバーがセキュリティー・アクセス・チェックを無効にするかどうか | いいえ | はい | はい |
クライアントでソース・オブジェクトが保存されてからハンドラーが実行されるまでの間に時間的な間隔があるかどうか | いいえ | いいえ | はい |
ソース・オブジェクトを更新できるかどうか | はい | いいえ | はい |
SettableOnlyonCreate (SOOC) プロパティーを更新できるかどうか | はい | いいえ | いいえ |
オブジェクト値プロパティー (OVP) によって参照される他のオブジェクトを更新できるかどうか | はい | はい | はい |
イベントをサブスクライブできるかどうか | いいえ | はい | はい |
イベントおよびプロパティー値によって実行をフィルターできるかどうか | いいえ 1 | はい | はい |
未処理の例外によってユーザーのトランザクションがロールバックされるかどうか | はい | はい | いいえ |
1 変更プリプロセッサーは無条件に開始されます。しかし、変更プリプロセッサーのアクション・ハンドラーに渡されるソース・オブジェクトには、プロパティー・コレクションと保留中の一連のアクションが含まれているため、アクション・ハンドラーでイベント値やプロパティー値によるフィルタリングが可能です。