SpringBoot整合Activiti7的实现
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这期内容当中小编将会给大家带来有关SpringBoot整合Activiti7的实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.使用IDEA创建SpringBo
千家信息网最后更新 2025年02月05日SpringBoot整合Activiti7的实现
这期内容当中小编将会给大家带来有关SpringBoot整合Activiti7的实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1.使用IDEA创建SpringBoot项目
在工程的pom.xml文件中引入相关的依赖,具体依赖如下所示
4.0.0 org.springframework.boot spring-boot-starter-parent 2.2.1.RELEASE com.example activiti 0.0.1-SNAPSHOT activiti Demo project for Spring Boot UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.activiti activiti-spring-boot-starter 7.0.0.Beta2 org.mybatis mybatis 3.4.5 mysql mysql-connector-java 5.1.27 org.projectlombok lombok true org.springframework.boot spring-boot-maven-plugin
2.application.yml文件配置
为了能够实现Activiti7生成的表放到Mysql数据库中,需要在配置文件application.yml中添加相关的配置
server: port: 8085spring: application: name: spring-activiti datasource: url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&nullCatalogMeansCurrent=true username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver activiti: #1.flase: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常 #2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建 #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表) #4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎) database-schema-update: true #检测历史表是否存在 db-history-used: true #记录历史等级 可配置的历史级别有none, activity, audit, full history-level: full #校验流程文件,默认校验resources下的processes文件夹里的流程文件 check-process-definitions: false
3.添加SpringSecurity安全框架整合配置
Activiti7与SpringBoot整合后,默认情况下,集成了SpringSecurity安全框架,这样我们就要去准备SpringSecurity整合进来的相关用户权限配置信息
1)添加SecurityUtil类
为了能够快速实现SpringSecurity安全框架的配置,所添加的一个组件。
@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 extends GrantedAuthority> getAuthorities() { return user.getAuthorities(); } @Override public Object getCredentials() { return user.getPassword(); } @Override public Object getDetails() { return user; } @Override public Object getPrincipal() { return user; } @Override public boolean isAuthenticated() { return true; } @Override public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException { } @Override public String getName() { return user.getUsername(); } })); org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(username); }}
这个类可以从Activiti7官方提供的Example中找到。
2)添加DemoApplicationConfig类
它的作用是为了实现SpringSecurity框架的用户权限的配置,这样我们就可以在系统中使用用户权限信息
@Configurationpublic class DemoApplicationConfiguration { private Logger logger = LoggerFactory.getLogger(DemoApplicationConfiguration.class); @Bean public UserDetailsService myUserDetailsService() { InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager(); String[][] usersGroupsAndRoles = { {"salaboy", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"}, {"ryandawsonuk", "password", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"}, {"erdemedeiros", "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) { ListauthoritiesStrings = 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)创建测试类
@SpringBootTest@Slf4jclass ActivitiApplicationTests { @Autowired private ProcessEngine processEngine; /** * 流程定义的部署 */ @Test public void createDeploy() { RepositoryService repositoryService = processEngine.getRepositoryService(); Deployment deployment = repositoryService.createDeployment() .addClasspathResource("diagram/holiday.bpmn")//添加bpmn资源 .addClasspathResource("diagram/holiday.png") .name("请假申请单流程") .deploy(); log.info("流程部署id:" + deployment.getName()); log.info("流程部署名称:" + deployment.getId()); }}
运行结果:
遇到的问题:
1)历史表默认不会生成,需在application.yml中配置
spring: activiti: #检测历史表是否存在 db-history-used: true #记录历史等级 可配置的历史级别有none, activity, audit, full history-level: full
上述就是小编为大家分享的SpringBoot整合Activiti7的实现了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
配置
历史
文件
流程
整合
框架
安全
数据
数据库
权限
用户
信息
内容
引擎
手动
版本
等级
级别
UTF-8
分析
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术参考文献2020
中建 软件开发
人大金仓数据库概念股
睢宁时光网络技术服务工作室
网络安全英文小短文
软件开发 保密局
数据库视图的概念
服务器做vpn
青岛企业软件开发中心
棋牌游戏服务器房间管理
我的世界服务器mod管理
java更新数据库结构
sqlmap连接数据库
plc和网络技术
计算机服务器包括什么
高二网络技术基础课件
李长喜网络安全法
在数据库表中删除一个列
什么叫做网络安全专业
哈尔滨软件开发系统生产商
手机么禁用数据库
web服务器工作过程
互联网电影数据库英文缩写
数据库从联机制
数据库做表视频
浙江软件开发网站推荐
药品广告数据库丁桂儿脐贴
无锡养老软件开发
计算机网络技术就业几率
网络安全防控应急预案