SpringBoot整合Activiti7的实现
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这期内容当中小编将会给大家带来有关SpringBoot整合Activiti7的实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.使用IDEA创建SpringBo
千家信息网最后更新 2025年12月02日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) { 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)创建测试类
@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安全错误
数据库的锁怎样保障安全
无锡博世创新与软件开发中心
数据库怎么 整库导出
网络安全手抄报利与弊
河南企业软件开发报价
邹平设备软件开发定制
文明重启怎么看自己加过的服务器
aide 网站数据库
据库管理系统数据库是
软件开发合同范本格式
网络安全严格制度规范管理
王牌战争服务器维护时间
鸿业暖通阀门数据库出错
佛山大学招生计算机网络技术
第六届网络安全宣传周视频
计算机数据库学习方向
金华云软件开发流程
北京手机软件开发专业团队
手机修改app的服务器端口
数据库备份安全
网络安全手抄报文字内容顺口溜
梦凯网络技术有限公司
一带一路旅游数据库
数据库查找年龄小于平均年龄
河南数据库日志审计原理
交易形数据库
文明重启怎么看自己加过的服务器
数据库isbn怎么设置
绝地求生各服务器人数2019
信用中国数据库
如何将数据库数据显示到网页