activiti工作流学习(二)
流程连线
流程开始→某个学生请假(一般情况/特殊情况)→班长审批通过→(进行判断,如果是一般情况直接结束;如果是特殊情况流程指向教师审批,教师审批结束后)→结束
任务设定
学生请假,执行人设置为 ${student}
班长审批,执行人设为固定值,班长
教师审批,执行人设为固定值,教师
连线:
右侧组件栏选择connection
将班长审批指向教师审批,两者均指向结束.
点击班长审批指向结束的连线,为连线设置属性
codition为执行条件,${sta==‘一般情况’}为boolean型判断条件
点击班长审批指向教师审批的连线,为连线设置属性
codition为执行条件,${sta==‘特殊情况’}为boolean型判断条件
完成后保存生成MyProcess.png文件.
流程DEMO
创建23张表
// 读取配置文件 创建ProcessEngine实例 生成activiti23张表ProcessEngineConfiguration pec = ProcessEngineConfigurationImpl.createProcessEngineConfigurationFromResource("activiti.cfg.xml");ProcessEngine pe = pec.buildProcessEngine();
部署设计资源
/*** 部署设计资源 即之前创建的流程设计图*/@Testpublic void deploy() {pe.getRepositoryService().createDeployment().addClasspathResource("MyProcess.png").addClasspathResource("MyProcess.bpmn").name("学生请假").deploy();}
启动流程实例
学生发起请假
/*** 启动流程实例*/@Testpublic void start() {// 通过id启动 启动时赋予流程执行人即 刚才${}中的值//此时act_ru_execution act_ru_task 两张表中有数据Map<String, Object> map = new HashMap<>();map.put("student", "武当王野");ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey("myProcess", map);}
任务完成
学生发起请假流程一
/*** 完成学生请假申请任务* 此时act_ru_execution act_ru_task 两张表中没有数据* 相对应的 在历史表中有数据*/@Testpublic void completeTask() {Map<String, Object> map = new HashMap<>();map.put("sta", "特殊情况");//流程图 流程连线的判断依据,staTask task = pe.getTaskService().createTaskQuery().singleResult();pe.getTaskService().complete(task.getId(),map);//通过任务id来完成任务 此处将判断依据传入}
查看历史数据
历史任务id2506
历史任务名称学生请假
历史任务创建时间Wed Jan 22 11:33:25 CST 2020
历史任务结束时间Wed Jan 22 11:35:46 CST 2020
历史任务执行人武当王野
历史任务id5003
历史任务名称班长审批
历史任务创建时间Wed Jan 22 11:35:46 CST 2020
历史任务结束时间null
历史任务执行人班长
由打印出的历史数据得知,该学生请假(特殊情况)完成后进入班长审批.
继续执行班长审批任务
/*** 完成班长执行任务* 此时act_ru_execution act_ru_task 两张表中没有数据* 相对应的 在历史表中有数据*/@Testpublic void completeTask() {Map<String, Object> map = new HashMap<>();map.put("sta", "特殊情况");//流程图 流程连线的判断依据,staTask task = pe.getTaskService().createTaskQuery().singleResult();pe.getTaskService().complete(task.getId(),map);//通过任务id来完成任务 此处将判断依据传入}
班长审批完成,sta=‘特殊情况’ 进入教师审批
历史任务id2506
历史任务名称学生请假
历史任务创建时间Wed Jan 22 11:33:25 CST 2020
历史任务结束时间Wed Jan 22 11:35:46 CST 2020
历史任务执行人武当王野
历史任务id5003
历史任务名称班长审批
历史任务创建时间Wed Jan 22 11:35:46 CST 2020
历史任务结束时间Wed Jan 22 11:51:33 CST 2020
历史任务执行人班长
历史任务id7502
历史任务名称教师审批
历史任务创建时间Wed Jan 22 11:51:33 CST 2020
历史任务结束时间null
历史任务执行人教师
再次执行完成审批
/*** 教师完成任务* 此时act_ru_execution act_ru_task 两张表中没有数据* 相对应的 在历史表中有数据*/@Testpublic void completeTask() {Map<String, Object> map = new HashMap<>();map.put("sta", "特殊情况");//流程图 流程连线的判断依据,staTask task = pe.getTaskService().createTaskQuery().singleResult();pe.getTaskService().complete(task.getId(),map);//通过任务id来完成任务 此处将判断依据传入}
学生王野整个请假流程完成
历史任务id2506
历史任务名称学生请假
历史任务创建时间Wed Jan 22 11:33:25 CST 2020
历史任务结束时间Wed Jan 22 11:35:46 CST 2020
历史任务执行人武当王野
历史任务id5003
历史任务名称班长审批
历史任务创建时间Wed Jan 22 11:35:46 CST 2020
历史任务结束时间Wed Jan 22 11:51:33 CST 2020
历史任务执行人班长
历史任务id7502
历史任务名称教师审批
历史任务创建时间Wed Jan 22 11:51:33 CST 2020
历史任务结束时间Wed Jan 22 11:53:54 CST 2020
历史任务执行人教师
此时task表中无数据
学生发起请假流程二
之前流程已经部署,这里不需要再次部署
/*** 启动流程实例*/@Testpublic void start() {// 通过id启动 启动时赋予流程执行人即 刚才${}中的值//此时act_ru_execution act_ru_task 两张表中有数据Map<String, Object> map = new HashMap<>();map.put("student", "武当王野(一般情况)");ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey("myProcess", map);}
王野发起请假完成
/*** 完成任务* 此时act_ru_execution act_ru_task 两张表中没有数据* 相对应的 在历史表中有数据*/@Testpublic void completeTask() {Map<String, Object> map = new HashMap<>();map.put("sta", "一般情况");//流程图 流程连线的判断依据,stape.getTaskService().complete(task.getId(),map);//通过任务id来完成任务 此处将判断依据传入}
查看历史数据
历史任务id12506
历史任务名称学生请假
历史任务创建时间Wed Jan 22 12:00:19 CST 2020
历史任务结束时间Wed Jan 22 12:00:35 CST 2020
历史任务执行人武当王野(一般情况)
历史任务id15003
历史任务名称班长审批
历史任务创建时间Wed Jan 22 12:00:35 CST 2020
历史任务结束时间Wed Jan 22 12:37:10 CST 2020
历史任务执行人班长
此时task中无数据 只经过班长审批就结束了此次的请假流程
activiti工作流学习(二)相关推荐
- Activiti工作流学习之流程图应用详解
Activiti工作流学习之流程图应用详解 1.目的 了解Activiti工作流是怎样应用流程图的. 2.环境准备 2.1.相关软件及版本 jdk版本:Jdk1.7及以上 IDE:eclipse 数据 ...
- Activiti工作流学习笔记01
Activiti6工作流学习笔记01 activiti工作流目前官方最新版本是7.x,但....版本不重要了.这篇笔记只是我学习activiti6过程中的自我总结.如果笔记上有错误的话,欢迎赐教,谢谢 ...
- Activiti工作流学习篇(一)
一.Activiti 的概念 工作流(Workflow),指"业务过程的部分或整体在计算机应用环境下的自动化".是对工作流程及其各操作步骤之间业务规则的抽象.概括描述. ...
- activiti工作流学习(四)
并行网关 与排他网关不同,并行网关中,该网关分支的所有条件都执行完的时候,才能走到下一个任务. 有任意个条件未执行,该部分任务都不会完成. 就像是集龙珠,必须7颗都同时在,才能召唤出神龙 绘制流程图 ...
- 【笔记整理】Activiti工作流的学习笔记
Activiti基础篇 1.什么是工作流 1.1 工作流简介 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是"使在多个参与者之间按照某种预定义的规则自动进 ...
- activiti 工作流_一文让你读懂什么是Activiti工作流
Activiti工作流学习经验总结(一) 什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程. 什么是Activiti? Activiti 是 ...
- activiti 生命周期_一文让你读懂什么是Activiti工作流
Activiti工作流学习经验总结(一) 什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程. 什么是Activiti? Activiti 是 ...
- 工作流学习——Activiti整体认识二步曲
一.前言 在上一篇文章中我们将工作流的相关概念.activiti的前世今生.activiti与jbpm的比较进行学习,这篇文章我们正式进行activiti的学习,activiti的整个学习我们主要通过 ...
- Activiti工作流框架学习笔记(一)
工作流的概念 先看下面两张图: 对以上两张图进行说明: 假设这两张图就是华谊兄弟的请假流程图 图的组成部分: 人物:范冰冰.冯小刚.王中军 事件(动作):请假.批准.不批准 通过以上分析我们就可以抽象 ...
最新文章
- Robolectric
- 中欧光伏“双反”案:何以平地起波澜?
- pycharm python 模板配置_pycharm设置python脚本模板
- SequentialSearch 顺序表查找
- java工程师面试经典题目整理
- HR搬程序员椅子拍老板马屁,开怼的程序员被开?
- What’s New in Virtio 1.1
- leetcode-Basic Calculator-224
- python3+requests接口自动化-其他接口封装
- 江苏计算机二级vb,江苏省计算机等级考试二级vb.ppt
- USB杀手上Indigogo众筹 可以毁坏电脑USB接口
- 3.面试(3) --- 编程
- linux-dd命令,dd命令_Linux dd 命令用法详解:复制文件并对原文件的内容进行转换和格式化处理...
- Atitit 编程语言编程方法的进化演进 sp COP ,AOP ,SOP
- DNS和VIP的区别
- 苹果CMSv10自适应短视频原创挖片网高端手机+电脑模板
- 麒麟系统常见问题详解
- dos攻击防范 php,DOS攻击和DDOS攻击的区别
- uni-app支付宝小程序map地图组件基础操作+画多边形+打点连线
- centos7最小安装时输入命令ifconfig提示bash:ifconfig:未找到命令的错误