知识传送门 》》》》》》》》》》》》》》》》》》》

造句:“朋友”,“我的”,“是”,“小明” 。

方法之间可以相互调用,同理,流程定义之间也可以相关调用,达到流程定义复用的目的。

一:流程定义1

二:流程定义2

Called Element: 调用其它流程,值为其它流程Id。

三:启动和启动流程

@Test
public void delopyAllBpmn() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();processEngine.getRepositoryService().createDeployment().addClasspathResource("bpmn/LeaveProcess2.bpmn").name("请假流程").deploy();processEngine.getRepositoryService().createDeployment().addClasspathResource("bpmn/LeaveProcess1.bpmn").name("请假流程2").deploy();
}@Test
public void startProcessInstance() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();processEngine.getRuntimeService().startProcessInstanceByKey("LeaveProcess1");
}


四:发起申请

@Test
public void testApplyTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Task task = taskService.createTaskQuery().singleResult();taskService.setAssignee(task.getId(), "zhangsan");taskService.complete(task.getId());
}

张三发起请假流程,然后并审核自己,进入下一个节点,直接进入了LeaveProcess2.bpmn文件中定义的第一个节点(经理审批)。

调用子流程开启了2个流程实例。SUPER_EXEC_=2502流程实例1的执行流。

五:经理审批

@Test
public void testPMTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Task task = taskService.createTaskQuery().singleResult();taskService.setAssignee(task.getId(), "pm");taskService.complete(task.getId());
}

经理审批完,又回到了LeaveProcess1.bpmn中的人事审批了。

流程实例2执行完就删除了,剩下流程实例1。

六:人事审核

public void testHRTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Task task = taskService.createTaskQuery().singleResult();taskService.setAssignee(task.getId(), "hr");taskService.complete(task.getId());
}

调用子流程 CallActivityTask:每个流程都是独立的,会生成两个流程实例。


输入参数和输出参数


方法调用可以传参数,方法自身也有返回值。同样CallActivityTask同样可以有输入参数和输出参数。

zhangsan发起申请,并完成任务,同时设置pmAuditor变量最终赋值给pm变量,最后调用流程,进入到经理审批。

@Test
public void testApplyTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Task task = taskService.createTaskQuery().singleResult();taskService.setAssignee(task.getId(), "zhangsan");Map<String, Object> variables = new HashMap<>();variables.put("pmAuditor", "wangjingli");taskService.complete(task.getId(), variables);
}

经理直接审批结束,设置变量hrAuditor赋值给hr,结束流程2,回到流程1,进入人事审批。

@Test
public void testPMTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Task task = taskService.createTaskQuery().singleResult();Map<String, Object> variables = new HashMap<>();variables.put("hrAuditor", "zhaoHR");taskService.complete(task.getId(), variables);
}

人事直接审批完结束整个流程。

public void testHRTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Task task = taskService.createTaskQuery().singleResult();taskService.complete(task.getId());
}
public void leaveProcess1() {sout("zhangsan发起申请");String pmAuditor = "wangjingli";String hr = leaveProcess2(pmAuditor);sout(hr + "人事审批");
}public String leaveProcess2(String pm) {sout(pm + "经理审核");String hrAuditor = "zhaoHR";return hrAuditor;
}

知识传送门 》》》》》》》》》》》》》》》》》》》

