在Microsoft Dynamics CRM 4.0中創建插件時,可以使用以下內容來檢查導致插件觸發的事件的來源。如何防止Microsoft Dynamics CRM 2011中沒有ExecutionContext.CallerOrigin的無限循環?
public void Execute(IPluginExecutionContext context)
{
if (context.CallerOrigin.GetType() == CallerOrigin.WebServiceApi.GetType())
{
return;
}
plugin code here...
}
這將允許你檢查行動是由一個形式的用戶引起的,通過Web服務或工作流程等..
我有一個創建和更新實體同步應用程序通過WCF,並且不希望插件在發生這種情況時執行,只有當用戶編輯實體(以防止同步過程中的無限循環)時。
IExecutionContext.CallerOrigin
已在MS Dynamics CRM 2011,中刪除,那麼採用什麼新方法可以做到這一點?
我在想,可能有辦法在WCF調用中設置IExecutionContext.CorrelationId
,然後檢查它在插件中的具體GUID,但我還沒有任何運氣。
我可能有,如果變化是由指定的用戶發起的,不更新,因爲會被同步工具的變化。我真的想避免雙重同步,而不是無限循環:)我可以在同步工具 – csjohnst 2011-05-19 06:16:59
context.InitiatingUserId給你的GUID ID停止循環。在我的情況下,我想排除單個用戶從解僱插件,這就做到了。 – kmria 2015-03-18 10:21:52