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/
推荐阅读
- 整合作用是指什么
- 知乎是怎样盈利的
- 如何整合团队
- 集成 ShedLock 分布式锁的示例详解 SpringBoot
- 使用springboot配置文件yml中的map形式
- 梦见祖宅着火
- 什么叫整合营销
- 关于Springboot如何获取IOC容器
- Redis批量存取数据的操作 SpringBoot
- docker制作springboot镜像 docker的应用场景有哪些
