Frage

Ich verstehe, dass ein für die Vorvalidierung registriertes Plugin außerhalb der Datenbanktransaktion ausgeführt wird, aber ich bin mir nicht sicher, ob ich mir ein Szenario vorstellen kann, wenn dies der Voroperation vorzuziehen wäre. Kann mir jemand ein Beispiel dafür geben, wo die Registrierung vor der Validation nützlich sein könnte?

War es hilfreich?

Lösung

Wir haben ein paar Plugins bei der "Prävalidation" -Event registriert, obwohl dies vorliegt und nicht online ist.

Ich habe diese spezifischen Plugins nicht selbst geschrieben, aber ich kann eine beschreiben und die Rechtfertigung für die Verwendung von "Prävalidation" als "Präoperation" geben.

Entität: Konto

Ereignis: Löschen

Logik: Plugin läuft vor der Validierung. Überprüft, ob es keine Kontakte gibt, die auf eine der Adressen des Kontos hinweisen. Wenn etwas gefunden wird, stoppen Sie die Ausführung. Wenn nicht, löschen Sie das Konto.

z.B

Das Konto "Stackoverflow" hat die Adresse "Jeff Attwoods Haus" und kontaktiert 'Glosrob'. 'Glosrob' referenziert 'Jeff Attwoods Haus' durch eine Anpassung. Wenn ein Benutzer "Stackoverflow" löscht, sollten wir feststellen, dass 'Glosrob' eine Adresse verweist und das Löschen verhindern.

Die Gründe dafür war der Entwickler, dass in der Präoperationsphase bereits einige Aspekte des Delete stattgefunden hatten, nämlich die Kaskadendeletten. Die Logik des Plugins erfordert, dass wir alle Kontakte überprüfen. Durch die Registrierung bei Präoperation wurden Kontakte unter dem Konto bereits gelöscht, wodurch der Scheck veraltet wurde.

In unserem vorherigen Szenario würde der Kontakt 'Glosrob', als der Benutzer zum Löschen von 'Stackoverflow' -Konto ausgewählt wurde, vor dem Plugin gelöscht. Wenn das Plugin danach lief, würde es das Löschen erlauben.

Wie bei den meisten Dingen in CRM richtet sich alles auf Anforderungen und Lösungen, aber ich denke, das gibt Ihnen eine Vorstellung davon, warum/wann Sie eine Prävalidationsphase verwenden könnten. Wir haben ein paar andere mit ähnlichen Argumentation, die auf dem Ereignis "Löschen" ausgeführt werden.

Andere Tipps

Ich weiß, dass es einen sehr alten Beitrag ist, der hierher gekommen ist, während ich nach einer Antwort für dieselbe Frage gräbt hat ... Später habe ich einen Schlüsselpunkt von MSDN zum selben Thema gefunden und dachte, es wäre hilfreich, wenn ich die Aufgabe hier für alle veröffentlichen würde. .

Das Prävalidations -Plugin würde vor den Sicherheitsprüfungen erfolgen. Zum Beispiel: Wenn ein Konto "VIP" -Konto ist und Sie nicht möchten, dass dieser Kontodatensatz gelöscht wird (egal ob er ein Superbenutzer/Administrator ist), kann dies bei der Vorprüfung besser passieren. Denn zu dieser Zeit sind Sie nicht wirklich darum, wer der Benutzer ist und welche Art von Berechtigungen er hat (selbst er hat möglicherweise keine Berechtigungen, um Datensätze im System zu löschen), wird CRM die Datenbank auf die Sicherheitsrollen des Benutzers überprüfen Während des Vorbetriebs und dort würde der erste Datenbank -Hit stattfinden. Vorher selbst können wir die Ausrüstung des Plugins basierend auf unseren Validierungsregeln stoppen.

Ich hoffe das macht Sinn ...

Vielen Dank

Grüße Srikanth

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top