【问题标题】:Dynamic CRM 2013 Plugin Event execution pipeline and the 2 Minutes Time out动态 CRM 2013 插件事件执行管道和 2 分钟超时
【发布时间】:2015-09-05 03:39:30
【问题描述】:

请教几个问题。

1- 当插件A触发一个事件并导致另一个插件B触发时,插件B是否会在同一个事件执行中执行管道作为插件A

2- 如果上述情况属实并且 plugin APlugin B 在同一个 Event 执行管道中执行,它们是否都有 2 分钟的时间来完成(因为最大执行动态CRM中一个插件的时间是2分钟)或者他们每个人都有2分钟完成,这使得他们允许他们完成的总执行时间是4分钟?

谢谢。

【问题讨论】:

    标签: dynamics-crm-2011 crm dynamics-crm-2013


    【解决方案1】:

    插件 B 将在插件 A 的子管道中执行。

    在 Dynamics CRM 2011 中,父管道和子管道的概念被放弃以试图简化插件开发,但它们仍然存在。您可以通过检查IPluginExecutionContext.ParentContext 属性来了解您的插件在哪个上下文中执行。

    例如当您的插件为 Update 消息注册时,父管道实际上可以显示为在 Assign 或 SetState 消息的上下文中运行。此外,当自定义插件代码对记录进行更新时,更新将在单独的子管道中执行。

    在沙盒中,根管道必须在 2 分钟内完成。对于同步插件步骤,这意味着所有后续子管道任务也需要在该窗口内完成。

    异步插件步骤但是在这里不起作用,因为这些是在单独的进程中执行的。请记住,插件代码不能无休止地创建子管道实例。为了防止无休止的运行循环,系统允许插件的步长不超过 8 级。您可以通过属性IPluginExecutionContext.Depth 进行检查。

    【讨论】:

    • 感谢您的回复。您提到:在沙盒中,根管道必须在 2 分钟内完成。这是否意味着如果插件未在沙箱中注册,根管道可能需要 2 分钟以上才能完成?
    • 不,我的意思是所有的总和不能超过2分钟。
    【解决方案2】:

    在不正确的插件上下文中,但我想取决于您如何注册插件,如果您从插件 A 执行创建操作,并且插件 B 在该操作上触发,如果插件 B 是同步的(预验证,预操作),那么插件 A 需要等待插件 B 完成。插件 B 仍然会有 2 分钟的窗口来完成,可能你会有一个稍微大一点的窗口然后 2 分钟 - 插件 A 执行时间,但是当插件 A 将因为它超过它的执行时间而终止时,插件 B 将在他完成后终止拥有 2 分钟的限制(我在想象一个汇总场景)。

    我想你的答案是否定的,它们不会在同一个事件中被执行,但是总执行时间取决于你如何注册插件 B,如果是同步的还是异步的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多