Dynamics crm 2011 MS CRM MaxDepth工作流设置

Dynamics crm 2011 MS CRM MaxDepth工作流设置,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,MS CRM 2011,具体而言。这实际上是一个4个问题: A.为什么选择8作为默认限制?(它是任意的,原始深度计数器是3位整数(虽然执行上下文的深度是32位的),开发人员只是认为2的幂,9是一个不神圣的数字…) B.将其增加到16有什么危险?(除了以某种方式通过测试的错误递归设置在出错之前将下降16次,而不是8次,而且根据情况的严重程度,我可能仍然会出现一些无限循环错误) C.改变这一点的脚本必须在每台CRM服务器上运行,还是只在其中一台服务器上运行?(或者我猜,这是存储在本地配置中还是共享的

MS CRM 2011,具体而言。这实际上是一个4个问题:

A.为什么选择8作为默认限制?(它是任意的,原始深度计数器是3位整数(虽然执行上下文的深度是32位的),开发人员只是认为2的幂,9是一个不神圣的数字…)

B.将其增加到16有什么危险?(除了以某种方式通过测试的错误递归设置在出错之前将下降16次,而不是8次,而且根据情况的严重程度,我可能仍然会出现一些无限循环错误)

C.改变这一点的脚本必须在每台CRM服务器上运行,还是只在其中一台服务器上运行?(或者我猜,这是存储在本地配置中还是共享的)

这是问这类问题的最佳论坛吗?(我觉得这对于开发人员的问题来说有点边缘化。)


请注意,我已经有了这样做的脚本,我了解执行上下文深度是什么,并且我知道如何降低过度深度的可能性。这些不是我的问题,或者至少不是我能解决的问题。谢谢。

您在上一段中已经涵盖了大部分答案,因此我将从回答问题D开始—这可能不是提出这些问题的最佳论坛。有些人会发现它们过于宽泛或基于观点

至于其他问题:

  • 我不知道为什么选择这个值

  • B.最好避免导致问题的情况,而不是增加阈值。我相信您的系统可以在高于8的设置下工作,但您可能隐藏了错误的设计或其他问题。您提到这超出了您的控制范围,但对于阅读本文的其他人,请尝试解决问题或提出更好的设计

  • C.您不需要更改每台服务器上的设置。您提到您知道如何更改它,但我将在这里为阅读此答案的其他人提供一个脚本

    下面是将值设置为n的PowerShell脚本:


在上一段中,您已经涵盖了大部分答案,因此我将从回答问题D开始—这可能不是提出这些问题的最佳论坛。有些人会发现它们过于宽泛或基于观点

至于其他问题:

  • 我不知道为什么选择这个值

  • B.最好避免导致问题的情况,而不是增加阈值。我相信您的系统可以在高于8的设置下工作,但您可能隐藏了错误的设计或其他问题。您提到这超出了您的控制范围,但对于阅读本文的其他人,请尝试解决问题或提出更好的设计

  • C.您不需要更改每台服务器上的设置。您提到您知道如何更改它,但我将在这里为阅读此答案的其他人提供一个脚本

    下面是将值设置为n的PowerShell脚本:

A)它用于无限循环保护,因此我猜选择该值是因为它代表了保护性能和功能之间的理想平衡(尽管您需要请Microsoft确认)。它详细阐述了以下内容:

由平台用于无限循环预防。在大多数情况下,这 属性可以忽略

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

B) 特别是长时间运行的进程可能会影响系统性能(因为其他系统作业在长时间运行的进程后面排队)。如果我的观点是正确的,限制可以防止性能问题,那么提高限制可能会危及系统性能

作为一般的经验法则,我们不应该更改这些设置(如果是这样的话,可以更容易地进行更改,例如通过用户界面)。我们可以假设(并希望)微软选择这个值是有原因的(即使我们不确定是什么原因)。我们可以合理地假设,我们对该设置的功能、作用以及可能的副作用的了解少于原始系统开发人员。因此,更改设置会带来风险,因为我们无法完全理解(通过比较)它的作用或它将导致的副作用

这里还有一个问题,你没有真正解决这个问题。在正常使用中,你不应该接近这个极限。解决症状并不能解决问题。如果是我,而我处于你的位置,那么增加限制不是我会使用的解决方案

最后,让流程运行更长的时间可能意味着您需要2分钟的时间

无论插件是同步执行还是同步执行 在异步情况下,有一个2分钟的时间限制 执行在沙盒中注册的插件。如果执行 插件逻辑超出了时间限制,即System.TimeoutException 被抛出。如果插件需要的处理时间超过2分钟 时间限制,考虑使用工作流或其他后台进程 完成预定的任务

C) 我相信每一位服务员

D) 如果你认为这个问题合适,我建议你读一读,然后问它。更糟糕的是,这个问题被否决并关闭。如果您想进一步讨论,请参阅。

A)它用于无限循环保护,因此我猜选择该值是因为它代表了保护性能和功能之间的理想平衡(t
Add-PSSnapin Microsoft.Crm.PowerShell
$setting = Get-CrmSetting WorkflowSettings
$setting.MaxDepth=n
Set-CrmSetting $setting