`

Activiti5用户手册---Events---Timer Event Definitions

阅读更多

好久以前翻译的了,今天整理下发出来吧!翻译的可能不到家,请大家多多包含!

 

Events(事件)

事件通常就是在流程生命期中一些发生事情的模拟。事件总是被定义成一个圆形图形。在BPMN2.0中,存在两种主要的事件类型:捕获和抛出事件。

 

@Catching:当流程执行到这个事件,流程会等待一个触发。触发的类型是内部有图形,或者是在xml有定义的类型。捕获事件和抛出事件的图形不想同的点就是图标不是完全填充的。也就是白色的。

@Throwing:当流程执行到这个事件,触发会被点燃。内部通行都是由黑色填充的。

 

Event Definitions (事件定义)

 

事件定义定义了一个事件语义。没有事件定义,一个事件就没有任何特别的。一个开始事件的实例,这个事件定义不是很特别什么正确的启动了事件。(开始事件对于一个流程的启动来说并没有什么别特的意思只是启动了流程而已)。如果我们增加一个事件定义去开启事件(就像是一个定时器事件定义实例),我们声明什么类型事件去启动流程,(在这种情况下,定时器事件定义,事实是一个正确的切入到达时间点)。

 

Timer Event Definitions(定时器事件定义)

定时器事件都是又定义的定时器触发的。他们可以被当作start event,intermediate event或者boundary event。

 

定时器的定义必须有一个确切的元素:

 

@timeDate:当触发被点燃,这个时间格式指定必须满足ISO8601格式。例子如下

 

<timerEventDefinition>
    <timeDate>2011-03-11T12:13:14</timeDate>
</timerEventDefinition>

 @timeDuration:定时器启动过多久会被触发,一个时间间隔可以在timerEventDefinition子元素中定义。格式也遵照ISO8601.例子

 

 

<timerEventDefinition>
    <timeDuration>P10D</timeDuration>
</timerEventDefinition>

 意思是每10天运行一次

 

@timeCycle:特殊的重复间隔,就是那种通常被用作定期的启动一个流程,或者发送多个提醒给延期的用户任务。时间园元素可以有两种格式。第一种格式是一个时间间隔循环,按照iso8601标准。例子

 

<timerEventDefinition>
    <timeCycle>R3/PT10H</timeCycle>
</timerEventDefinition>

 每10个小时重复一起,且总共重复3次。

 

此外,你可以定义时间园用cron表达式,例子表示了每5分钟触发一次,在正点时间开始。

 

0 0/5 * * * ?

 说明:在unix中第一个符号表示秒,不表示分钟。

时间间隔循环更适合处理相对定时器,那些需要遵守特别的时间点(时间到了用户任务就会启动),当cron表达式可以完全的处理定时器,详细的帮助请看定时器启动事件。

 

 

你可以使用定时器事件定义表达式,用来做很多事,所以你可以用流程变量来影响基础定时器定义。流程变量必须包含ISO8601的字符串来适合定时器类型。

 

<boundaryEvent id="escalationTimer" cancelActivity="true" attachedToRef="firstLineSupport">
     <timerEventDefinition>
      <timeDuration>${duration}</timeDuration>
    </timerEventDefinition>
 </boundaryEvent>

   

说明:定时器只会在工作的执行者是可用的状态下被点燃。(也就是说,jobExecutorActivate 需要在activiti.cfg.xml中设置成true,如果这个job executor默认是不可用的)

 

 

 

 

0
2
分享到:
评论
2 楼 yy756127197 2017-07-27  
<timeDuration>P10D</timeDuration> 
是10天之后执行一次吧,不是循环
1 楼 云端帕帕 2015-07-23  
 

相关推荐

Global site tag (gtag.js) - Google Analytics