如果激活/停用/合并操作触发了crm dynamics 2011更新插件,我该怎么办?

时间:2012-08-28 20:35:18

标签: dynamics-crm-2011

我构建了一个在帐户更新消息中运行的插件,该插件使得一些验证不会复制记录。但是,如果我尝试禁用该帐户或与另一个帐户合并,则会触发该插件。

如何通过激活/停用/合并操作或事件模式(如CRM Dynamics 2011 Save Event Arguments Reference中的事件模式)触发插件?

2 个答案:

答案 0 :(得分:2)

要添加到Pete Oakey的答案,除了在实际代码@ runtime中测试此内容之外,您实际上可以告诉您的插件仅在 registration 阶段更改某些字段时触发,通过更改插件步骤的“过滤属性”。因此,除非您的验证逻辑特别需要StateCode / StatusCode属性才能正确处理,否则您可以过滤掉这两个属性,或者只包含验证逻辑所需的属性。

Plugin Steps

原始答案:

我相信您可以引用IPluginExecutionContext对象的IExecutionContext.Depth Property

  

每次正在运行的插件或工作流发出消息请求时   触发另一个插件或工作流执行的Web服务,   执行上下文的Depth属性增加。如果深度   属性在配置的时间内递增到其最大值   限制,平台认为这种行为是无限循环的   进一步插件或工作流程执行中止。最大深度   (8)和时间限制(一小时)可由Microsoft配置   Dynamics CRM管理员。

因此您可以使用if语句检查Depth > 1

答案 1 :(得分:1)

一种方法是比较插件中帐户实体更改内容的前后值。例如,如果您在值中只有active(如果这是正确的属性名称) - 您可以查看after值以查看发生了什么。

另一种方法是为这些消息添加一个特定的插件,并设置一些属性/标志,你可以在更新插件中检查。显然,这必须在更新插件之前运行。