目前,我们在 sharepoint 2010 中有一个具有延迟事件的顺序工作流。
延迟设置为五分钟。工作流检查五个任务的状态,并根据结果延迟或完成。
我有一个工作流历史日志项目设置为在延迟之前和延迟之后写入。
有时延迟不会触发,示例如下:
延迟事件每 5 分钟触发一次,持续 3 天对一个项目,然后无缘无故它无法唤醒 17 小时......然后触发并完成。
有任何想法吗?我已经验证了所有的计时器服务都在正常运行等。
另一个奇怪的事情是可以运行 20 个工作流项目,只有 4 或 5 个会出现这个问题,这似乎完全是随机的。
另外:如果我对导致工作流重新运行的工作流项进行更改,则延迟事件将在下一个 5 分钟周期唤醒。
更新:我在我的错误日志中发现了一个错误,该错误发生在延迟无法唤醒时。
Workflow ID=07acf527-d5cb-41c7-a8e4-58329652dc53 attempting to run on a thread currently executing workflow ID=fe2d7670-7d3e-4e6a-b024-0cc3485aa73b. This workflow will be run at a later time.
更新:显然这是因为延迟的工作流是从另一个工作流以编程方式启动的。这会导致在同一线程中启动第二个工作流。任何人都知道如何以编程方式指定一个新线程?
更新 2:我设置了一些工作流以延迟 5 分钟运行,以查看 sleep 周期是否存在任何模式。工作流以 5 分钟的间隔休眠大约 6 个小时,然后计时器开始递增,如下所示
5分钟
15分钟
45分钟
1.5小时
3小时
6个小时
12小时
看起来延迟计时器大部分都加倍了。我确定 MS 可以解决这个问题,我有大量的日志和示例。
最佳答案
此问题已得到解决。我忘记发布决议了...
需要修改三个设置。工作流限制、工作流批处理和隐藏的工作流计时器。
您可以通过运行以下命令来检查当前的 throttle 设置:
stsadm -o getproperty -pn workflow-eventdelivery-throttle
这是我的新设置:
stsadm -o setproperty -pn workflow-eventdelivery-throttle -pv "45"
您可以通过运行以下命令来检查当前的批量大小设置:
stsadm -o getproperty -pn workitem-eventdelivery-batchsize
这是我的新设置。
stsadm -o setproperty -pn workitem-eventdelivery-batchsize -pv "250"
您可以通过运行以下命令来检查当前的时间间隔设置,在该命令中您将 URL 替换为 SharePoint 应用程序的有效路径:
stsadm -o getproperty -pn job-workflow -url http://yoursiteurl
这是我的设置:
stsadm -o setproperty -pn job-workflow -pv "Every 5 minutes between 0 and 59" -url http://yoursiteurl
关于visual-studio-2010 - 延迟事件在 Sharepoint 2010 工作流程中并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411523/