我有几个问题。
1-当插件A 触发某个事件并导致另一个插件B 触发时,插件B 是否在同一个事件执行中执行管道为插件A ?
2-如果以上情况属实且插件A 且插件B 在同一个事件执行管道中执行,则他们都有2分钟完成(因为最大执行时间)动态CRM中插件的时间是2分钟)或者每个插件都有2分钟完成,这使得两个完成的总执行时间是4分钟?
感谢。
答案 0 :(得分:3)
插件B将在插件A的子管道中执行。
在Dynamics CRM 2011中,父和子流水线的概念被放弃以试图简化插件开发,但它们仍然存在。您可以查看插件正在执行的上下文中检查ul.submenu > li > a {
display: inline-block;
text-decoration: none;
margin: 3px;
width: 8%;
}
属性。
E.g。当您的插件注册了Update消息时,父管道实际上似乎在Assign或SetState消息的上下文中运行。此外,当自定义插件代码对记录执行更新时,更新将在单独的子管道中执行。
在沙箱中,根管道必须在2分钟内完成。对于同步插件步骤,这意味着所有后续子管道任务也需要在该窗口内完成。
异步插件步骤但是这里不起作用,因为它们是在一个单独的进程中执行的。请记住,插件代码无法无休止地创建子管道实例。为了防止无休止的运行循环,系统允许插件的步长不超过8级。您可以使用属性IPluginExecutionContext.ParentContext
进行检查。
答案 1 :(得分:1)
在一个不正确的插件上下文中,但我想这取决于你如何注册插件,如果你从插件A执行创建操作,并且插件B在该操作上被触发,如果插件B是同步的(前验证,预操作),然后插件A需要等待插件B完成。插件B仍然有2分钟的窗口完成,可能你会有一个稍微大一点的窗口,然后2分钟 - 插件一个执行时间,但当插件A将因为它通过它的执行时间而被终止,插件B将在他的拥有2分钟的限制(我想象一个卷起场景)。
我想你的答案是否定的,他们不会在同一事件中获得执行,但总执行时间取决于你如何注册插件B,如果是同步或异步。