camunda-bpmn-事件子流程(Event Subprocess)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了camunda-bpmn-事件子流程(Event Subprocess)相关的知识,希望对你有一定的参考价值。

参考技术A        事件子流程是一个被事件触发的子流程。事件子流程可以加在流程层级(与流程实例平级),也可以增加在子流程层级(与子流程内的实例平级)。事件子流程的触发是一个被配置的开始事件。因此,空开始事件不被事件子流程支持。事件子流程可以被message events, error events, signal events, timer events, or compensation events触发。当作用域(流程实例或者子流程)持有的事件子流程被创建时,开始事件的订阅被创建。当这个作用域结束时,订阅被删除。
       事件子流程可以是可中断的,也可以是不可中断的。可中断子流程会取消掉当前作用域内的任何执行。不可中断事件子流程会创建一个新的并行执行。可中断事件子流程只能被触发一次,对于作用域内持有它的活动。不可中断事件子流程可以被触发多次。无论子进程是中断的还是非中断的,都是使用触发事件子进程的启动事件来配置的。
       事件子流程可能没有incoming和outgoing流程序列。因为事件子流程是由事件触发的,所有incoming流程序列是没有意义的。当一个事件子流程结束了时,要么是当前作用域被结束了(可中断事件子流程),要么是当前执行产生的不可中断子流程被结束了。
       事件子流程看着像一个被虚线轮廓包围起来的嵌入式子流程。

它的xml表示与嵌入式子流程是一样的,只是triggeredByEvent属性的值必须是true:

例子(Example):
       下面的例子是一个被错误开始事件(Error Start Event)触发的事件子流程。这个事件子流程是流程级的,也就是说它的作用域时流程实例:

上面的事件子流程的xml表示:

       正如前面所说,事件子流程也可以添加到嵌入子流程中。如果它被添加到嵌入式子流程中,它就成为了边界事件的替代者。看下面两个流程图。两个嵌入式子流程都会抛出一个错误事件。这个错误事件都会被捕获并且被处理。

而不是:

以上是关于camunda-bpmn-事件子流程(Event Subprocess)的主要内容,如果未能解决你的问题,请参考以下文章

camunda-bpmn-网关(Gateways)

滑动冲突的补充——Event的流程走向

Flowable 的event介绍

Caddy源码阅读启动流程与 Event 事件通知

事件传递和响应机制

Flowable入门系列文章59 - 事件子流程