事前検証用に登録されたプラグインがデータベース トランザクションの外部で実行されることは理解していますが、これが事前操作よりも望ましいシナリオを考えられるかどうかはわかりません。事前検証登録が役立つ場合の例を誰か教えてもらえますか?
2 に答える
「PreValidation」イベントにはいくつかのプラグインが登録されていますが、これはオンラインではなくオンプレミスです。
これらの特定のプラグインを自分で作成したわけではありませんが、そのプラグインについて説明し、「PreOperation」ではなく「PreValidation」を使用する正当な理由を説明できます。
エンティティ: アカウント
イベント: 削除
ロジック: プラグインは検証前に実行されます。アカウントのアドレスを参照している連絡先がないことを確認します。見つかった場合は、実行を停止します。そうでない場合は、アカウントを削除してください。
例えば
アカウント「Stackoverflow」の住所は「Jeff Attwood's House」で、連絡先は「glosrob」です。「glosrob」は、カスタマイズを通じて「Jeff Attwood's House」を参照しています。ユーザーが「StackOverflow」の削除を選択した場合、「glosrob」がアドレスを参照していることを検出し、削除を防止する必要があります。
この背後にある理由は、開発者が PreOperation 段階で、削除の一部の側面、つまりカスケード削除が既に発生していることを発見したためです。プラグインのロジックでは、すべての連絡先をチェックする必要があります。PreOperation に登録すると、アカウントの連絡先はすでに削除されており、チェックが不要になります。
前のシナリオでは、ユーザーが「StackOverflow」アカウントの削除を選択すると、プラグインが実行される前に連絡先「glosrob」が削除されます。したがって、プラグインが後で実行されると、削除が許可されます。
CRM のほとんどの場合と同様に、すべては要件とソリューションに帰着しますが、PreValidation ステージをいつ、なぜ使用するかについてのアイデアが得られると思います。「削除」イベントで実行される、同様の理由を持つ他のいくつかのイベントがあります。
私はその非常に古い投稿を知っています。同じ質問の答えを探しているときにここに来ました...後で、同じトピックに関するMSDNの重要なポイントを1つ見つけました。ここに情報をすべて投稿すると役立つと思いました. .
Prevalidation プラグインは、セキュリティ チェックの前に発生します。例: アカウントが「VIP」アカウントで、このアカウント レコードを削除したくない場合 (彼がスーパー ユーザー/管理者であっても)、事前検証でこれを行うことができます。その時点では、ユーザーが誰で、どのような権限を持っているか (システム内のレコードを削除する権限がない場合でも) をあまり気にしないため、CRM はデータベースにアクセスしてユーザーのセキュリティ ロールをチェックします。事前操作中に、最初のデータベース ヒットが発生する場所です..その前に、検証ルールに基づいてプラグインの実行を停止できます..
それが理にかなっていることを願っています...
ありがとうございました
よろしくスリカンス