简介
版权声明:本文为CSDN博主「司马缸砸缸了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接
定时器事件定义
定时器事件是根据指定的时间触发的事件。可以用于 开始事件,中间事件 或 边界事件。
- timeDate。使用 ISO 8601 格式指定一个确定的时间,触发事件的时间。示例:
<timerEventDefinition>
<timeDate>2011-03-11T12:13:14</timeDate>
</timerEventDefinition>
- timeDuration。指定定时器之前要等待多长时间, timeDuration可以设置为timerEventDefinition的子元素。 使用ISO 8601规定的格式 (由BPMN 2.0规定)。示例(等待1天)。
<timerEventDefinition>
<timeDuration>P1D</timeDuration>
</timerEventDefinition>
- timeCycle。指定重复执行的间隔, 可以用来定期启动流程实例,或为超时时间发送多个提醒。 timeCycle元素可以使用两种格式。第一种是 ISO 8601 标准的格式。示例(重复3次,每次间隔10小时):
<timerEventDefinition>
<timeCycle>R3/PT10H</timeCycle>
</timerEventDefinition>
或者,你可以使用cron表达式指定timeCycle,下面的例子是从整点开始,每5分钟执行一次:
0 0/5 * * * ?
也可以在定时器事件定义中使用表达式,这样你就可以通过流程变量来影响那个定时器定义。 流程定义必须包含ISO 8601(或cron)格式的字符串,以匹配对应的时间类型。
<boundaryEvent id="escalationTimer" cancelActivity="true" attachedToRef="firstLineSupport">
<timerEventDefinition>
<timeDuration>${duration}</timeDuration>
</timerEventDefinition>
</boundaryEvent>
定时器边界事件
定时边界事件就是一个暂停等待警告的时钟。当流程执行到绑定了边界事件的环节, 会启动一个定时器。定时器边界事件存在可中断与不可中断两类,可以为boundaryEvent元素设置cancelActivity属性,如果设置为true,那么原来的执行流将会被中断,设置为false,则原来的执行流仍然存在。定时器边界事件在一些限时场景比较合适,例如:一个任务先是由初级工程师处理,当初级工程师1分钟后还没处理完成,就交给高级工程师处理。
设计流程图
测试
发布流程
启动流程(测试查询指定用户任务,睡眠一分钟后,再次查询任务)
当超时之后,act_ru_timer_job表中的记录会消失
act_ru_task表中的初级工程师会消失,更换为高级工程师
具体流程细节如下
到这里定时边界事件测试完毕。