SharePoint工作流中暂停动作会延迟恢复问题

                                                                            工作流中暂停动作会延迟恢复问题


1. 很多时候在我们使用SharePoint Designer和Visual Studio去设计工作流的时候,需要在里面添加Pausing for duration的动作,这样做很多时候是为了避免自定义开发的工作流和系统的一些event receiver冲突,因为在SharePoint中有很多自带的event receiver,当上传文档或者新建一个列表项之后,会触发很多系统自带的event receiver,同时也会触发相应的工作流,如果两者同时更新一个item的时候,这样就会出现更新冲突,所以很多时候,自定义功能会给系统自带功能让路,因为我们不能控制系统自带功能,确实可以调整自定义功能。


2. 在SharePoint中一个有两种方式去执行工作流:


1) 同步方式:这种方式是在w3wp.exe中运行工作流的事件,处理相应的操作,也就是说是在这个进程里面开启一个新的线程,立即执行。


2) 异步方式:这种方式是在owstimer.exe中运行工作流事件,这种有一定的延迟性,默认是5分钟,因为owstimer.exe中运行很多timer job,默认工作流的timer是每5分钟执行一次,有了这个进程是为了缓解w3wp的压力


3. 我们再回头来说一下pausing for duration,当工作流执行暂停动作的时候,当前工作流事件线程挂起,所以一般恢复执行的时间: 暂停时间< 恢复时间< 暂停时间+工作流timer job的间隔

以上是在正常情况下的恢复时间,很多时候这个工作流恢复时间会加长,有的一天,两天,甚至1周,2周,最长的一个月都有可能,这是为什么呢?


其实这要从内部进行解释,一个一个工作流事件都是在thread里面执行的,当执行暂停动作的时候,也就是说当前thread挂起,不再占用CPU时间片,那么优先级相对也就低了。 这个时候有很多正在运行的工作流或者其他的任务占用CPU,而且他们thread的优先级又高于这个暂停的工作流优先级,所以CPU一直没有倒出时间去执行这个暂停动作。导致这个暂停动作一直在等待,直到CPU恢复这个线程。


4. 基于以上情况,也就说明系统一直处于忙碌状态,系统资源不足以按时处理任务,所以我们要查看系统性能,尽量去优化系统性能,让系统能够更快的处理任务,才能保证暂停按时恢复



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值