小工具知识网

当前位置: 首页 > 行业知识 > springboot3整合activiti 8(DEMO)含代码

行业知识

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 项目版本介绍
  1. springboot-version-3.2.0
  2. activiti-version-8

2 引入的依赖
  1. spring-boot-starter-web
  2. mysql-connector-j

  3. lombok

  4. spring-boot-starter-test

  5. spring-boot-starter-jdbc

  6. activiti-spring-boot-starter

  7. 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

上一篇:服务器怎么安装镜像文件?

下一篇:怎么样找回服务器密码?