当前位置:首页 > 工具 > 正文内容

基于Flowable、React与bpmn-js的企业级流程引擎系统构建

访客 工具 2026年6月7日 1

技术选型的考量与架构设计

在企业内部系统开发中,流程审批功能普遍存在,从基础报销到复杂项目评审,均依赖于工作流机制。传统OA系统虽能快速落地,但灵活性差,业务变更常需外部厂商支持,成本高且响应慢。为此,我们选择一套自研方案:以 Flowable 作为核心流程引擎,React 构建前端界面,搭配 bpmn-js 实现专业流程图可视化。

后端采用 Flowable,其为 Activiti 的活跃分支,具备轻量嵌入特性,与 Spring Boot 集成无缝。它提供标准 REST 接口,支持多数据源配置,表结构清晰(如 ACT_RE_PROCDEF 存储流程定义,ACT_RU_TASK 管理运行时任务),便于调试和扩展。相比 Camunda 等更重型框架,Flowable 在中小型项目中更具性价比。

前端基于 React,利用组件化思想将流程列表、任务看板、表单等模块解耦,提升可维护性。结合 Ant Design 及其 ProTableProForm 等高级组件,可快速搭建符合企业规范的 UI,减少样式开发负担。

流程图交互层由 bpmn-js 实现。该库遵循 BPMN 2.0 标准,是业界主流的图形建模工具。虽然学习曲线稍陡,但其开放的插件机制允许自定义工具栏、属性面板、节点样式甚至新增图形类型。尽管存在若干 React 封装版本,但直接集成原生 bpmn-js 能获得更高的控制自由度与性能表现。

整体架构呈现"三层分离":流程引擎负责逻辑执行,前端专注用户体验,可视化层独立处理图形交互。三者通过标准化的 REST API 协同工作,形成一个可扩展、易维护的企业级流程平台。

环境初始化与项目搭建

以下步骤可帮助你快速建立最小可运行原型。

后端:Spring Boot + Flowable 初始化

使用 IntelliJ IDEA 或 Spring Initializr 创建项目,添加以下依赖:

<dependency>
    <groupId>org.flowable</groupId>
    <artifactId>flowable-spring-boot-starter</artifactId>
    <version>6.8.0</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.4</version>
</dependency>

application.yml 中配置数据库连接并禁用自动初始化:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/workflow_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver

flowable:
  async-executor-activate: false
  database-schema-update: false
  rest-api-enabled: false

启动应用后,若设置 database-schema-update: true,Flowable 将自动创建约 60 张核心表。建议首次启动后改为 false,避免后续误操作。检查数据库可见如下分类表结构:

  • ACT_RE_*:流程资源定义
  • ACT_RU_*:运行时实例与任务
  • ACT_HI_*:历史记录
  • ACT_GE_*:通用元数据

前端:React + Vite 项目搭建

使用 Vite 快速初始化项目:

npm create vite@latest workflow-ui --template react
cd workflow-ui
npm install
npm install antd @ant-design/pro-components bpmn-js

main.jsx 中引入 Ant Design 全局样式:

import 'antd/dist/antd.css';
// ... 其他导入

运行 npm run dev 启动本地服务,确认前后端环境已就绪。

API 接口设计与通信实现

前后端分离的核心在于接口契约的清晰定义。典型接口可分为四类:

  • 流程定义管理(发布、查询、删除)
  • 流程实例启动与终止
  • 任务分配、签收与完成
  • 历史数据查询与统计

示例:流程模型管理接口控制器(部分代码)

@RestController
@RequestMapping("/api/process-model")
public class ProcessModelController {

    @Autowired
    private RepositoryService repositoryService;

    @GetMapping("/list")
    public ResponseEntity<List<ProcessDefinitionDto>> listDefinitions() {
        List<ProcessDefinition> defs = repositoryService.createProcessDefinitionQuery()
            .orderByProcessDefinitionKey().asc()
            .list();
        return ResponseEntity.ok(defs.stream()
            .map(this::toDto)
            .collect(Collectors.toList()));
    }

    @PostMapping("/deploy")
    public ResponseEntity<String> deploy(@RequestBody DeployRequest request) {
        Deployment deployment = repositoryService.createDeployment()
            .name(request.getName())
            .addInputStream(request.getFileName(), new ByteArrayInputStream(request.getContent()))
            .deploy();
        return ResponseEntity.ok(deployment.getId());
    }
}

前端通过 Axios 调用上述接口,获取流程列表用于渲染流程图或任务池,并在用户操作时触发对应流程事件。

标签: Flowablebpmn-js

相关文章

Trojan服务器搭建与配置

一、整体架构(先对齐认知)Clash Meta (PC / iOS / Android)        ↓ TLS   Trojan Server (443)        ↓     InternetTrojan 的核心是: TLS + HTTPS 流量伪装 看起来像正常网站 非常适合...

Tailscale 的详细用法

Tailscale 是一种基于 WireGuard 协议 的 零配置 VPN(虚拟私有网络)服务,让设备之间能够 安全、加密地直接连接,就像它们在同一个本地网络一样。它的核心特点是 简单、安全、跨平台。Tailscale 非常适合 没有公网 IP、两台电脑不在同一局域网 的场景。 简单来说,Tailscale 是什么?Tailscale 是一款让你的各种设备(电脑、服务器、手机...

Clash Tun 模式 导致 爱快(iKuai SD-Wan)内网域名无法访问

一、Clash  DNS 配置dns:  enable: true  listen: 0.0.0.0:53  ipv6: true  enhanced-mode: redir-host  nameserver:    - 223.5.5.5    - 223.6.6.6iKuai 内网域名 ...

深入解析Node.js运行环境与异步I/O架构

深入解析Node.js运行环境与异步I/O架构

核心定义与价值Node.js本质上是一个JavaScript运行环境,而非编程语言或应用框架。它赋予了JavaScript脱离浏览器在服务端、命令行工具及网络应用中执行的能力。其核心意义在于:用单一语言打通前后端开发壁垒。基于事件驱动与非阻塞I/O的架构特性,Node.js在处理API网关、实时通信及微服务等I/O密集型场景时表现卓越,已成为现代后端工程的主流选择。浏览器沙箱限制1995年Java...

基于ELK的日志集中化分析系统搭建

构建统一日志管理平台的必要性 在分布式架构中,各服务节点独立运行,日志分散存储于不同主机。传统通过命令行工具如grep、awk逐个检索日志的方式,在数据量庞大时效率极低,难以实现快速定位问题。为提升运维效率,需建立集中式日志处理体系,具备日志采集、传输、存储、分析与告警能力。 ELK技术栈核心组件解析 Elasticsearch:分布式搜索引擎,支持全文检索、实时数据分析和高可用集群部署,...

企业级 Oracle 数据库部署与初始化实战

系统环境规划与前置条件检查 在着手部署 Oracle RDBMS 之前,必须对底层基础设施进行严格评估。该企业级关系型数据库管理系统常用于处理高并发业务逻辑,因此对计算资源、存储 I/O 及网络稳定性有较高标准。 1. 资源规格定义 为确保实例稳定运行,建议满足以下基准配置: 计算单元:双核或以上处理器,主频不低于 2.0GHz。 内存容量:物理内存至少 2GB,生产环境建议扩容至 4GB 以...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。