2011-12-01 18 views
4

我知道一個註冊用於預驗證的插件會在數據庫事務之外執行,但我不確定我能否想到這種情況會比預操作更受歡迎。有人能給我一個預驗證註冊可能有用的例子嗎?什麼時候註冊一個crm 2011在線插件用於預驗證階段?

+1

作爲@glosrob已經提到:次不是CRM Online特有的。舞臺的名稱指向它的用法。如果您必須事先驗證**操作,請使用此階段。 – ccellar

+0

@ckeller是的,沒想到這是crm在線的具體情況,儘管似乎還記得閱讀somwhere某些階段只能在網上。 「預操作」聽起來像是在特定的消息處理髮生之前發生的,但是正如glosrob指出的那樣,這並不總是正確的 – keerz

+0

它在插件註冊工具中,它似乎在說預操作只適用於crm 2011在線。請參閱圖片[這裏](http://msdn.microsoft.com/en-us/library/hh237515.aspx#bkmk_RegStep) – keerz

回答

13

我們有一些插件在'PreValidation'事件中註冊,雖然這是在內部,而不是在線。

我沒有自己寫這些特定的插件,但我可以描述一個,並給出使用'PreValidation'而不是'PreOperation'的理由。

實體:帳戶

事件:刪除

邏輯:插件可以運行預先驗證。檢查是否沒有任何聯繫人蔘考任何帳戶的地址。如果發現任何情況,請停止執行。如果沒有,請刪除帳戶。

例如

帳戶'Stackoverflow'有地址'傑夫阿特伍德的房子'和聯繫'glosrob'。 'glosrob'通過定製引用'Jeff Attwood's House'。如果用戶選擇刪除'StackOverflow',我們應該檢測'glosrob'是否引用一個地址並阻止刪除。

這背後的原因是開發者發現,在PreOperation階段,刪除的某些方面已經發生,即級聯刪除。插件的邏輯要求我們檢查所有聯繫人 - 通過在PreOperation註冊,帳戶下的聯繫人已被刪除,使檢查過時。

在我們之前的場景中,當用戶選擇刪除「StackOverflow」帳戶時,聯繫人'glosrob'將在插件運行之前被刪除。因此,當插件後來運行時,它將允許刪除。

與CRM中的大多數情況一樣,這一切都歸結爲需求和解決方案,但我認爲這可以讓您瞭解爲什麼/何時可以使用PreValidation階段。我們還有其他一些推理類似的人在「刪除」事件上運行。

+0

很好的解釋謝謝。我不知道級聯刪除會在手術前階段發生。似乎有點奇怪,在手術前發生任何事情,但我想這取決於「手術」的含義。 – keerz

+0

是的,我可以理解混亂。我想操作是專門刪除帳戶,而不是刪除帳戶的聯繫人,線索等。 – glosrob

+1

一直在考慮你描述的場景。也許我在這裏誤解了,但如果賬戶刪除由於其他原因而失敗,並且預操作插件引發異常,那麼級聯刪除將如何撤銷?如果級聯刪除發生在術前階段,那麼它們發生在交易之外,所以我不確定crm如何能夠扭轉它們。這可能會導致賬戶刪除最終失敗,但一些相關級聯信息被刪除的情況。我錯過了什麼嗎? – keerz

2

我知道它非常老的帖子,來這裏,同時挖掘一個相同的問題的答案... 後來我發現了一個關鍵點從MSDN在同一主題,我認爲這將是有益的如果我張貼信息在這裏爲所有..

Prevalidation插件會發生在安全檢查之前。例如:如果一個賬戶是「VIP」賬戶,並且你不希望刪除這個賬戶記錄(不管他是否是超級用戶/管理員),那麼這個更好的情況可能發生在預先驗證中。因爲那時你並沒有真正關心用戶是誰以及他擁有什麼樣的權限(甚至他可能沒有權限刪除系統中的任何記錄),因此CRM將檢查用戶安全角色的數據庫前期操作過程中,這是其中的第一個數據庫的命中會發生..在此之前,它的自我,我們可以停止根據我們的驗證規則插件的exucution ..

我希望有意義...

謝謝

問候 SRIKANTH