day64_activiti

本文介绍了Activiti工作流引擎在实际应用中的流程实例和个人任务管理。首先回顾了工作流的基本概念,接着详细阐述了流程实例的启动、业务标识businessKey的使用以及流程实例的查询与挂起激活操作。接着,文章讲解了任务分配、任务查询和任务办理的实现,包括如何设置任务办理人和通过业务标识关联查询业务信息。最后,通过案例分析展示了如何在业务系统中设计和使用Activiti进行流程管理。
摘要由CSDN通过智能技术生成

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:
这里写图片描述

注:红色标注为常用service。

什么是流程定义?
如果要让activiti去管理业务流程,需要按照bpmn2.0标准进行业务流程定义(.bpmn文件,png文件),流程定义的过程在线下操作,定义生成 的文件是静态的。

什么是流程定义部署?
在线下定义的bpmn文件,需要通过activiti的api部署到activiti的数据库中,这样activiti才能去按照流程定义的内容管理业务流程。

2 流程实例

2.1 什么是流程实例?

参与者(可以是用户也可以是程序)按照流程定义内容发起一个流程,发起的这个流程就是一个流程实例。是动态的。

流程定义和流程实例图解:
这里写图片描述

总结:
流程定义是静态的,流程实例是动态的,流程实例的启动是需要参与者来操作的,流程实例按照流程定义来启动,不同的流程实例之间互不影响 。

使用流程实例记录不同流程的执行过程。

2.2 启动流程实例

必须先启动一个流程实例,activiti才开始去管理控制这个业务流程(流程实例)。

根据流程定义key来启动一个实例

使用RuntimeService 启动一个流程实例,启动流程实例依赖于流程定义,启动实例之前 需要将流程定义部署到activit中。
RuntimeService:用于管理当前正在运行流程信息。

代码如下:

这里写图片描述

测试结果:

这里写图片描述

数据库表

记录流程当前 运行的信息:
这里写图片描述

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:流程实例运行时长.

2.3 businessKey(业务标识 )

2.3.1 分析
需求:
查询系统中当前正在运行的流程有哪些?比如:要查询采购流程,包括信息:流程实例id、当前 运行的结点id、采购单号、采购单名称 、采购金额。
分析:
流程实例id、当前 运行的结点id 通过activiti的api 从activiti数据库查询。
采购单号、采购单名称 、采购金额这个字段在activiti数据库中是不存在的,应该从业务系统中查询。

思路 :
在启动每个流程实例时(比如采购流程),指定一个采购单id,将此采购单id记录到activiti的数据库中。

这里写图片描述

采购单id和每个流程实例一一对应,activiti中为了满足需求:在查询activiti的信息时关联查询业务信息。专门设置businessKey(业务标识 )

2.3.2 businessKey业务标识概念

业务标识:查询activiti的信息时关联查询业务信息要用到的一个标识,标识通常是业务表的一个主键。比如:如果启动一个采购流程,业务标识等于采购单id,如果启动一个请假流程,业务标识等于请假信息的id。

2.3.3 设置businessKey方法:

在启动一个流程实例时设置该流程实例对应的businessKey。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值