1. 概述

在之前的文章中(基于 JavaSpring 的 Activiti API),我们学习了如何通过编程方式管理流程。现在想快速搭建一个带 UI 的 Activiti 演示环境?有两个现成的 Web 应用可以帮你几分钟搞定:

activiti-app:提供完整用户界面,支持身份管理、任务管理、用户/组创建等操作
activiti-rest:提供 REST API 接口,用于操作流程、任务等核心功能

本文将深入解析这两个工具的使用方法和核心功能,帮你快速上手 Activiti 的可视化管理和接口调用。

2. 下载准备

直接从 Activiti 官网 下载 WAR 包即可。以 v6.0.0 为例:

  1. 下载 activiti-6.0.0.zip
  2. 解压后进入 activiti-6.0.0/wars 目录
  3. 找到 activiti-app.waractiviti-rest.war 两个文件

⚠️ 注意:确保已安装 Java 运行环境和 Apache Tomcat(Activiti 主要在 Tomcat 上测试)。

3. Activiti 快速入门应用

3.1. 数据库配置

默认使用 H2 内存数据库。如需修改配置:

  1. GitHub 克隆源码
  2. 修改 activiti-app.properties 文件
  3. 运行 start.sh 脚本重新生成 WAR 包

部署到 Tomcat 后访问:http://localhost:8080/activiti-app,首页效果如下:

activiti

3.2. 快速创建流程

点击 Kickstart App 进入流程设计器:

  1. 选择 Processes 标签页
  2. 点击 Create Process 创建新流程
  3. 拖拽组件设计流程(开始事件→用户任务→结束事件)

activiti app createnewmodel

关键配置步骤:

  • 任务分配:点击用户任务 → 选择 Assignments → 设置执行人(如流程发起人)

    activiti app assign task

  • 表单关联

    1. 选择 Referenced Form → 点击 New Form
    2. 添加文本字段(如 message
    3. 勾选 Required 强制必填

    activiti create form

    activiti create form 2

3.3. 任务管理应用

Task App 中管理运行中的流程:

  1. 进入 Apps 标签页
  2. 创建 Process App 并关联流程定义
  3. 发布应用 使流程对其他用户可见

activiti app publish app

启动流程:

  1. 切换到 Processes 标签页
  2. 点击 Start Process 选择目标流程
  3. 点击 start 按钮启动

activiti app start process

处理任务:

  1. 在待办任务列表点击任务
  2. 填写必填字段(如 message
  3. 点击 Complete 提交

activiti give user input

查看流程图: 点击 Show Diagram 可实时查看流程进度(高亮显示当前节点):

activiti app process diagram

3.4. 身份管理应用

独立模块支持:

  • 用户/组管理
  • 角色权限分配
  • 组织架构维护

4. Activiti REST 接口

4.1. 部署与启动流程

基础配置:

  • 部署 activiti-rest.war 到 Tomcat
  • 默认连接 H2 内存数据库
  • 修改 WEB-INF/classes/db.properties 可切换数据库
  • 所有接口基础 URL:http://localhost:8080/activiti-rest/service/
  • 需要基本 HTTP 认证(用户名/密码)

部署流程定义:

POST /repository/deployments
Content-Type: multipart/form-data

[上传 BPMN 文件]

响应示例:

{    
    "id": "40",
    "name": "user_msg.bpmn20.xml",
    "deploymentTime": "2017-10-04T17:28:07.963+05:30",
    "category": null,
    "url": "http://localhost:8080/activiti-rest/service/repository/deployments/40",
    "tenantId": ""
}

启动流程实例:

POST /runtime/process-instances
Content-Type: application/json

{
    "processDefinitionKey":"user_msg"
}

响应示例:

{
    "id": "44",
    "url": "http://localhost:8080/activiti-rest/service/runtime/process-instances/44",
    "businessKey": null,
    "suspended": false,
    "ended": false,
    "processDefinitionId": "user_msg:1:43",
    "processDefinitionKey": "user_msg"
}

查看流程图:

GET /runtime/process-instances/{id}/diagram

效果如下(高亮显示当前节点): activiti rest diagram

4.2. 完成任务

查询待办任务:

GET /runtime/tasks

响应示例:

{
    "data": [
        {
            "id": "49",
            "name": "User Input Message",
            "assignee": "$INITIATOR",
            "createTime": "2017-10-04T17:33:07.205+05:30"
        }
    ]
}

完成任务:

POST /runtime/tasks/{taskId}
Content-Type: application/json

{
    "action": "complete",
    "variables": [{
        "name": "message",
        "value": "This is a User Input Message"
    }]
}

⚠️ 踩坑提示:variables 数组中的字段名必须与流程表单字段完全匹配!

5. 总结

本文系统介绍了 Activiti 的两大核心工具:

  • 可视化工具:通过 activiti-app 实现流程设计、任务管理和身份管理
  • 接口服务:通过 activiti-rest 提供完整的 REST API 操作能力

推荐资源:

这两个工具组合使用,可以快速搭建从流程设计到接口调用的完整工作流解决方案,特别适合需要快速验证流程逻辑的场景。


原始标题:Activiti Kickstart App and Activiti Rest Webapp | Baeldung