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)的主要内容,如果未能解决你的问题,请参考以下文章
discord.Embed 不被视为嵌入 discord.py