「Activiti精品 悟纤出品」开发一个简单的SpringBoot activiti应用 - 第330篇

前言

       有志者事竟成,破釜沉舟,百二秦关终属楚;

       苦心人天不负,卧薪尝胆,三千越甲可吞吴。

       前面做了这么的铺垫,就是为了今天这一天的胜利而准备的,至此我们要在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篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值