如何解决主动与正在运行的工作流
| 这个周末在伊利诺伊州利勒的SharePoint周六,罗伯特·博格(Robert Bogue)说,活动工作流与运行工作流之间存在差异。我在网上看过,但是有人可以澄清吗? 如果服务器上可以有多达数百万个活动工作流,为什么每个服务器上只能有15个左右的正在运行的工作流?解决方法
是,有一点不同:
\“正在运行\”工作流是当前正在做某事(即执行一项活动)的所有工作流。
\“ Active \”工作流只是“正在运行”的所有工作流,但目前没有执行任何操作-例如等待
OnItemChanged
或DelayActivity
。
理解这一点的关键是WorkflowEventDeliveryThrottle(此处为SP2007,因为不存在2010年的文档)。此属性的标准值为15。这意味着只能同时运行15个并发工作流。达到此限制后,工作流将排队到OWSTimer,该OWSTimer将在任意时间后执行工作流(我认为工作流计时器作业设置为每5分钟一次)。
可使用stsadm
更改此油门(AFAIK Powershell不起作用-您可以通过课程设置SPWebService.WorkflowEventDeliveryThrottle
更改代码来更改属性):
stsadm -o setproperty -pn workflow-eventdelivery-throttle -pv \"20\"
现在,“正在运行”的工作流程的最大数量(更好的是“可以同时处理的最大工作流程事件的数量”)将是20。请参见其他一些SO帖子,其中有人在使用该参数。
有一篇不错的技术博客文章可以了解工作流事件处理:关于“工作流-事件交付-节流”参数。
与节流阀类似的是WorkflowEventDeliveryBatchSize,它表示在批处理中可以处理的最大工作流事件数。
摘要:
您可以拥有数千个活动的工作流程,例如所有等待更改工作流程的项目。他们没有运行,没有完成-只是活动。
可以同时处理的工作流程事件数量有限(您称其为“运行”工作流程)
您还可以拥有数千个正在运行的工作流程,例如它们可能都被设置为5分钟的延迟活动触发,但是只有有限数量的它们同时运行,其余的则排队等待稍后执行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。