sub-process(activiti学习笔记——Sub-Process)

发布时间:2025-12-10 19:25:16 浏览次数:5

activiti学习笔记——Sub-Process-sub-process/usr/libexec/cydia

activiti学习笔记——Sub-ProcessSub-ProcessSub-Process是包含activiti、gateway、event等的activity,自身是一个process,也是更大的process的一部分。Sub-Process完全定义在父process中,所以Sub-Process经常被称作嵌入式Sub-Process。Sub-Process有两个主要的用途:Sub-Process允许分层建模。许多建模工具允许分解…

Sub-Process

Sub-Process是包含activitigatewayevent等的activity,自身是一个process,也是更大的process的一部分。

Sub-Process完全定义在父process中,所以Sub-Process经常被称作嵌入式Sub-Process

Sub-Process有两个主要的用途:

Sub-Process允许分层建模。许多建模工具允许分解Sub-Process,隐藏Sub-Process的所有细节并显示业务流程的更高层次端到端概述。 Sub-Processevent创建新的scope。在Sub-Process执行期间抛出的event可以由Sub-Process边界上的boundary event捕获,从而为该event创建一个scope,该scope仅限于该Sub-Process

Sub-Process约束:

Sub-Process只能有一个none start event,不允许有其他启动事件类型。Sub-Process必须至少有一个end event。注意,BPMN 2.0规范允许省略Sub-Process中的start and end event,但是当前的Activiti实现不支持这一点。 sequence flow不能跨越Sub-Process边界。

Event Sub-Process

Event Sub-ProcessBPMN 2.0中新出现的。
Event Sub-Process是由event触发的Sub-Process
可以在process层级或Sub-Process层级添加。
用于触发Event Sub-Process的事件是使用start event配置的。由此可见,事件子流程不支持none start event。可以使用message eventerror eventsignal eventtimer eventcompensation event等事件触发Event Sub-Process
在承载Event Sub-Processscope(process instance或者Sub-Process)被创建时,start eventsubscription被创建。当scope被销毁时,subscription将被删除。

Event Sub-Process可以是interrupting,也可以是non-interrupting
interrupting Event Sub-Process取消当前scope内的任何execution
non-interrupting Event Sub-Process生成一个新的并发execution
对于承载Event Sub-Processscope的每次激活,interrupting Sub-Process只触发一次,而non-interrupting Sub-Process可以触发多次。
Event Sub-Process是否interrupting是使用触发Event Sub-Processstart event来配置的。

Event Sub-Process不能有任何incomingoutgoingsequence flow。由于Event Sub-Process是由event触发的,因此传入sequence flow没有意义。当Event Sub-Process结束时,要么当前scope结束(对于interrupting),要么non-interrupting Sub-Process派生的并发execution结束。

目前的限制:

Activiti只支持interrupting Sub-ProcessActiviti只支持使用error start eventmessage start event来触发Event Sub-Process
<subProcess  triggeredByEvent="true">...</subProcess>

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

如前所述,还可以将Event Sub-Process添加到embedded subprocess中。它将成为boundary event的替代。考虑以下两个流程图。在这两种情况下,embedded subprocess都会抛出一个error event,都是使用user task来捕获和处理。


在这两种情况下都执行相同的任务。然而,这两种模型选择之间存在差异:

embedded subprocess可以访问其作用域的局部变量。当使用boundary event时,为执行embedded subprocess而创建的execution会被离开boundary eventsequence flow删除。这意味着由embedded subprocess创建的变量不再可用。 当使用Event Sub-Process时,event完全由其所属的embedded subprocess处理。当使用boundary event时,event由父process处理。

这两个差异可以帮助您在解决特定的流程建模/实现问题时,确定boundary eventEvent Sub-Process哪个更适合。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477