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

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

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

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

  <nulljob>
    <name>startctljob</name>
    <jobdesc>启动触发控制节点</jobdesc>
    <condition>if($(startdatetime)<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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值