camunda-bpmn-嵌入式子流程(Embedded Subprocess)

Posted

tags:

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

参考技术A        嵌入式子流程是一个包含其他活动、网关、事件的流程。它自身表现为一个跟大的流程的一部分。嵌入式子流程定义在父流程的内部,这也是为啥被叫做嵌入式子流程。

子流程被可视化为一个典型的活动,即一个圆角矩形。如果子流程被折叠,则只显示名称和加号,给出流程的高级概览。

如果子流程展开了,子流程的步骤会展示在子流程的边界内。

       使用子流程的主要原因是为事件定义了一个作用域。下面的流程展示了这个作用:如果我们被邀请去吃晚餐,我们就会取消我们的做饭流程。然而,如果我们已经吃过了,我们就不会再接手邀请。更技术的术语讲,消息事件的作用域是子流程,所以只有在子流程是活跃的时候,消息才能被接收。

子流程通过子流程元素定义。所有的活动、网关、事件等等,作为子流程的部分,都需要被包含在这个元素内。

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-嵌入式子流程(Embedded Subprocess)的主要内容,如果未能解决你的问题,请参考以下文章

camunda-bpmn-网关(Gateways)

flowable 上一节点任务撤回-(5)嵌入式子流程

discord.Embed 不被视为嵌入 discord.py

Discord.py:嵌入作者在编辑时返回 embed.Empty

Mongoid查询嵌套embed文档通过属于和嵌入多个

html中用embed嵌入视频,怎么没有图像