调度计划

在系统管理-调度计划-流程服务-工作流服务下内置了两个调度计划,异步消息过期调度计划与异步消息定时捡漏计划,今天分别介绍这两个调度计划。
1. 异步消息过期调度计划
1.1介绍


这个调度计划默认每隔三分钟执行一次,异步消息过期调度计划主要应用在三个场景中
1.2 应用场景
场景一:错误重试时
工作流的流转都是后台通过异步消息进行流转的,在流转的过程中会执行节点的相关逻辑,比如计算参与人、创建任务、执行业务插件等,如果执行插件的过程中出现业务错误,系统会隔一段时间后进行重试,如果下次执行依旧失败,会再次进行重试,最多重试三次,如果三次依旧失败,会记录到异常中心中等待人工激活重试。

场景二:定时等待时
工作流的等待节点可以设置定时等待或者按条件等待,都会隔一段时间判断下是否满足定时条件,如果满足条件,自动从等待节点流出。

场景三:任务时限控制
任务创建之后,设置任务的有效期,可在任务到期之前和到期之后进行提醒或者自动处理.

任务的有效期为3天,当任务到期之前的2个小时,发送消息预警消息提醒处理人尽快处理,如果在超期1天后,依然不处理,自动进行处理
下面我们探究两个问题,真的会在到达的时间时执行吗?
l 3分钟重试一次,真的准确是3分钟吗?
l 等待1小时,真的准确是1小时吗?
l 限期之前2小时发送预警提醒,真的准确是2个小时吗?
答案不是的,受到下面两个因素的限制。
第一:到期时间 & 扫描时间
每一个被扫描的任务都会根据一个基准时间计算出一个到期时间,每次定时调度到达后,会根据当前时间和过期时间进行比较,如果大于过期时间,就认为已经到期了,会将任务查询出来执行响应的业务动作。

首先必须到达到期时间才会执行,所以最快的扫描时间就是刚好到达到期时间被扫描出来,最晚的扫描时间是上次扫描完还未到达到期时间,需要等待一个扫描周期才能扫描出来。这样做的目的是从性能上考虑,避免了每个任务都需要定时扫描,减轻了调度服务器的压力。
第二:扫描数量
默认每次扫描100个到期的任务,如果超过100个会在后续的扫描周期内扫描出来进行处理,避免一次性扫描过多的内容,可以通过参数workflow.timerjob.querylimit来修改默认扫描的数量,这个数量必须大于100. 这样做的目的也是从性能上考虑,避免如果瞬间流量过大,一次性扫描出的内容过多,对服务器造成较大压力。如果紧急需要,可以加快调度的频率,并且将扫描数量加大,建议值不超过1000.
2. 异步消息自动恢复
2.1 介绍
在系统管理-调度计划-流程服务-工作流服务下内置了两个调度计划,异步消息过期调度计划与异步消息定时捡漏计划,上篇文章,我们介绍了异步消息过期调度计划,今天接着介绍异步消息定时捡漏计划。
这个调度计划默认每隔八分钟执行一次。
二、应用场景
工作流的流转都是后台通过异步消息进行流转的,在流转的过程中会执行节点的相关逻辑,比如计算参与人、处理任务、执行业务插件等.
异步消息的分发依赖于底层的后台调度和MQ服务,如果依赖的底层服务出现问题,导致本地消息无法发送,
调度计划
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



