Dynamics crm 更新Quote.TotalAmount时激发的工作流将获取无限循环错误
我有一个工作流,在更新报价总额时更新报价实体上的自定义字段。执行工作流时,会出现以下错误 此工作流作业已取消,因为启动它的工作流包含无限循环。请更正工作流逻辑,然后重试。有关工作流逻辑的信息,请参阅“帮助” 要重现此错误,请创建具有更新步骤的按需工作流。更新步骤将报价押金设置为100。执行工作流,然后导航到工作流的“流程会话”区域。您将看到工作流程已执行多次。如果打开流程会话记录,您将看到上面提到的错误 我假设发生这种情况是因为当报价被更新时,总金额被重新计算;当总金额被重新计算时,然后执行工作流;当工作流被执行时,报价被更新;当报价被更新时,总金额被更新,依此类推 比如说Dynamics crm 更新Quote.TotalAmount时激发的工作流将获取无限循环错误,dynamics-crm,dynamics-crm-2015,Dynamics Crm,Dynamics Crm 2015,我有一个工作流,在更新报价总额时更新报价实体上的自定义字段。执行工作流时,会出现以下错误 此工作流作业已取消,因为启动它的工作流包含无限循环。请更正工作流逻辑,然后重试。有关工作流逻辑的信息,请参阅“帮助” 要重现此错误,请创建具有更新步骤的按需工作流。更新步骤将报价押金设置为100。执行工作流,然后导航到工作流的“流程会话”区域。您将看到工作流程已执行多次。如果打开流程会话记录,您将看到上面提到的错误 我假设发生这种情况是因为当报价被更新时,总金额被重新计算;当总金额被重新计算时,然后执行工作
如果工作流已经运行过一次,请停止工作流而不对报价记录进行任何更新,这样可以防止无限循环。在插件的开头:
if (Context.Depth > 1)
{
return;
}
如果被另一个插件触发,它将退出该插件,因此在第二次触发时退出循环。这是我在更新时注册插件时使用的,这样它就不会重新启动
希望能有所帮助。如果报价单没有实际进行任何更改,请更改您的工作流程代码,使其不更新报价单。我假设总量被反复设置为相同的值,这就是为什么会得到一个无限循环,因为这又是工作流的触发器 如果不需要更新报价单而不更新报价单,则显然不会触发另一个工作流
请参阅,了解如何检查工作流活动代码中记录的先前值。如果不更新总额,则更新自定义字段。您确定工作流不会在自定义字段更改时触发吗?+1,但这将阻止所有其他插件触发此插件,这可能是一项要求。我个人认为不应该依赖于
深度
控制,如果还有其他选择,它应该是最后的手段。我同意,这是我想问的问题,因为他没有依赖它。但在他的使用案例中,它似乎没有。