在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