行业知识
springboot3整合activiti 8(DEMO)含代码
2026-11-03 09:05:31
来源:互联网转载
���录
1 项目版本介绍
2 引入的依赖
3 添加配置类(因为activiti内置了springboot的安全框架,所以需要配置)
4 添加安全工具类(也是因为安全框架)
5 在项目运行前,需要手动建表
6 yml配置
7 启动即可
该项目仅作为Demo使用,仅作为工作流学习的项目,以此学习工作流activiti的基本操作。
项目的github地址:
githubhttps://github.com/DamonKima/activiti/tree/main
1 项目版本介绍
- springboot-version-3.2.0
- activiti-version-8
2 引入的依赖
- spring-boot-starter-web
-
mysql-connector-j
-
lombok
-
spring-boot-starter-test
-
spring-boot-starter-jdbc
-
activiti-spring-boot-starter
-
junit-jupiter
activiti-spring-boot-starter8.1.0版本的最新依赖在maven官网中没有更新,需要导入activiti的库才行。
activiti8依赖地址https://activiti.gitbook.io/activiti-7-developers-guide/releases/8.1.0
即引入库:
activiti-releases https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases
pom.xml文件如下:
4.0.0 org.springframework.boot spring-boot-starter-parent 3.2.0 com.example Activiti8Test 0.0.1-SNAPSHOT Activiti8Test Activiti8Test 17 activiti-releases https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases org.springframework.boot spring-boot-starter-web com.mysql mysql-connector-j runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-jdbc org.activiti activiti-spring-boot-starter 8.1.0 org.junit.jupiter junit-jupiter test org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok
3 添加配置类(因为activiti内置了springboot的安全框架,所以需要配置)
项目目录如下:
该类是config下的DemoApplicationConfiguration类
package com.example.activiti8test.config;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.core.authority.SimpleGrantedAuthority;import org.springframework.security.core.userdetails.User;import org.springframework.security.core.userdetails.UserDetailsService;import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;import org.springframework.security.crypto.password.PasswordEncoder;import org.springframework.security.provisioning.InMemoryUserDetailsManager;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;@Configurationpublic class DemoApplicationConfiguration { private Logger logger = LoggerFactory.getLogger(DemoApplicationConfiguration.class); @Bean public UserDetailsService myUserDetailsService() { InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager(); //这里添加用户,后面处理流程时用到的任务负责人,需要添加在这里 String[][] usersGroupsAndRoles = { {"jack", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"}, {"rose", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"}, {"tom", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"}, {"other", "password", "ROLE_ACTIVITI_USER", "GROUP_otherTeam"}, {"system", "password", "ROLE_ACTIVITI_USER"}, {"admin", "password", "ROLE_ACTIVITI_ADMIN"}, }; for (String[] user : usersGroupsAndRoles) { List authoritiesStrings = Arrays.asList(Arrays.copyOfRange(user, 2, user.length)); logger.info("> Registering new user: " + user[0] + " with the following Authorities[" + authoritiesStrings + "]"); inMemoryUserDetailsManager.createUser(new User(user[0], passwordEncoder().encode(user[1]), authoritiesStrings.stream().map(s -> new SimpleGrantedAuthority(s)).collect(Collectors.toList()))); } return inMemoryUserDetailsManager; } @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }} 4 添加安全工具类(也是因为安全框架)
该类是utils下的SecurityUtil
package com.example.activiti8test.utils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.security.core.Authentication;import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.context.SecurityContextHolder;import org.springframework.security.core.context.SecurityContextImpl;import org.springframework.security.core.userdetails.UserDetails;import org.springframework.security.core.userdetails.UserDetailsService;import org.springframework.stereotype.Component;import java.util.Collection;@Componentpublic class SecurityUtil { private Logger logger = LoggerFactory.getLogger(SecurityUtil.class); @Autowired @Qualifier("myUserDetailsService") private UserDetailsService userDetailsService; public void logInAs(String username) { UserDetails user = userDetailsService.loadUserByUsername(username); if (user == null) { throw new IllegalStateException("User " + username + " doesn't exist, please provide a valid user"); } logger.info("> Logged in as: " + username); SecurityContextHolder.setContext( new SecurityContextImpl( new Authentication() { @Override public Collection
上一篇:服务器怎么安装镜像文件?
下一篇:怎么样找回服务器密码?