【问题标题】:Why does Dynamics CRM 2013 plugin fire twice on owner change?为什么 Dynamics CRM 2013 插件会在所有者更改时触发两次?
【发布时间】:2014-06-23 01:00:00
【问题描述】:

我有一个用于自定义实体的简单插件,该插件设置为在更新我的自定义实体时触发。它在 Post Operation 阶段注册。除了其他标准字段(例如文本框、日期等)之外,当我对记录的所有者字段进行更改时,我注意到一些奇怪的行为。

插件第一次触发,图像中出现的唯一属性是所有常规字段。没有遇到所有者字段。

然后插件再次触发,但上下文的 Depth 属性仍然只有 一个(即插件不会被插件代码中的更改触发) .在本次插件运行中,遇到的属性只有 Owner 字段。

我的理论是,由于所有者字段是“特殊的”,CRM 会执行两个不同的请求 - 一个是更改常规字段,另一个是通过 AssignRequest 更改所有者的请求。但是,我找不到任何关于这种行为的“官方”文档。

有人可以解释为什么会这样吗?

我正在运行 Dynamcs CRM 2013 UR2

【问题讨论】:

    标签: dynamics-crm dynamics-crm-2013


    【解决方案1】:

    Update 事件在Assign 事件期间触发。因此,如果发生分配,您的插件将执行。 SetState 也是如此 - 如果您激活/停用记录,则会发生 Update 事件。 SDK 中未记录这些项目。

    一个好的做法是在您的Update 插件上使用属性过滤,这样它只会触发它关注的字段 - 这将假设它没有查看与所有者相关的字段,避免它触发两次。如果您有特定于记录所有权的逻辑,您可以将其放入在Assign 事件上注册的插件中。

    【讨论】:

      【解决方案2】:

      我无法找到有关此的官方文档,但我认为分配消息是您正在寻找的(如果实体是用户拥有的。请参阅http://msdn.microsoft.com/en-us/library/gg328576.aspx。我强烈建议您指定过滤属性如果您正在更新消息上注册插件。您还可以调试您的插件并检查插件上下文的 MessageName 属性并查看触发了什么消息。我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多