流程连线


流程开始→某个学生请假(一般情况/特殊情况)→班长审批通过→(进行判断,如果是一般情况直接结束;如果是特殊情况流程指向教师审批,教师审批结束后)→结束

任务设定

学生请假,执行人设置为 ${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工作流学习(二)相关推荐

  1. Activiti工作流学习之流程图应用详解

    Activiti工作流学习之流程图应用详解 1.目的 了解Activiti工作流是怎样应用流程图的. 2.环境准备 2.1.相关软件及版本 jdk版本:Jdk1.7及以上 IDE:eclipse 数据 ...

  2. Activiti工作流学习笔记01

    Activiti6工作流学习笔记01 activiti工作流目前官方最新版本是7.x,但....版本不重要了.这篇笔记只是我学习activiti6过程中的自我总结.如果笔记上有错误的话,欢迎赐教,谢谢 ...

  3. Activiti工作流学习篇(一)

    一.Activiti 的概念       工作流(Workflow),指"业务过程的部分或整体在计算机应用环境下的自动化".是对工作流程及其各操作步骤之间业务规则的抽象.概括描述. ...

  4. activiti工作流学习(四)

    并行网关 与排他网关不同,并行网关中,该网关分支的所有条件都执行完的时候,才能走到下一个任务. 有任意个条件未执行,该部分任务都不会完成. 就像是集龙珠,必须7颗都同时在,才能召唤出神龙 绘制流程图 ...

  5. 【笔记整理】Activiti工作流的学习笔记

    Activiti基础篇 1.什么是工作流 1.1 工作流简介 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是"使在多个参与者之间按照某种预定义的规则自动进 ...

  6. activiti 工作流_一文让你读懂什么是Activiti工作流

    Activiti工作流学习经验总结(一) 什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程. 什么是Activiti? Activiti 是 ...

  7. activiti 生命周期_一文让你读懂什么是Activiti工作流

    Activiti工作流学习经验总结(一) 什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程. 什么是Activiti? Activiti 是 ...

  8. 工作流学习——Activiti整体认识二步曲

    一.前言 在上一篇文章中我们将工作流的相关概念.activiti的前世今生.activiti与jbpm的比较进行学习,这篇文章我们正式进行activiti的学习,activiti的整个学习我们主要通过 ...

  9. Activiti工作流框架学习笔记(一)

    工作流的概念 先看下面两张图: 对以上两张图进行说明: 假设这两张图就是华谊兄弟的请假流程图 图的组成部分: 人物:范冰冰.冯小刚.王中军 事件(动作):请假.批准.不批准 通过以上分析我们就可以抽象 ...

最新文章

  1. Robolectric
  2. 中欧光伏“双反”案:何以平地起波澜?
  3. pycharm python 模板配置_pycharm设置python脚本模板
  4. SequentialSearch 顺序表查找
  5. java工程师面试经典题目整理
  6. HR搬程序员椅子拍老板马屁,开怼的程序员被开?
  7. What’s New in Virtio 1.1
  8. leetcode-Basic Calculator-224
  9. python3+requests接口自动化-其他接口封装
  10. 江苏计算机二级vb,江苏省计算机等级考试二级vb.ppt
  11. USB杀手上Indigogo众筹 可以毁坏电脑USB接口
  12. 3.面试(3) --- 编程
  13. linux-dd命令,dd命令_Linux dd 命令用法详解:复制文件并对原文件的内容进行转换和格式化处理...
  14. Atitit 编程语言编程方法的进化演进 sp  COP ,AOP ,SOP
  15. DNS和VIP的区别
  16. 苹果CMSv10自适应短视频原创挖片网高端手机+电脑模板
  17. 麒麟系统常见问题详解
  18. dos攻击防范 php,DOS攻击和DDOS攻击的区别
  19. uni-app支付宝小程序map地图组件基础操作+画多边形+打点连线
  20. centos7最小安装时输入命令ifconfig提示bash:ifconfig:未找到命令的错误

热门文章

  1. unity如何调用另一个脚本中的变量
  2. UML时序图(序列图)
  3. OI 生涯回忆录 《Pilgrimage》
  4. iphone7 买不买???
  5. oracle SQL update一次性修改多个字段,数据来源于另一张表
  6. 基于 Django 使用 qrcode 模块生成二维码
  7. Win10 Rational Rose 关于报错 Rational Lience Key Error及一劳永逸解决报错法
  8. 华为hcie证书怎么样 如何报考华为认证HCIE
  9. 如何获取京东微信小程序页面路径
  10. VS工程文件常见后缀名文件含义