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

相关推荐

  • R语言读取Excel数据库,用什么方法最简单高效?

    在数据分析和科学计算的领域中,R语言凭借其强大的统计功能和丰富的可视化包,成为了众多专业人士的首选工具,现实世界中的数据往往存储在Excel文件中,如何高效、准确地将Excel数据库中的数据读取到R环境中,是每一位R用户必须掌握的基础技能,幸运的是,R社区提供了多种专门用于处理Excel文件的包,使得这一过程变……

    2025-10-24
    0028
  • 移动数据库又卡又慢还占内存,开发者该如何系统性地调优?

    移动数据库的性能优化是提升应用响应速度、降低功耗、保障用户体验流畅性的关键环节,它并非单一的操作,而是一个涉及数据库设计、查询编写、事务管理及底层配置的系统性工程,以下将从几个核心层面,深入探讨如何有效调优移动数据库,数据库设计与索引优化一切性能优化的基础是良好的数据库设计,在设计阶段,应遵循范式化原则以减少数……

    2025-10-10
    0014
  • 用友如何导出数据库?详细步骤与注意事项有哪些?

    用友作为国内领先的企业管理软件提供商,其数据库导出功能是用户日常操作中较为常见的需求,无论是数据备份、迁移还是分析,掌握正确的导出方法都至关重要,用友软件版本众多,不同版本在数据库导出操作上可能存在差异,但核心逻辑和主要路径基本一致,以下将详细阐述用友数据库导出的通用方法、注意事项及不同场景下的操作技巧,帮助用……

    2025-09-29
    0017
  • 新建数据库已存在怎么办?如何解决冲突或重命名?

    在开发和管理数据库的过程中,开发者或管理员可能会遇到“新建数据库时提示已存在”的错误提示,这种情况通常发生在尝试创建一个与现有数据库同名的数据库时,尤其是在自动化脚本、批量部署或手动操作中较为常见,解决这一问题需要明确错误原因,并根据实际需求选择合适的处理方案,以下是几种常见的解决方案及其适用场景,检查数据库是……

    2025-11-16
    005

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信