配置 Activiti 开发环境通常涉及几个核心步骤:选择合适的版本、搭建 Java 开发环境、引入依赖、配置数据库以及编写第一个流程定义,以下是基于 Activiti 7(目前主流且推荐用于 Spring Boot 集成的版本)的详细配置指南。
前置要求
在开始之前,请确保你的开发机器已安装以下软件:
- JDK 8 或 JDK 11:Activiti 7 支持 JDK 8+。
- Maven 3.6+:用于管理项目依赖。
- IDE:IntelliJ IDEA 或 Eclipse(推荐 IntelliJ IDEA)。
- 数据库:MySQL 5.7/8.0、Oracle、PostgreSQL 或 H2(测试用)。
- Spring Boot:Activiti 7 与 Spring Boot 2.x/3.x 集成最佳。
创建 Spring Boot 项目
使用 Spring Initializr 创建一个标准的 Spring Boot 项目。
1 添加依赖
在 pom.xml 中添加以下依赖:
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Activiti Spring Boot Starter -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M6</version> <!-- 请使用最新稳定版 -->
</dependency>
<!-- 数据库驱动 (以 MySQL 为例) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 可选:H2 数据库用于快速测试 -->
<!--
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
-->
</dependencies> 注意:Activiti 7 与 Spring Boot 2.x 配合使用最稳定,如果使用 Spring Boot 3.x,请确认 Activiti 版本兼容性(可能需要使用 Activiti 8 或等待 Activiti 7 的后续更新)。
配置文件 application.yml
在 src/main/resources/application.yml

中配置数据库和 Activiti 行为。
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/activiti_db?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
# Activiti 配置
activiti:
# 是否启动时自动创建或更新数据库表结构
database-schema-update: true
# 是否检查流程定义文件的合法性
db-history-used: true
# 历史级别:none, activity, audit, full (推荐 audit 或 full 用于调试)
history-level: full
# 检查流程定义版本
check-process-definitions: false 关键点说明:
database-schema-update: true:首次运行时,Activiti 会自动在数据库中创建 25+ 张核心表(如ACT_RE_,ACT_RU_等)。history-level: full:记录所有流程实例、任务、变量的历史数据,便于排查问题。
编写第一个流程定义
在 src/main/resources/processes/ 目录下创建一个 BPMN 文件,leave.bpmn。
leave.bpmn 内容示例:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="http://www.example.org/process">
<process id="leaveProcess" name="请假流程" isExecutable="true">
<startEvent id="startEvent" name="开始"/>
<userTask id="managerApproval" name="经理审批" activiti:assignee="manager"/>
<endEvent id="endEvent" name="结束"/>
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="managerApproval"/>
<sequenceFlow id="flow2" sourceRef="managerApproval" targetRef="endEvent"/>
</process>
</definitions> 提示:建议使用 Activiti Modeler 或
Camunda Modeler(两者 BPMN 兼容)来可视化绘制流程图,然后导出为
.bpmn文件。
创建 REST API 控制器
创建一个简单的 Controller 来启动流程、完成任务。
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/leave")
public class LeaveController {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
// 1. 启动流程
@PostMapping("/start")
public String startProcess() {
Map<String, Object> variables = new HashMap<>();
variables.put("days", 3); // 传递业务变量
ProcessInstance instance = runtimeService.startProcessInstanceByKey("leaveProcess", variables);
return "流程启动成功,实例ID: " + instance.getId();
}
// 2. 查询待办任务
@GetMapping("/tasks")
public List<Task> getTasks(@RequestParam String assignee) {
return taskService.createTaskQuery()
.taskAssignee(assignee)
.list();
}
// 3. 完成任务
@PostMapping("/complete/{taskId}")
public String completeTask(@PathVariable String taskId) {
taskService.complete(taskId);
return "任务完成: " + taskId;
}
} 启动与验证
- 启动 Spring Boot 应用。
- 观察控制台日志,确认 Activiti 成功创建了数据库表(如
ACT_RE_DEPLOYMENT,ACT_RU_TASK等)。 - 使用 Postman 或浏览器调用接口:
POST http://localhost:8080/api/leave/start→ 启动流程。GET http://localhost:8080/api/leave/tasks?assignee=manager→ 查看经理待办任务。POST http://localhost:8080/api/leave/complete/{taskId}→ 完成任务。
常见问题与调试技巧
Q1: 数据库表未创建?
- 检查
application.yml
中的
activiti.database-schema-update是否为true。 - 检查数据库连接是否正确,用户是否有创建表的权限。
- 查看启动日志中是否有 SQL 执行错误。
Q2: 流程定义未部署?
- 确保
.bpmn文件放在src/main/resources/processes/目录下(默认扫描路径)。 - 或者手动部署:
RepositoryService repositoryService = engine.getRepositoryService();repositoryService.createDeployment() .addClasspathResource("processes/leave.bpmn") .deploy();
Q3: 如何查看流程实例状态?
- 直接查询数据库中的
ACT_RU_EXECUTION和ACT_RU_TASK表。 - 使用 Activiti Explorer(旧版)或 Camunda Modeler 的插件查看运行时状态。
Q4: Activiti 7 vs Activiti 6 vs Activiti 8
| 特性 | Activiti 6 | Activiti 7 | Activiti 8 |
|---|---|---|---|
| 架构 | 单体架构 | 模块化架构 | 微服务架构 |
| 集成 | 传统 Spring | Spring Boot 友好 | 云原生、Kubernetes |
| 推荐场景 | 遗留系统维护 | 大多数 Spring Boot 项目 | 云原生、微服务架构 |
建议:新项目优先选择 Activiti 7(与 Spring Boot 集成成熟)或 Camunda 7/8(功能更强大,社区活跃)。
扩展:使用 Activiti Modeler(可选)
如果你需要可视化设计流程,可以集成 Activiti Modeler:
- 克隆 Activiti Modeler 仓库。
- 将
activiti-modeler模块集成到你的 Spring Boot 项目中。 - 配置资源映射,使其可通过 Web 界面访问。
通过以上步骤,你已经成功配置了一个基本的 Activiti 开发环境,接下来可以深入学习:
- 监听器(ExecutionListener, TaskListener)
- 服务任务(JavaDelegate, SpringBeanDelegate)
- 网关(排他网关、并行网关)
- 历史数据查询与分析
如有具体问题,欢迎继续提问!
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复