子流程时包含其他的活动、网关、事件等的活动。其本身构成一个流程,并作为更大流程的一部分。子流程完全在父流程中定义(这就时为什么经常被称作嵌入式子流程)。

子流程有两个主要的使用场景:

  • 子流程可以分层建模。很多建模工具都可以折叠子流程,隐藏子流程的所有细节,而只显示业务流程的高层端到端总览。
  • 子流程创建了新的事件范围。在子流程执行中抛出的事件,可以通过子流程边界上的边界事件捕获。因此为该事件创建了限制在子流程内的范围。

使用子流程也要注意以下几点:

  • 子流程只能有一个空启动事件,而不允许有其他类型的启动事件。请注意BPMN2.0规范允许省略子流程的启动与结束事件,然而当前的Activiti实现并不支持省略。
  • 顺序流不能跨子流程边界。

子流程标识为标准活动,即圆角矩形。若折叠了子流程,则只显示其名字与一个加号,提供了流程的高层概览:

若展开了子流程,则子流程的所有步骤都在流程边界内显示:

使用子流程的一个主要原因,是为特定事件定义范围,下面我们使用一个demo验证下:

1、创建子流程

其对应的xml如下:

  <process id="myProcess_1" isClosed="false" isExecutable="true" processType="None"><startEvent id="start" name="开始"/><userTask activiti:exclusive="true" id="commit" name="提交"/><subProcess activiti:exclusive="true" id="_4" name="SubProcess" triggeredByEvent="false"><startEvent id="subStart" name="子开始"/><userTask activiti:exclusive="true" id="subCommit" name="子提交"/><endEvent id="subEnd" name="子结束"/><sequenceFlow id="_15" sourceRef="subStart" targetRef="subCommit"/><userTask activiti:exclusive="true" id="subCheck" name="子审核"/><sequenceFlow id="_18" sourceRef="subCommit" targetRef="subCheck"/><sequenceFlow id="_19" sourceRef="subCheck" targetRef="subEnd"/></subProcess><userTask activiti:exclusive="true" id="check" name="审核"/><endEvent id="end" name="结束"/><sequenceFlow id="_11" sourceRef="start" targetRef="commit"/><sequenceFlow id="_12" sourceRef="commit" targetRef="_4"/><sequenceFlow id="_13" sourceRef="_4" targetRef="check"/><sequenceFlow id="_14" sourceRef="check" targetRef="end"/></process>

2、启动流程,查看当前任务表act_run_task,当前任务为“提交”:

3、查看流程实例表、流程运行表:

4、完成当前任务,流程继续往下走,再次查看当前任务表,可以看到子流程自动启动

5、查看流程实例表、流程运行表,生成了两个执行流:主流程、子流程。

PS: 流程边界事件这块,因为idea提供的bpmn插件,没有找到边界事件的控件,我没有试,有了解的朋友可以告诉我下,后期我再尝试。

Activity子流程——嵌入式流程相关推荐

  1. activity及其窗口显示流程

    时序图预览 activity及其窗口显示流程图 activity的启动流程可参考:activity启动流程图 关键代码分析 ActivityThread 接收框架 (ActivityTaskManag ...

  2. 深入理解Activity启动流程(三)–Activity启动的详细流程2

    本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--A ...

  3. Activity页面的绘制流程

    一.引言 很多朋友都认为Activity的页面绘制是在Activity的onResume方法执行完成就被成功绘制成功了,认为这个时候我们就可以看到我们写的页面了.那真的是这样嘛?其实并不然,Activ ...

  4. 驰骋工作流程引擎——流程设计器操作说明书

    CCFlow.org 2011年8月修订 目录 1总体说明 3 2流程创建 3 流程创建 4 流程的基本元素 4 流程模式 4 创建简单的流程 4 流程属性 4 节点属性 5 基本属性 6 按钮标签 ...

  5. 深度学习大厂前端项目开发全流程全流程

    用户审美的要求越来越高,也就使得越来越多的公司和企业注重线上用户的体验,都想要向外界传达出众的气质形象和重要信息,所以,Web前端人员的需求也越来越大. 深度学习大厂项目开发全流程全流程 在国外企业, ...

  6. Activity的setContentView的流程

    最简单的Activity中的内容大致是这样的: public classMainActivity extends Activity { @Overridepublic voidonCreate(Bun ...

  7. 从vue文件中抽取出子组件的流程及过程中踩过的坑

    流程: 1. 确保注册.引入子组件的正确性: 创建一个新的vue文件,包含基本的template,及export的内容,其中可简单包含空的data函数.暂时先不把子组件中的代码移出.在父组件中impo ...

  8. 点击应用图标-应用(Activity)的启动流程

    一 前言 点击应用图标后会去启动应用的LauncherActivity,如果LancerActivity所在的进程没有创建,还会创建新进程,整体的流程就是一个Activity的启动流程.Activit ...

  9. 嵌入式系统linux开发流程,嵌入式系统的定义及嵌入式系统的开发流程

    描述 1.嵌入式系统的定义 以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能.可靠性.成本.体积.功耗的严格要求的专用计算机系统. 2.嵌入式系统的组成 硬件部分:嵌入式微处理器. ...

最新文章

  1. 最高效的回文数(C语言实现)
  2. android studio编译找不到程序包,【图片】哥哥们,android studio 打包的安装包手机无法识别怎么破【androidstudio吧】_百度贴吧...
  3. SAP Fiori Launchpad的后台配置路径
  4. powershell运行D盘java_PowerShell:使用相对路径从快捷方式运行脚本
  5. “约见”面试官系列之常见面试题第二十七篇之vue-router的重要属性
  6. Windows XP SP3 最终发布日期公布
  7. c#分页读取GB文本文件
  8. 跨浏览器测试工具推荐
  9. android双usb麦克风,USB麦克风24bit192K单麦芯片方案-SSS1630
  10. 使用tcl文件分配管脚
  11. 向Spark集群提交任务
  12. c#语法复习总结(1)-浅谈c#.net
  13. 只要学会它,再多 Bug 也不怕
  14. 前端模拟数据(mock数据)的方法一:访问该项目的静态资源目录
  15. ShellExecute、ShellExecuteEx和SHELLEXECUTEINFO 的使用
  16. 做到这一点,帮你每年多赚10万!
  17. 关于C++里const的pitfall
  18. Linux下无法使用v-2-ray
  19. 软工专硕考研_18武汉理工大学软工专硕考研经验分享(学渣版)
  20. 无法删除文件夹,文件,出现指定的文件名无效或太长,请指定另一文件名

热门文章

  1. WebView的简单介绍和Android使用WebView无法显示网页
  2. GLES2.0中文API-glShaderBinary
  3. 基于HarmonyOS分布式小游戏之你画我猜
  4. objective-c 语法快速过(5)
  5. java 正则拼音_匹配中文普通话汉字拼音正则表达式
  6. ADN: Artifact Disentanglement Network for Unsupervised Metal Artifact Reduction
  7. 计算机专业答题神器,答题神器哪个好用 答题神器对比测评
  8. python3问题-python多线程
  9. laravel artisan命令大全
  10. setTimeout with a shorter delay