2009-09-21 44 views
3

我即将在CRM中编写一个工作流程,每天调用它自己。这是一个递归工作流程。MS CRM递归工作流程和性能

它每天将运行在50万个实体上,如果它在过去3天内未被升级,则会停用该记录。

我很担心任何人都会这样做。

+0

CRM是一个软件类别,而不是产品名称 – Javier 2009-09-21 20:49:04

+0

Javier,是的CRM usis CRM是一个软件类别,它与本文相关。 – 2009-09-21 20:53:41

+0

3年后,你能给我们介绍一下这方面的经验吗? – 2011-08-11 19:56:38

回答

1

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

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

由CRM提供的内置无限循环保护不应该毁掉您的工作流实例。它在呼叫深度为8之后停止,但如果一个小时内没有呼叫,它将重置为1。所以你每天做一次这样的事实应该可以让你在递归工作流的前端行得通。

3

我没有亲自实施过这样的事情,但那是在数据库中浮动的500,000条记录,异步服务必须跟踪这些记录,这会对您的硬件征税。另外,CRM跟踪递归工作流实例。我没有在我面前的确切规格,但是如果一个工作流程在特定时间段内自行调用一定次数,CRM将会终止工作流程。

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

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

+0

按计划的任务,我假设你的意思是CRM之外的东西(如真正的Windows计划任务/ Windows服务)?或者有什么我不知道在CRM中? – 2009-09-22 20:51:59

+0

另外应该指出,我是按照马特在这里提到的方式来阅读它(所有工作流程为1个,而不是每个实体的工作流程)。基本上它是一个无目标的工作流程,你只需要选择一些东西来启动它。 – 2009-09-22 20:56:24

+0

是的,就像Windows计划任务一样。 CRM里面没有什么。 – Matt 2009-09-22 21:03:53