Springboot2+activiti7开发工作流服务项目(001)——启动流程实例

更新至Activiti7 Beta3版本时遇到核心类消失及流程变量数据翻倍等问题,文章详细解析问题原因并提供解决方案,包括配置调整以避免流程变量冗余。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

activiti7在我写下这篇博客之前的12天刚更新 7.0.0.Beta3 ,之前一直用的是 Beta1开发。在发布Beta2由于正是开发进度紧张时期,就没换。本以为pom.xml中直接把1换成3应该问题不大,结果......

问题1:

这个是官网在Beta1时推荐使用的依赖,当我把1改成3的时候,项目直接全面飘红,activiti核心类全不见了,直接凉凉~~

小结:

折腾半天发现,activiti在Beta3的时候把这些核心包加入starter里面了,你只需要直接添加starter即可

好的,现在项目一点错误没有了,启动也没有异常,和原来一样,你说是不是美滋滋???

问题2:

你照常启动流程实例,你会发现一个奇异的现象。

解释一下上面一段代码:

你通过runtimeService对象调用重载方法启动1个流程实例,参数分别是:标志流程定义的id,关联业务表的id,流程变量集合。

这段代码无论你是用activiti 5/6/7 Beta1 执行效果都是一样的,尤其是流程变量,集合中的一个键值对用一行数据存储在变量表中。

但是换成了Beta3你会发现你的运行时流程变量表 + 历史流程变量表 统统的多出来一倍数据。(绿色框框的3条数据是我们希望得到的全局变量,而下面那3条task_id_字段有值的是局部变量

问题的关键就是流程变量的数据翻倍了,并不是我们想要的这样,数据大量冗余,并且很有可能你代码中的查询方法会抛出异常,例如:

 

小结:

Beta3这次更新主要删掉了所有类名带有activiti5字眼的类。(下面是GitHub截图),按道理说不应该对其他改动过大,尤其是启动流程实例这种最最核心的API,所以我觉的问题可能出现在配置上,也许哪个傻逼做了某个配置,且默认就开启了。你使用的时候根本察觉不到。

查看ActivitiProperties.java文件

这么重要的配置居然提都不提,日你地吗呦!

结论:

启动流程实例,如果想要保持和以前一样,yml中添加如下配置,一切如常:

结束语:

分享这次经历,主要是分享一个学习的过程,结论其实在知道答案之后并不重要,也没什么可说的。

但是我相信也有很多兄弟在更新框架版本,学习最新版本框架这类问题上也出现过代码异常等等诸多问题,尤其是越新的东西,学的人本来就少,研究完了愿意无私分享的更少。希望这篇文章能给各位兄弟一个参考的方向。

 

### Spring Boot 集成 Activiti 工作流教程 #### 创Spring Boot项目并引入依赖 为了使Spring Boot应用程序能够使用Activiti工作流引擎,需先创一个新的Spring Boot项目,并在`pom.xml`文件中添加必要的依赖项。这包括用于基本集成的`activiti-spring-boot-starter-basic`和其他可能需要的支持库,比如MyBatis对于持久层操作的支持。 ```xml <dependencies> <!-- Activiti --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>${activiti.version}</version> </dependency> <!-- MyBatis (如果适用) --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.version}</version> </dependency> ... </dependencies> ``` 上述配置使得项目可以利用Activiti提供的开箱即用的功能[^5]。 #### 启动类设置 接着,在项目的根路径下的`src/main/java/com/example/activiti_demo`目录内立名为`ActivitiDemoApplication.java`的应用入口文件。该Java类通过标注`@SpringBootApplication`声明为一个Spring Boot应用,并提供了一个静态方法`main()`作为程序执行起点: ```java package com.example.activiti_demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ActivitiDemoApplication { public static void main(String[] args) { SpringApplication.run(ActivitiDemoApplication.class, args); } } ``` 这段代码初始化了整个Spring上下文环境,允许后续组件和服务被自动装配和管理[^1]。 #### 数据库连接与配置 为了让Activiti正常运作,还需要适当调整`application.yml`中的数据源参数以匹配实际使用的数据库实例。例如MySQL的数据源配置如下所示: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver activiti: database-schema-update: true check-process-definitions: false ``` 这里启用了自动更新机制(`database-schema-update`)以便于首次运行时构所需的结构;同时也关闭了进程定义校验选项(`check-process-definitions`)来减少不必要的性能消耗[^3]。 #### 测试流程设计与部署 最后一步涉及到了具体的工作流逻辑的设计——可以通过Activiti Designer工具完成图形化的流程模,保存为`.bpmn20.xml`格式后放置到资源文件夹里供加载解析。之后便可以在控制器或者其他地方调用API发起新任务、查询历史记录等操作了。 ```java @Autowired private RepositoryService repositoryService; // 发布流程模型... repositoryService.createDeployment() .addClasspathResource("processes/holiday-request.bpmn20.xml") .deploy(); ``` 以上就是关于如何在一个典型的Spring Boot环境中成功嵌入Activiti工作流引擎的大致步骤概述[^4]。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值