Spring boot整合Activiti7

简介: Spring boot整合Activiti7

Activiti介绍

Activiti是一个轻量级的java开源BPMN 2工作流引擎.目前以升级至7.x,支持与springboot2集成.

SpringBoot配置说明

  • pom.xml 增加activiti-spring-boot-starter并指定对应版本.
<dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <version>7.1.0.M6</version>
        </dependency>
        <!--        指定数据源-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
  • java配置

activiti-spring-boot默认集成了spring security用于权限管理如需禁用security启动类中屏蔽ActivitiSpringIdentityAutoConfiguration,再增加一个配置类即可 Application中禁用权限相关集成

package com.meijm.activiti;
import org.activiti.core.common.spring.identity.config.ActivitiSpringIdentityAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(exclude = {ActivitiSpringIdentityAutoConfiguration.class})
public class ActivitiApplication {
    public static void main(String[] args) {
        SpringApplication.run(ActivitiApplication.class);
    }
}

增加配置类ActivitiSpringIdentityAutoConfiguration,其中有三个方法在源码中并未查询到引用暂时不处理

package com.meijm.activiti.config;
import com.google.common.collect.ImmutableList;
import org.activiti.api.runtime.shared.identity.UserGroupManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Configuration
public class ActivitiSpringIdentityAutoConfiguration {
    @Bean
    public UserGroupManager userGroupManager() {
        return new UserGroupManager() {
            @Override
            public List<String> getUserGroups(String s) {
                return ImmutableList.of("指定用户归属组");
            }
            @Override
            public List<String> getUserRoles(String s) {
                return null;
            }
            @Override
            public List<String> getGroups() {
                return null;
            }
            @Override
            public List<String> getUsers() {
                return null;
            }
        };
    }
}

完成以上配置后项目启动时会创建基础的数据表,不包含历史记录等,如需要则在配置文件中增加配置即可.配置介绍.

启动后可能会不创建数据表,数据库连接中增加nullCatalogMeansCurrent=true这个参数就好了,具体原因不明

spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/m-activiti?serverTimezone=UTC&nullCatalogMeansCurrent=true

工程启动后会自动加载/resources/processes下流程图配置文件, 支持两种格式*.bpmn20.xml,*.bpmn

流程图编辑IDEA插件

actiBPM: 安装后对*.bpmn后缀的文件可以直接打开流程图编辑视图,效果如下,编辑保存后会在标签中增加xmlns=""属性,会导致自动部署失败,可以手动删除此属性,也可以通过spring.activiti.check-process-definitions=false来关闭流程文件检查.

1.png

Activiti BPMN visualizer: 安装后打开*.bpmn20.xml文件,右键选择"View BPMN(Activiti) Diagram"可打开流程图编辑页,效果如下图

2.png

API说明

集成配置好之后会在系统注入以下bean,使用时增加注入即可,最基础的是前三个bean.

名称 介绍
RuntimeService 执行时Service可以处理所有执行状态的流程例项流程控制(开始,暂停,挂起等)
TaskService 任务Service用于管理、查询任务,例如签收、办理、指派等
RepositoryService 流程仓库Service,可以管理流程仓库例如部署删除读取流程资源
IdentitiServicec 身份Service可以管理查询使用者、组之间的关系
FormService 表单Service用于读取和流程、任务相关的表单资料
HistoryService 历史Service用于查询所有的历史资料
ManagementService 引擎管理Service,和具体业务无关,主要查询引擎配置,资料库作业
DynamicBpmService 动态bpm服务

例子

下面源码中包含一个简单的流程例子,包含两个用户任务,提供了controller来操作流程

/baseActiviti/start:流程启动

/baseActiviti/taskList:查看指定用户的任务

/baseActiviti/completeTask:完成指定任务

说明

  1. 流程图配置中assignee表示指定的用户
  2. 由于实体中包含一些运行时内容不便于序列化所以返回时去掉了一些属性

地址:https://gitee.com/MeiJM/spring-cram/tree/master/activiti

参考资料

https://www.activiti.org/userguide/#springSpringBoot

https://blog.csdn.net/yang_zzu/article/details/103998671

https://www.cnblogs.com/tianguodk/p/9414363.html

https://blog.csdn.net/qq_40887780/article/details/83588130

https://www.cnblogs.com/liaojie970/p/8857710.html

目录
相关文章
|
28天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
41 0
|
7天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
24 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
9天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
【Spring系列】Sping VS Sping Boot区别与联系
|
1月前
|
XML Java 数据库
【二十三】springboot整合activiti7(1)实战演示篇
【二十三】springboot整合activiti7(1)实战演示篇
23 0
|
2月前
|
前端开发 JavaScript Java
基于Springboot+SpringSecurity+Activiti7实现的工作流系统可方便二次开发(附完整源码)
基于Springboot+SpringSecurity+Activiti7实现的工作流系统可方便二次开发(附完整源码)
58 0
|
2月前
|
XML 监控 druid
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
|
7月前
|
Oracle Java 关系型数据库
Java SpringBoot集成Activiti7工作流
Java SpringBoot集成Activiti7工作流
|
3月前
|
Java
springboot项目打包瘦身
springboot项目打包瘦身
|
5月前
|
Java 测试技术
Springboot集成JUnit5优雅进行单元测试
Springboot集成JUnit5优雅进行单元测试
|
安全 Java Maven
Spring Boot资源文件问题总结(Spring Boot的静态资源访问,配置文件外置)
Spring Boot资源文件问题总结(Spring Boot的静态资源访问,配置文件外置)
1305 1