Activiti第二天 流程实例、个人任务
课程安排:
Api:
流程实例: 流程实例是什么? 启动流程实例的方法(掌握) 两种方法,第二种方法在企业开发常用(涉及和业务系统整合)
查询流程实例(掌握)
查询结果如何和业务整合。 流程实例的暂停和激活(了解)
个人任务: 个人任务分配方法。(掌握)
三种分配方法,以第二种(UEL表达式)和第三种方法(监听器设置)在企业开发常用 。
查询个人任务。(掌握)
查询结果如何和业务整合。 完成个人任务(办理任务) 案例: 完成activiti实现采购流程管理。 创建采购单 提交采购单 审核采购单 学习目标:
1、 重点学习activiti开发方法
2、 学习springmvc和mybatis开发方法
1 复习
什么是工作流? 利用计算机技术对业务流程进行自动化管理,实现多个参与者按照预先定义的流程自动执行业务流程。 什么是activiti? Activiti是实现工作流的一个引擎(框架,组件),通常activiti是要嵌入到业务系统实现业务流程管理。 1、 利用bpmn2.0标准进行流程定义
2、 将流程定义的文件(.bpmn和.png,.bpmn是必须的)部署到activiti中
此时,activiti就可以去管理部署的流程定义 3、 启动一个流程实例 4、 查询待办任务
5、 办理任务 6、 流程结束
三个环境:
环境1: 没有加入activiti的采购系统
和加入activiti的采购系统进行功能开发对比 Procject:
数据库:(包括采购系统的表)
环境2:用于activiti的api测试 Project:
数据库:(包括activiti数据库表,包括23张)
环境3:用于activiti和业务系统整合开发,加入activiti的采购系统 Project:
数据库:(包括activiti数据库表和采购系统的表)
Activiti的架构:
activiti.cfg.xml:spring配置文件,配置ProcessEngine对象和各各Service
ProcessEngineConfiguration:
在上边的activiti.cfg.xml进行配置,通过此对象创建ProcessEngine
(重点)SpringProcessEngineConfiguration:用于spring和activiti的整合 Service:
RepositoryService RuntimeService TaskService HistoryService IdentityService FormService ManagerService activiti的资源管理类 activiti的流程运行管理类 activiti的任务管理类 activiti的历史管理类 activiti的用户身份管理类 activiti的表单管理类 activiti的引擎管理类 注:红色标注为常用service。
什么是流程定义? 如果要让activiti去管理业务流程,需要按照bpmn2.0标准进行业务流程定义(.bpmn文件,png文件),流程定义的过程在线下操作,定义生成 的文件是静态的。
什么是流程定义部署? 在线下定义的bpmn文件,需要通过activiti的api部署到activiti的数据库中,这样activiti才能去按照流程定义的内容管理业务流程。
2 流程实例
2.1 什么是流程实例?
参与者(可以是用户也可以是程序)按照流程定义内容发起一个流程,发起的这个流程就是一个流程实例。是动态的。
流程定义和流程实例图解: 流程定义(.bpmn和png文件) 静态的 比如:定义采购流程 张三创建一个采购单李四创建一个采购单XXX创建一个采购单 (采购单号:001),这(采购单号:002),这(采购单号:XXX),这 时启动一个流程实例 时启动一个流程实例 时启动一个流程实例 动态的:流程的执行 动态的:流程的执行 动态的:流程的执行
总结:
流程定义是静态的,流程实例是动态的,流程实例的启动是需要参与者来操作的,流程实例按照流程定义来启动,不同的流程实例之间互不影响 。
使用流程实例记录不同流程的执行过程。
2.2 启动流程实例
必须先启动一个流程实例,activiti才开始去管理控制这个业务流程(流程实例)。
2.2.1 根据流程定义key来启动一个实例
使用RuntimeService 启动一个流程实例,启动流程实例依赖于流程定义,启动实例之前 需要将流程定义部署到activit中。
RuntimeService:用于管理当前正在运行流程信息。
代码如下:
测试结果:
2.2.1.1
数据库表
记录流程当前 运行的信息:
SELECT * FROM act_ru_execution #流程实例执行表
记录了流程实例的当前执行信息,如果该流程实例结束,流程实例的执行信息从该表删除。
Id_:流程实例执行id
Proc_inst_id_:流程实例id
流程实例执行id和流程实例id区别:
如果流程实例运行当前有多个分支,每个分支执行id和流程实例id不一样,总会有一条记录执行id和流程实例id是一样的。
记录数:当前 执行分支数+1 (每个分支执行id和流程实例id不一样) Business_key_:业务标识 Proc_def_id_:流程定义id
Act_id_:流程实例当前结点id(包括任务、事件等类型的结点)
SELECT * FROM act_hi_procinst #流程实例历史 表 记录流程实例的历史 信息
Start_time_:流程实例开始运行时间,就是流程实例启动的时间 End_time_:流程实例结束运行时间,如果 为空表示该流程未结束 Duration:流程实例运行时长.