环境
  JDK 1.8
  MySQL 5.6
  Tomcat 7
  Eclipse-Luna
  activiti 6.0

一、事件定义
1、定时器事件
(1)timeDate:指定时间触发
<timerEventDefinition>
<timeDate>2019-09-12T07:30:00</timeDate>
</timerEventDefinition>
ISO8601时间格式,如果要加时间需要前面加T。

(2)timeDuration:指定一个时间段之后执行
<timerEventDefinition>
<timeDuration>PT1S</timeDuration>
</timerEventDefinition>
S表示秒,M表示分,D表示天;P表示时间段,T表示精确到时间的时间段;

(3)timeCycle:指定定时器的运行周期
<timerEventDefinition>
<timeCycle>R2/PT1M</timeCycle>
</timerEventDefinition>
R表示需要执行的次数,R2/PT1M表示执行两次,每次持续1分钟
支持cron表达式:秒 分钟 小时 月份中的日期 月份 星期中的日期 年份

2、错误事件
处理流程中出现的异常。
举例:
<error ></errorEventDefinition>
</endEvent>
</process>

3、信号事件
使用信号给流程发送广播。
<signal ></signalEventDefinition>
...
</process>

4、消息事件
消息指向某个接收人,而不是整个流程。
<message ></messageEventDefinition>
...
</process>

5、取消事件
取消事件使用在事务子流程中。
<cancelEventDefinition></cancelEventDefinition>

6、补偿事件
补偿事件对于已经完成的流程做回退处理。
<componsateEventDefinition></componsateEventDefinition>

7、其他事件
条件事件:<ConditionalEventDefinition>
升级事件:<EscalationEventDefinition>
连接事件:<LinkEventDefinition>
终止事件:<TerminateEventDefinition>

参考:BPMN事件分类与事件定义

二、开始事件
1、无指定开始事件
不为开始事件指定任何触发条件。
<startEvent ></startEvent>

【Activiti学习之五】BPMN事件

2、定时器开始事件
<startEvent >
<timeCycle>PT1S</timeCycle>
</timerEventDefinition>
</startEvent>

【Activiti学习之五】BPMN事件

3、消息开始事件
<message ></messageEventDefinition>
</startEvent>

【Activiti学习之五】BPMN事件
4、错误开始事件
错误开始事件只能用在事件子流程中。
<error ></sequenceFlow>
</subProcess>
</process>

参考:开始事件

三、结束事件
1、无指定结束事件
<endEvent ></endEvent>

【Activiti学习之五】BPMN事件

2、错误结束事件
错误结束事件一般用在子流程中,一般和错误边界事件一起使用才有意义。
<endEvent ></errorEventDefinition>
</endEvent>

3、取消结束事件和取消边界事件
取消结束事件只能用在事务子流程中,该事件表示事务将会取消,并且会触发附在事务子流程上的取消边界事件。

参考:结束事件
四、边界事件
附属于某个流程元素(如任务、子流程等)的事件为边界事件。边界事件是Catching事件,会等待被触发,当边界事件被触发,当前的活动会被中断,并且当前的顺序流会发生转移。
1、定时器边界事件
需要注意的是:需要开启JobExecutor,cancelActivity属性为true表示原先的流程被中断,false表示不中断,继续执行
示例:
<process >
<timerEventDefinition>
<timeDuration>PT5S</timeDuration>
</timerEventDefinition>
</boundaryEvent>
....
</process>

【Activiti学习之五】BPMN事件

2、错误边界事件
错误边界事件依附在某个流程活动中,用于捕获子流程中抛出的错误,因此错误边界事件使用在嵌入子流程或调用子流程中。
<process >

4、补偿边界事件
使用了取消结束事件和取消边界事件,当事务子流程被取消时,会触发事务子流程里面的补偿边界事件,这些补偿边界事件会依附在事务子流程的活动中,除了在事务子流程中可以使用取消事件来触发补偿边界事件外,还可以使用补偿中间事件来触发补偿边界事件。

参考:边界事件

五、中间事件
中间事件是指可以单独作为流程元素的事件,BPMN2.0规范中所指的中间事件也包括边界事件。中间事件作为流程元素表示对事件的捕获与事件的触发,一类中间事件可以在流程中等待被触发,一类中间事件会在流程中自动被触发并抛出结果(触发信息)。
除了无指定Throwing中间事件外,其他事件均需要加入事件定义。

1、中间Catching事件
(1)定时器(Timer)中间事件
定时器中间事件一直等待被触发,当达到定义的时间条件后,该定时器中间事件会被触发,流程继续往下执行。
<process >
(2)信号(Signal)中间事件
一个信号中间Catching事件会等待被触发,直接到该事件接收到相应的信号,与其他事件不同的是,当信号事件接收到信号后,该信号不会被消耗掉,如果存在多个引用了相同信号的事件,那么当接收到信号时,这些事件被一并被触发,即使它们不在同一个流程实例中.


(3)消息(Message)中间事件

<intermediateCatchEvent >
<XXXEventDefinition/>
</intermediateCatchEvent>

2、中间Throwing事件:
(1)无指定(None)中间事件
(2)信号(Signal)中间事件
(3)补偿(Compensation)中间事件

<intermediateThrowEvent >
<XXXEventDefinition/>
</intermediateThrowEvent>

参考:中间事件 


六、补偿中间事件

参考:补偿中间事件

 

参考:疯狂工作流讲义(第2版)基于Activiti6.x 

相关文章: