在taskctl里做定时任务时,是用翻牌机制好还是用定时器好呢?

浏览: 1271

我们来先看看用“condition+modivarv ”的翻牌机制与定时器 做定时调度的大致步骤。

1、在流程容器中采用condition+modivarv来定时调度(作业)。

其原理是通过流程自身的定时条件判断来实现的,如下代码:

<nulljob>
<name>startctljob</name>
<jobdesc>启动触发控制节点</jobdesc>
<condition>if($(startdatetime)&lt;systime('yyyymmddhhmiss')) CTL_DOIT else CTL_WAIT</condition>
</nulljob>
<!--
调实际业务流程
-->
<flow>
<name>callbussflow</name>
<progname>Demo_zbussflow</progname>
<jobdesc>调实际业务处理流程</jobdesc>
</flow>
<!--
一、最后修改下次启动时间变量,通过modivarv任务类型实现
二、范例中表示每天定时启动: $(addday($(startdatetime), 'yyyymmddhhmiss', 1)
三、其他周期表达如下:
1. 每个5分钟:$(addminute($(startdatetime), 'yyyymmddhhmiss',5)
2. 每隔8小时:$(addhour($(startdatetime), 'yyyymmddhhmiss',8)
-->
<modivarv>
<name>passflow</name>
<para>varname=startdatetime,varvalue=$(addday('$(startdatetime)', 'yyyymmddhhmiss', 1))</para>
<jobdesc>翻牌:修改变量</jobdesc>
</modivarv>

2、在定时器容器中使用timingplan属性来实现定时功能。如下代码:

 <!--
每5分钟启动: <timingplan>* m 5</timingplan>
每5秒启动:<timingplan>* s 5</timingplan>
每5小时启动:<timingplan>* h 5</timingplan>
每天10点1分1秒启动:<timingplan>100101 d 1</timingplan>
-->
<flow>
<name>callbussflow</name>
<progname>Demo_zbussflow</progname>
<timingplan>* m 5</timingplan>
<jobdesc>调实际业务处理流程</jobdesc>
</flow>

我们可以看到,使用定时器的timingplan属性来处理定频定时的调度更简单、也更直观。这对于初学者也能够很好的理解定时调度,而且操作起来更方便。

这两种方式都是可以用来作为定时调度的方法。采用“condition+modivarv翻牌机制”更灵活,采用“定时器timingplan属性”更直观。如果是简单定时定频的调度逻辑,我们推荐采用“定时器timingplan属性”。

推荐 0
本文由 ETL批量调度-Taskctl 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册