MS CRM MaxDepth 工作流程设置

Swa*_*nny 2 dynamics-crm dynamics-crm-2011

具体来说是 MS CRM 2011。这实际上是 4 个问题合而为一:

A. 为什么选择 8 作为默认限制?(这是否是任意的,原始深度计数器是 3 位整数(尽管执行上下文的深度是有符号的 32 位),开发人员只是认为 2 的幂,9 是一个邪恶的数字......)

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

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

D. 这是提出此类问题的最佳论坛吗?(我觉得这对于开发问题来说有点边界。)

请注意,我已经有了执行此操作的脚本,我了解执行上下文深度是什么,并且我知道如何减少深度过多的可能性。这些不是我的问题,或者至少不是我无能为力的问题。谢谢。

Atz*_*mon 5

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

至于其他问题:

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

  • B. 最好是避免导致问题的情况,而不是提高阈值。我确信您的系统可以在高于 8 的设置下工作,但您可能隐藏了糟糕的设计或其他一些问题。您提到这是您无法控制的,但对于阅读本文的其他人来说,请尝试解决问题或提出更好的设计。

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

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

    Add-PSSnapin Microsoft.Crm.PowerShell
    $setting = Get-CrmSetting WorkflowSettings
    $setting.MaxDepth=n
    Set-CrmSetting $setting
    
    Run Code Online (Sandbox Code Playgroud)