Activiti开发环境怎么配置?Activiti环境搭建详细教程

配置 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开发环境怎么配置?Activiti环境搭建详细教程

中配置数据库和 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

Activiti开发环境怎么配置?Activiti环境搭建详细教程

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;
    }
}

启动与验证

  1. 启动 Spring Boot 应用
  2. 观察控制台日志,确认 Activiti 成功创建了数据库表(如 ACT_RE_DEPLOYMENT, ACT_RU_TASK 等)。
  3. 使用 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开发环境怎么配置?Activiti环境搭建详细教程

    中的 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_EXECUTIONACT_RU_TASK 表。
  • 使用 Activiti Explorer(旧版)或 Camunda Modeler 的插件查看运行时状态。

Q4: Activiti 7 vs Activiti 6 vs Activiti 8

特性Activiti 6Activiti 7Activiti 8
架构单体架构模块化架构微服务架构
集成传统 SpringSpring Boot 友好云原生、Kubernetes
推荐场景遗留系统维护大多数 Spring Boot 项目云原生、微服务架构

建议:新项目优先选择 Activiti 7(与 Spring Boot 集成成熟)或 Camunda 7/8(功能更强大,社区活跃)。


扩展:使用 Activiti Modeler(可选)

如果你需要可视化设计流程,可以集成 Activiti Modeler

  1. 克隆 Activiti Modeler 仓库。
  2. activiti-modeler 模块集成到你的 Spring Boot 项目中。
  3. 配置资源映射,使其可通过 Web 界面访问。

通过以上步骤,你已经成功配置了一个基本的 Activiti 开发环境,接下来可以深入学习:

  • 监听器(ExecutionListener, TaskListener)
  • 服务任务(JavaDelegate, SpringBeanDelegate)
  • 网关(排他网关、并行网关)
  • 历史数据查询与分析

如有具体问题,欢迎继续提问!

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2026-07-10 04:39
下一篇 2026-07-10 05:24

相关推荐

  • 如何设计一个记账系统的数据库表结构?

    数据库设计前的规划在构建记账数据库之前,首先要明确需求,记账系统的核心功能包括记录收入与支出、分类管理、统计查询等,需确定用户角色(个人或企业)、是否支持多账户、是否需要预算管理等功能,还需考虑数据量增长和扩展性,例如未来是否需要支持多币种或关联第三方支付平台,清晰的规划能为后续表结构设计奠定基础,核心表结构设……

    2025-11-16
    0014
  • 什么是CDN节点服务器及其作用?

    CDN节点服务器是内容分发网络的关键组成部分,它们分布在全球各地,负责存储和缓存网站内容。当用户请求特定内容时,CDN会从最近的节点提供数据,以减少延迟并提高加载速度。

    2024-09-26
    0012
  • 服务器转移金币,数据安全如何保障?

    服务器转移金币是一项涉及多个环节的复杂操作,需要玩家和运营方共同谨慎对待,无论是游戏版本更新、服务器合并,还是玩家主动迁移,金币作为游戏内核心经济载体,其转移过程中的安全性和完整性直接关系到玩家的切身利益,以下将从准备工作、操作流程、注意事项及风险应对等方面,详细解析服务器转移金币的相关事宜,转移前的准备工作在……

    2025-12-20
    0026
  • 本地MySQL数据库连接不上怎么办?详细步骤教你怎么连。

    MySQL本地数据库连接基础操作在开发过程中,连接本地MySQL数据库是常见操作,本文将详细介绍连接本地MySQL数据库的方法、工具及注意事项,帮助用户快速上手,确认MySQL服务状态连接数据库前,需确保MySQL服务已启动,在Windows系统中,可通过“服务”管理器找到“MySQL”服务并启动;在Linux……

    2025-11-24
    006

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信