前言
有志者事竟成,破釜沉舟,百二秦关终属楚;
苦心人天不负,卧薪尝胆,三千越甲可吞吴。
前面做了这么的铺垫,就是为了今天这一天的胜利而准备的,至此我们要在Spring Boot中集成Activiiti,这一站胜利了,对于activiti也算入门了。
一、开发说明
1.1 开发环境说明
(1)OS:Mac OS;
(2)IDEA : IntellijIDEA;
(3)MySQL:8.0.12;
(4)Spring Boot : 2.3.3.RELEASE;
(5)Activiti:activiit7的7.1.0.M6 starter;
(6)bpmn:idea的插件actiBPM;
1.2 开发说明
在接下来我们要使用activiti7开发一个请假流程:
员工发起申请请假申请->填写请假表单(请假时间、请假原因)->部门领导审批意见->请假流程结束。
根据activiti的这个任务流程,那么有几个核心的事件:
·我要请假 、·填写请假单 、·领导审批
在接下来我们会按照之前在《「工作流Activiti」流程模型搭建-小试牛刀》的流程构建来说明从代码层面应该去进行使用activiti7。
问:对于前面的章节,看懂了,但是没有搭建流程模型环境,影响本节学习嘛?
答:不影响,对于activiti相关的知识点,如果以前就学习过,只是不清楚在Spring Boot中不知道如何使用,那么直接看本节就可以了。
1.3 集成方式说明
Spring Boot整合activiti的方案主要是两种方式:
(1)不使用starter整合(不推荐):使用activiti-spring的依赖进行使用,那么就需要有一个ActivitiConfig的配置类进行注入activiti相关的,比如数据源、流程引擎工厂类ProcessEngineFactoryBean,还有我么上面提到的Service,TaskService、RuntimeService。结论:这种方式比较不复杂,不推荐。
(2)使用starter(推荐):使用activiti-spring-boot-starter,无需自己在进行activiti的相关配置,可以直接进行开发流程相关的。结论:入门简单,推荐。
本文主要是使用第二种方式进行展开讲解。
二、开发实战
2.1 创建项目
我们使用SpringBoot的start快速构建一个项目,取名为:spring-boot-activiti7-demo。
那么这时候@SpringBootApplication的启动类就自动生成了,无需自己进行创建。
2.2 流程图构建
要开发一个请假流程,那么就需要构建一个流程图,我们使用actiBPM进行创建,
在/resources新建一个目录processes新建一个leave-process.bpmn,也就是:
/resources/processes/leave-process.bpmn
2.2.1 使用BPMN元素创建一个请假流程图
使用BPMN的元素进行创建一个请假流程图,结果如下:
2.2.2 为元素创建ID属性
相信使用bpmn的元素构建上面的流程图,并不是难事,那么创建完成之后,我们之后需要通过代码进行操作这个流程图的元素,那么怎么操作呢,肯定是通过元素的唯一标识嘛,所以我们设置一下id属性。
【StartEvent】节点:id=startEvent、name=开始事件
【EndEvent】节点:id=endEvent、name=结束事件
【员工申请】节点:id=applyTask、name=员工申请
【部门领导审批】节点:id=deptApproveTask、name=部门领导审批
举个栗子员工申请节点:
其实上面这些好像在代码中并不一定能使用到,不设置好像也无所谓啦,但是name的还是设置下吧,方便进行流程图的查看。
但是有一个地方的id的设置非常重要,试问一下,你怎么获取到这个流程图呐,流程图的id吧,所以这个得设置一下,点击流程图空白的地方就可以进行设置流程图的id属性了:
【process】:id=leaveProcess、name=请假流程
2.2.3 分配任务人:动态分配
还记得我们在使用activiti的时候,有一个很重要的地方,就是谁发起、谁审批了,也就是Assignee这个属性的配置,在实际项目中我们不会使用activiti的用户体系,我们有自己的用户体系,那么我们就需要能够在代码层面进行动态的设置这个属性了,我们使用EL表达式进行标识出来即可:
【员工申请】节点:assignee=${jobNumber}
【部门领导审批】节点:assignee=${deptJobNumber}
注意:这两个参数不能设置为一样的,否则就无法进行动态的设置分配人了。
举例说明员工申请节点示例如下:
。。。。。。。。。。。。。。。。。
版权原因,完整文章,请参考如下:「Activiti精品 悟纤出品」开发一个简单的SpringBoot activiti应用 - 第330篇