【问题标题】:MS CRM recursive workflow and performanceMS CRM 递归工作流程和性能
【发布时间】:2010-11-30 05:03:04
【问题描述】:

我即将在 CRM 中编写一个每天都会调用自己的工作流。这是一个递归工作流。

它将每天在 50 万个实体上运行,如果在过去 3 天内没有更新记录,它将停用记录。

我担心性能有其他人这样做。

【问题讨论】:

  • CRM 是一个软件类别,而不是产品名称
  • Javier,是的 CRM usis CRM 是一个软件类别,与这篇文章有关。
  • 3 年后,您能否向我们介绍一下那次经历的最新情况?

标签: workflow dynamics-crm dynamics-crm-4


【解决方案1】:

我没有亲自实现过这样的事情,但这是异步服务必须跟踪的数据库中浮动的 500,000 条记录,这会对您的硬件造成负担。此外,CRM 跟踪递归工作流实例。我面前没有确切的规范,但如果工作流在特定时间范围内调用自身一定次数,CRM 将终止工作流。

您能否编写一个控制台应用程序,向 Crm 服务询问三天内未更新的记录,然后停用它们?每天将其作为计划任务运行一次,然后您的 CRM 系统就无需承担跟踪所有正在运行的工作流实例的负担。

编辑:啊,我现在看到您可能一直在考虑一个在所有记录上运行的工作流,而不是在每条记录上运行的工作流。如果你走这条路,benjynito 的建议很有意义,尽管我仍然认为计划任务比使用工作流更合适。

【讨论】:

  • 通过计划任务,我假设您的意思是 CRM 之外的东西(如真正的 Windows 计划任务/Windows 服务)?还是在 CRM 中我不知道什么?
  • 另外应该指出的是,我按照马特在此处提到的方式阅读它(所有人都有一个工作流,而不是每个实体一个工作流)。本质上它是一个无目标的工作流程,你只需要选择一些东西来开始它。
  • 是的,就像 Windows 计划任务一样。 CRM 内部没有任何内容。
  • 当您开始在 crm 之外编写代码时,客户端无法对其进行管理。这将成为一个问题
  • 我认为,一旦你开始尝试让 CRM 做一些它不是为它设计的事情,那就是问题所在。
【解决方案2】:

您需要确保您的工作流程在非高峰时段运行。假设你有一个本地安装,你应该能够摆脱它。如果您使用的是托管实例,您可能会担心一个组织在运行工作流,而另一个组织正在使用该系统。如有必要,使用超时和自定义工作流活动将开始时间强制为某个时间段。

我假设您会尽可能高效地确定要停用哪些记录。 (即查询表达式只会带回您将停用的记录)。

CRM 提供的内置无限循环保护不应终止您的工作流实例。它在呼叫深度为 8 后停止,但如果一个小时内没有呼叫,它会重置为 1。因此,您每天执行一次这一事实应该会让您在递归工作流程方面还不错。

【讨论】:

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