camunda之——定时器事件(Timer Events)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了camunda之——定时器事件(Timer Events)相关的知识,希望对你有一定的参考价值。

参考技术A

     2.时间段(Time Duration)
     这个时间段指明了多久之后触发定时器事件,timeDuration元素被定义成timerEventDefinition元素的一个子元素(在bpmn的xml文件中),这个时间区间可以被写成ISO 8601的两种格式
     1.PnYnMnDTnHnMnS      //P表示日期的开始(年月日),T表示时间的开始(时分秒),即表示:固定n年n月n天n小时n分钟n秒钟后
     2. PnW                              //表示n周后

     3.时间周期(Time Cycle)
     指定一个重复的时间间隔,这对于那些需要周期性发起流程或者重复发送超时提醒的任务很有用。时间周期也支持两种时间格式,一种是遵循ISO 8601标准的时间周期

另一种是cron表达式
例子:

循环时间周期(ISO 8601)更适合需要循环固定次数的任务,corn表达式更适用于那些需要一直循环的任务,例如:固定时间定时发起的任务

     对一个定时器实例的修改,不会自动影响到后续的定时器实例,比如,一个定时器事件固定每30分钟执行一次,如果一个定时器实例的时间被改成在原来的基础上增加15分钟,则这个定时器将会在45分钟后被执行,它后面的一个会遵循原来间隔30分钟执行一次定时,在15分钟后执行,这之后的都是固定30分钟,按照原来的时间继续执行
     如果想要所有的定时器实例基于这个修改生效,可以通过指定cascade标识来实现,通过REST API或者ManagementService进行修改:

     可以在定时器时间的定义上使用表达式,这样你就可以通过流程变量来影响定时器,流程变量也必须遵循ISO 8601或者corn表达式

     例如2016-03-11T12:13:14这个配置,没有指明时区。在运行时,这个时间的时区是基于jvm所在地区的时区来的。这在某些请情况下会有问题,例如多个camunda部署在不同的时区地区。因此,在配置时间是,可以指明时区(2016-03-11T12:13:14Z,2016-03-11T12:13:14+01)

     定时器开始事件被用在,在给定的时间上创建流程实例,可以用在固定时间发起一个流程实例,也可以用在指定的时间间隔下循环创建流程实例

     定时器中间事件类似一个秒表,当流程到达定时器事件时,定时器开始计时,当到达时间后,流程离开定时器事件
     定时器中间事件被定义成一个中间捕获事件

     定时器边界事件类似秒表和闹钟,当流程执行到定时器边界事件所在的任务时,定时器开始计时,当到达时间后,任务被中断,并且流程沿着消息边界事件进行
     可中断定时器边界事件和不可中断的定时器边界事件的区别是:中断事件时默认的。不中断会导致任务不能被中断,且这个任务也会沿着定时器边界事件分支进行,是否被中断在cancelActivity属性中设置

以上是关于camunda之——定时器事件(Timer Events)的主要内容,如果未能解决你的问题,请参考以下文章

第九篇Camunda系列-事件篇-定时器事件

camunda之-bpmn-消息事件(Message Events)

定时器实现方式之TimerTaskTimer

C# System.Timers.Timer 类已用事件和定时器的一般注意事项

Python 之定时器

Python定时事件 Timer & sched