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

目录
相关文章
|
7月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
158 0
|
7月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
179 0
|
25天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
39 2
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
65 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
72 2
|
6月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
57 2
|
6月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
68 2
|
6月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
442 1
|
6月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
57 1
|
6月前
springboot2.4.5使用pagehelper分页插件
springboot2.4.5使用pagehelper分页插件
162 0