例外を発生させずに MS CRM プラグインの実行を停止することはできますか?
ユーザーのアクションを禁止したいので、プラグイン リストPre
イベント ステップを作成しました。Pre
そのステップ以降のすべてのアクションをキャンセルする予定です。
どうすればこれを達成できますか?もちろん、エラーメッセージを表示せずに。
例外を発生させずに MS CRM プラグインの実行を停止することはできますか?
ユーザーのアクションを禁止したいので、プラグイン リストPre
イベント ステップを作成しました。Pre
そのステップ以降のすべてのアクションをキャンセルする予定です。
どうすればこれを達成できますか?もちろん、エラーメッセージを表示せずに。
残念ながら、実行を停止してプラグイン内の変更をロールバックする唯一の方法は、例外をスローすることです ( InvalidPluginExecutionException
)
プラグインが同期として登録されている場合、例外は常にエラー メッセージを表示し、非表示にすることはできません。
プラグインが非同期として登録されている場合、例外はAsyncOperation
エンティティに書き込まれます
詳細については:
HaltPlugin
所有しているすべてのプラグインの実行を停止することが目標の場合、単一の属性 RequestId を含むエンティティを作成できます。次に (おそらく基本プラグイン クラスで) プラグインの実行を実行する前に、Context.RequestId が HaltPluginEntity テーブルにあることを確認します。ある場合は何もせずに戻り、そうでない場合は通常どおり続行します。
これにより、作業が行われなくてもプラグインが技術的に正常に完了するため、ユーザーにエラーが表示されないという追加の利点が得られます。
コメントで MarioZG が述べたように、プラグインのみに関心がある場合は、共有変数を使用する方が理にかなっています (非同期プラグインで機能するかどうかはわかりません)。ただし、プラグインとワークフローが気になる場合は、このアプローチは機能せず、何らかのHaltPlugin
エンティティを作成する必要があります。