1、介绍
几乎任何一个公司的软件开发都会涉及到流程,以往我们可能是这么实现的:业务表添加标志位标识流程的节点状态,关联批注表实现审核意见,根据一些业务数据分析处理逻辑,分配任务到用户,节点的调度,审批等.....这其实是很繁琐的,且不说开发起来比较混乱,维护起来更是难上加难:
Activiti刚好就能解决几乎所有的这些问题,当流程开发变得简单有趣。
官方文档:https://www.activiti.org/userguide/
Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。
作为开发者,使用Activiti带给我的直接好处:
- 天然支持Spring(Spring需要在配置文件中自己定义Activiti的Bean,Spring Boot则不需要)
- 流程定义通过画流程图实现(官方提供了相关工具,Eclipse也有插件支持),简单直观,易维护,易修改。
- 审批条件参数化,流程分支简单实现。
- 审批人可使用多种方式设置(支持用户、用户组、角色、候选组以及监听器动态设置),灵活,简单。
- 统一的审批接口,并不需要判断流程当前节点和走向。
- 提供强大的JPA查询,同时支持Name Query和Native Query。
- 流程数据与业务数据分离。
后续文章会一步步介绍Activiti的功能,主要使用基于Spring Boot的工程,也会提供单纯的Spring工程Demo。
2、示例
此处演示一个小示例,暂不解释代码,仅仅看看是怎样用activiti实现的。
场景就是请假,不过这里稍稍多了点内容,就是请假由请假人对应部门的领导审批,而不是统一的某一部分人。
2.1、使用Spring Boot工程
首先创建Spring boot工程,为了演示方便,使用内存数据库,完整pom文件如下: