本帖最后由 快崩溃的小马甲 于 2017-09-11 11:34 编辑
我们来先看看用“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属性”。
|