目录
一、为什么要学习Activiti
因为最近开发的项目涉及到业务流程,而在开发中遇到比较恶心的是:需求不明朗,产品要求我们先做出功能,客户根据我们的功能在提出优化意见。
所以,业务中涉及到流程的都是手动开发,而需求只要有改变,那很可能之前的流程就得废弃,这也是我本次学习的主要目的。
二、工作流
1、工作流以及工作流系统
Workfolw(工作流),是计算机对业务流程自动化执行管理。主要解决的是“多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预警的业务目标”。
一个软件系统中具有工作流的功能,我们就称之为工作流系统。
2、具体应有
- 关键业务流程:订单、报价处理、合同审核、客户电话处理等
- 行政管理类:出差申请、加班申请、等
- 人事管理类:员工培训、绩效考核、之为变动等
- 财务相关:日超报销处理、预算和计划申请等
- 客户服务类:客户管理、客户投诉、请求处理等
三、Activiti简介
1、Activiti简介
Activiti是一个工作流引擎,他可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义的,业务按照预先定义的流程进行执行,实现了点业务系统的流程有activiti进行管理,减少业务系统由于流程变更而进行系统升级改造的工作量,从而提高了系统的健壮性,减少了系统维护成本。
Activiti的首席架构师也是jbpm的架构师,而jbpm也是一个非常有名的工作流引擎。
2、BPMN
BPMN - 业务流程模型和符号,是一套标准的业务流程建模符号,使用BPMN提供的符号可以创建业务流程。
Activiti就是使用BPMN 2.0 进行流程建模、流程执行管理,包括很多建模符号:
三、Activit如何使用
1、部署activiti
Activiti是一个工作流引擎,业务系统使用activiti来对系统的业务流程进行自动化管理,为了方便业务系统访问(操作)activiti的接口或功能,通常将activiti环境与业务系统的环境集成在一起。
2、流程定义
使用activiti流程建模工具定义业务流程(.bpmn文件)。.bpmn文件就是业务流程定义文件,通过xml定义业务流程。
如果使用其他公司开发的工作引擎一般都提供了可视化的建模工具用于生成流程定义文件,建模工具操作直观,一般都支持图形化拖拽方式、多窗口的用户界面、丰富的过程图形元素、过程元素拷贝、粘贴、删除等功能。
3、流程定义部署
向activiti部署业务流程定义(.bpmn)。
使用activiti提供的api向activiti中部署.bpmn文件(一般情况还需要一块部署业务流程的图片.png)。
4、启动一个流程实例(ProcessInstance)
启动一个流程实例表示开始一次业务流程的运行,比如员工请假流程部署完成,如果张三要请
假就可以启动一个流程实例,如果李四要请假也启动一个流程实例,两个流程的执行互相不影
响,就好比定义一个 java 类,实例化两个对象一样,部署的流程就好比 java 类,启动一个流程
实例就好比 new 一个 java 对象。
5、用户查询代办任务(Task)
因为现在系统的业务流程已经交给 activiti 管理,通过 activiti 就可以查询当前流程执行到哪了,
当前用户需要办理什么任务了,这些 activiti帮我们管理了,而不像上边需要我们在 sql语句中的where
条件中指定当前查询的状态值是多少。
6、用户办理任务
用户查询待办任务后,就可以办理某个任务,如果这个任务办理完成还需要其它用户办理,比如采
购单创建后由部门经理审核,这个过程也是由 activiti 帮我们完成了,不需要我们在代码中硬编码指
定下一个任务办理人了。
7、流程结束
当任务办理完成没有下一个任务/结点了,这个流程实例就完成了。