SpringBoot整合Activiti工作流(附源码)

软件工程

  作者:yawn-silence

  来源:my.oschina.net/silenceyawen/blog/1609603

  依赖:

  新建springBoot项目时勾选activiti,或者在已建立的springBoot项目添加以下依赖:

  <depency>    <groupId>org.activiti</groupId>    <artifactId>activiti-spring-boot-starter-basic</artifactId>    <version>6.0.0</version></depency>配置:

  数据源和activiti配置:

  在activiti的默认配置中,process-definition-location-prefix 是指定activiti流程描述文件的前缀(即路径),启动时,activiti就会去寻找此路径下的流程描述文件,并且自动部署;suffix 是一个String数组,表示描述文件的默认后缀名,默认以上两种。

  springMVC配置:

  这里配置静态资源和直接访问的页面:在本示例项目中,添加了thymeleaf依赖解析视图,主要采用异步方式获取数据,通过angularJS进行前端数据的处理和展示。

  使用activiti:

  配置了数据源和activiti后,启动项目,activiti 的各个服务组件就已经被加入到spring容器中了,所以就可以直接注入使用了。如果在未自动配置的spring环境中,可以使用通过指定bean的init-method来配置activiti的服务组件。

  案例:

  以以下请假流程为例:

  1. 开始流程并“申请请假”(员工)

  在此方法中,Vaction 是申请时的具体信息,在完成“申请请假”任务时,可以将这些信息设置成参数。

  2. 审批请假(老板)

  (1)查询需要自己审批的请假

  package com.yawn.entity;import java.util.Date;/** * @author Created by yawn on 2022-01-09 14:31 */public class VacTask {    private String id;    private String name;    private Vacation vac;    private Date createTime;    // getter setter ...}老板查询自己当前需要审批的任务,并且将任务和参数设置到一个VacTask对象,用于页面的展示。

  (2)审批请假

  同理,result是审批的结果,也是在完成审批任务时需要传入的参数;taskId是刚才老板查询到的当前需要自己完成的审批任务ID。(如果流程在这里设置分支,可以通过判断result的值来跳转到不同的任务)

  3. 查询记录

  由于已完成的请假在数据库runtime表中查不到(runtime表只保存正在进行的流程示例信息),所以需要在history表中查询。

  (1) 查询请假记录

  请假记录即查出历史流程实例,再查出关联的历史参数,将历史流程实例和历史参数设置到Vcation对象(VO对象)中去,即可返回,用来展示。

  此外,以上是查询历史流程实例和历史参数后,设置VO对象的通用方法:可以根据参数列表中的参数,将与VO对象属性同名的参数设置到VO对象中去。

  4. 前端展示和操作

  (1)审批列表和审批操作示例

  以上是一个springBoot 与 activiti 6.0 整合的示例项目的部分代码与说明,完整的项目代码在:

  https://gitee.com/yawensilence/activiti-demo6-springboot

标签: 软件工程