Activiti7工作流引擎:进阶篇(七) 调用子流程 CallActivityTask相关推荐

  1. Activiti7工作流引擎:进阶篇(九) 内嵌子流程 SubProcess

    知识传送门 >>>>>>>>>>>>>>>>>>> 为什么普通人要想成佛就得经过九九八 ...

  2. Activiti7 工作流引擎入门

    Activiti7 工作流引擎入门 做课目的 一.适用人群: 普通人 不是每个人都能进入一线互联网大厂 BATJ 普通人,省城,软件公司,银行.政府做 二.适用项目:OA CRM ERP 系统 出差报 ...

  3. Activiti工作流引擎进阶【收藏可做笔记系列】

    Activiti工作流引擎进阶 Activiti进阶 一.流程实例 什么是流程实例 启动流程实例 并添加Businesskey(业务标识) 操作数据库表 查询流程实例 关联BusinessKey 挂起 ...

  4. activity工作流调用子流程 callActivity

    最近项目中需要用到工作流,其中需要用到工作流中的调用子流程功能,折腾半天完工之后记录一下. 主流程图 子流程图 一个简单的例子说明一下 最关键的是在调用子流程这个模块的properties 中配置要调 ...

  5. Activiti7工作流引擎:基础篇(一) 简介与IDEA插件安装

    你不要一直不满他人,你应该一直检讨自己才对. 零:审批场景 对于请假流程我们有以下两种做法: 传统方式:写一个请假条,拿着请假条跑到项目经理那里签字,然后再拿着请假条去部门经理那里签字,然后再拿着请假 ...

  6. 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot

    本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...

  7. Activiti7工作流引擎

    什么是Activiti7 Activiti 下载地址: http://activiti.org/download.html        Activiti 是一个工作流引擎, activiti 可以将 ...

  8. Activiti7工作流引擎-环境搭建及创建数据库

    第1章 什么是工作流 1.1工作流介绍 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是"使在多个参与者 之间按照某种预定义的规则自动进行传递文档.信息或任 ...

  9. [安全攻防进阶篇] 七.恶意样本检测之编写代码自动提取IAT表、字符串及时间戳溯源

    系统安全绕不开PE文件,PE文件又与恶意样本检测及分析紧密相关.前文作者带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原.这篇文章主要介绍了PE文件基础知识及恶意样本检测的三种处理知识, ...

最新文章

  1. ubuntu网卡配置
  2. 将页脚保持在页面的底部——Javascript+Css实现
  3. mysql base64
  4. 1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】
  5. 计算机兴趣小组意义,信息技术兴趣小组开展之我见
  6. 作者:高丰(1986-),英国南安普敦大学计算机博士,现为开放数据与创新独立咨询顾问,兼复旦大学数字与移动治理实验室特邀研究员。...
  7. 关于三星某些系列笔记本电脑无法安装Windows10的原因及解决办法
  8. android 异步图片加载 开源,异步加载图片BitmapFun分析
  9. LED显示驱动(八):显示驱动调试问题
  10. 执行力强的人九个特点
  11. php简历掌握技能,php简历技能怎么写
  12. 深入RxJava2 源码解析(二)
  13. Excel图标美化技巧
  14. sat考试用计算机,SAT考试怎么选择计算器
  15. 关于“外接硬盘被写了保护的解决方法”
  16. 体验5款陌生社交App后,发现全是“金钱”套路
  17. ye读春秋左传系列视频讲解
  18. 任务栏创建返回桌面快捷图标
  19. 英国诺丁汉大学的AIMS与虚拟现实技术
  20. nas文件服务器改造,nas 文件服务器的配置

热门文章

  1. 试题 历届试题 对局匹配(动态规划)保证简单
  2. 进行网络电视直播的几种方法
  3. 计算机维护与管理结束语,计算机系统维护专业毕业论文答辩开场白结束语精品范文...
  4. 中国农业大学的计算机科学与技术,孙瑞志谈中国农业大学计算机科学与技术专业...
  5. 文献阅读_Joint Prostate Cancer Detection and Gleason Score Prediction in mp-MRI via FocalNet
  6. PHP 接口和抽象类的区别
  7. 【练习笔记(第一次)】2020年数学建模国赛C题:数据处理、源代码
  8. 网站页面一键克隆,自动归类资源文件!PHPCUSTOM环境内置功能
  9. CSS3新增属性——过渡和动画(2D属性,3D动画)
  10. matlab实现计算全息,MATLAB中二元傅里叶变换计算全息图的算法