Flowable入门系列文章25 - Activity解读 01
Posted 分享牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable入门系列文章25 - Activity解读 01相关的知识,希望对你有一定的参考价值。
事件被用来模拟流程生命周期中发生的事情。事件总是被视为一个圆圈。在BPMN 2.0中,存在两个主要事件类别:捕捉事件和抛出事件。
- 捕捉:当进程执行到达事件时,它将等待触发器发生。触发器的类型由XML中的内部图标或类型声明定义。捕捉事件在视觉上与未被填充的内部图标(仅为白色)的抛掷事件不同。
- 抛出:当进程执行到达事件时,触发器被触发。触发器的类型由XML中的内部图标或类型声明定义。投掷事件在视觉上与黑色内部图标的捕捉事件不同。
1、事件定义
事件定义定义事件的语义。没有事件定义,事件“没什么特别的”。例如,一个没有事件定义的启动事件没有任何事情可以指定启动过程。如果我们将事件定义添加到开始事件(例如,定时器事件定义),我们声明事件的“类型”启动过程(在定时器事件定义的情况下,某个时间点的事实是到达)。
2、定时器事件定义
定时器事件是由定义的定时器触发的事件。它们可以用作开始事件,中间事件或边界事件。时间事件的行为取决于使用的业务日历。每个计时器事件都有一个默认的业务日历,但业务日历也可以作为计时器事件定义的一部分给出。
<timerEventDefinition flowable:businessCalendarName="custom">
...
</timerEventDefinition>
其中businessCalendarName指向流程引擎配置中的业务日历。当业务日历被省略时,使用默认业务日历。
定时器定义必须具有以下的一个元素:
- timeDate。这种格式规定了一个ISO 8601格式的固定日期,当触发器被触发时。例如:
<timerEventDefinition>
<timeDate>2011-03-11T12:13:14</timeDate>
</timerEventDefinition>
- timeDuration。要指定定时器在触发之前应该运行多长时间,可以将timeDuration指定为timerEventDefinition的子元素。使用的格式是ISO 8601格式(按照BPMN 2.0规范的要求)。例如(间隔持续10天):
<timerEventDefinition>
<timeDuration>P10D</timeDuration>
</timerEventDefinition>
- timeCycle。指定一个重复的时间间隔,这对于定期启动进程或者对于过期的用户任务发送多个提醒是有用的。时间循环元素可以是两种格式之一。首先是ISO 8601标准规定的循环时间的格式。示例(3个重复间隔,每个持续10个小时):
还可以在timeCycle上指定endDate作为可选属性,或者在时间表达式的末尾指定endDate,如下所示:。达到endDate时,应用程序将停止为此任务创建其他作业。它接受静态值ISO 8601标准,例如“2015-02-25T16:42:11 + 00:00”或变量,例如 ${EndDate}R3/PT10H/${EndDate}
<timerEventDefinition>
<timeCycle flowable:endDate="2015-02-25T16:42:11+00:00">R3/PT10H</timeCycle>
</timerEventDefinition>
<timerEventDefinition>
<timeCycle>R3/PT10H/${EndDate}</timeCycle>
</timerEventDefinition>
如果两者都被指定,则指定为属性的endDate将被系统使用。
目前,只有BoundaryTimerEvents和CatchTimerEvent支持EndDate功能。
此外,您可以使用cron表达式指定时间周期; 下面的例子显示触发每5分钟发射一次,从小时开始:
0 0/5 * * *?
请参阅本教程使用cron表达式。
注意:第一个符号表示秒,而不是像普通的Unix cron那样分钟。
循环持续时间更适合于处理相对于某个特定时间点(例如,用户任务开始的时间)计算的相对定时器,而cron表达式可以处理绝对定时器,这对于定时器启动事件。
您可以使用表达式来定时器事件定义,通过这样做,您可以影响基于过程变量的定时器定义。过程变量必须包含用于适当定时器类型的ISO 8601(或循环类型的cron)字符串。
<boundaryEvent id="escalationTimer" cancelActivity="true" attachedToRef="firstLineSupport">
<timerEventDefinition>
<timeDuration>${duration}</timeDuration>
</timerEventDefinition>
</boundaryEvent>
注意:启用作业或异步执行时,定时器,仅启动(jobExecutorActivate或asyncExecutorActivate必须设置为true中flowable.cfg.xml,由于
工作和异步执行默认情况下禁用)。
上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
以上是关于Flowable入门系列文章25 - Activity解读 01的主要内容,如果未能解决你的问题,请参考以下文章
Flowable入门系列文章20 - 基本的Flowable概念一
Flowable入门系列文章80 - Flowable Designer部署功能