Activiti7整合Springboot使用记录

Activiti7整合Springboot使用记录,博智网带你了解详细信息 。
目录

  • 0.Springboot项目创建
  • 1.引入Activiti相关依赖
  • 2.启动工程并创建activiti数据库
  • 3.流程部署
  • 4.流程实例启动
  • 5.任务查询
  • 6. 完成任务
  • 7.流程结束,或流程流转过程中的历史信息查询
  • 8.其他Api测试
    • 8.1 流程定义信息查询
    • 8.2 删除流程
  • 9.demo源码下载

    0.Springboot项目创建
    通过https://start.spring.io/生成纯净的一个springboot工程

    1.引入Activiti相关依赖<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter</artifactId><version>7.1.0.M6</version></dependency>
    2.启动工程并创建activiti数据库##activiti7中使用spring security,因此启动工程前,需要加入2个文件支持,2个文件的代码如下:
    【Activiti7整合Springboot使用记录】package cn.gzsendi.activitidemotest.config;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;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;@Configurationpublic class ActivitiConfiguration {private Logger logger = LoggerFactory.getLogger(ActivitiConfiguration.class);@Bean(name = "userDetailsService")public UserDetailsService myUserDetailsService() {InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager();//用户String[][] usersGroupsAndRoles = {{"hefy", "123456", "ROLE_ACTIVITI_USER"},{"liujh", "123456", "ROLE_ACTIVITI_ADMIN"},{"liuky", "123456", "ROLE_ACTIVITI_USER"},{"admin", "123456", "ROLE_ACTIVITI_ADMIN"},};for (String[] user : usersGroupsAndRoles) {List<String> 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;}@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}}
    package cn.gzsendi.activitidemotest.utils;import java.util.Collection;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 javax.annotation.Resource;@Componentpublic class SecurityUtil {@Autowired@Qualifier("userDetailsService")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");}SecurityContextHolder.setContext(new SecurityContextImpl(new Authentication() {@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {return user.getAuthorities();}@Overridepublic Object getCredentials() {return user.getPassword();}@Overridepublic Object getDetails() {return user;}@Overridepublic Object getPrincipal() {return user;}@Overridepublic boolean isAuthenticated() {return true;}@Overridepublic void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {}@Overridepublic String getName() {return user.getUsername();}}));org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(username);}}
    ##加入activiti7的配置
    server.port=8080server.servlet.context-path=/activitidemotestspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/activitidemo?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=truespring.datasource.username=rootspring.datasource.password=123456spring.activiti.database-schema-update=truespring.activiti.db-history-used=truespring.activiti.history-level=fullspring.activiti.check-process-definitions=falsespring.activiti.deployment-mode=never-failspring.activiti.process-definition-location-prefix=classpath:/process/

    推荐阅读