中间事件提供的特殊功能可以用来处理流程执行过程中抛出、捕获的事件,具体包括边界事件、中间捕获事件、中间抛出事件。每种中间事件的图形都有一个共同特点:以双线圆形表示。
边界事件
边界事件是绑定在活动上的“捕获型”事件,会一直监听所有处于运行中活动的某种事件的触发,在捕获到事件之后中断活动,然后从边界事件类型的输出流继续执行。
一旦触发边界事件,当前的活动就会被终端,然后按照边界事件之后的输出流执行。
边界事件和所关联的活动有一个特殊的关系“附加”,而且一个活动只能绑定一个边界事件;每个边界事件类型都是通过属性attachedToRef指定“附加”到抛出边界事件活动上
1、定时器边界事件
定时器边界事件需要附属在一个非自动任务(用户任务等)、调用活动、子流程上,在上游任务执行完成之后开始倒计时预设的事件,到达预设事件之后触发定时器边界事件的输出流。
2、异常边界事件
异常边界事件用来捕获嵌入子流程或调用活动抛出的异常。异常在抛出之后被主流程的异常边界事件捕获,同时嵌入子流程或调用活动中的活动也被终端执行。
3、信号边界事件
信号边界事件可以捕获流程执行过程中抛出的信号,可以“附加”在各种活动和子流程上。
信号边界事件不仅可以捕获本流程的信号,还可以捕获到其他流程的信号事件,而且如果在一个活动或子流程上定义了多个信号边界事件并监听同一个信号,则会同时触发,因为对应的信号抛出事件是全局的 。
4、取消边界事件
取消边界事件是专门针对事务子流程所设立的,用来捕获子流程中抛出的取消事件,在结合事务子流程使用时需要注意几点:
一个事务子流程只允许附加一个取消边界事件;
如果事务子流程中嵌套了子流程,仅仅触发已经完成了的子流程的补偿实际那。
对于多实例的事务子流程,如果其中一个实例触发了取消事件,那么其他的实例也同样会被触发取消边界事件。
5、补偿边界事件
补偿边界事件用于事务子流程(嵌入子流程不支持补偿边界事件)中针对事务失败后的业务逻辑进行补偿
中间捕获事件
中间捕获事件必须连接一个输入流和一个输出流,所以根据这个特性命名为中间捕获事件。另外,所有的中间捕获事件的图标都是空心的。
1、定时器中间捕获事件
2、信号中间捕获事件
3、消息中间捕获事件
中间抛出事件
中间抛出事件和中间捕获事件时2个相互依赖的关系,中间捕获事件需要有事件抛出才能触发,而中间抛出事件需要有对u应的捕获事件接受才有意义。
中间抛出事件一般用于在一个任务完成后需要发送通知或执行其他系统任务的场景,工作流引擎会对抛出的事件进行传播(不同类型的事件有不同的作用范围)。
1、空中间抛出事件
2、信号中间抛出事件