当前位置: 首页 > news >正文

Flowable工作流引擎

工作流

用于覆盖请假、用印、用车、入职、转正、调动、离职、合同、付款等企业审批场景。流程引擎负责建模、流转、任务和审批操作;

标准

  • BPMN 2.0:业务流程(请假、报销、审批流) → OMG 制定,已成为ISO 19510 国际标准Object Management Group(对象管理组织)全球最权威的「企业建模 / 流程 / 规则」标准制定非营利组织
  • DMN 1.3:决策规则(金额分级、风控、职级判定) → OMG 标准,替代一堆 if-else
  • CMMN 1.1:案例管理(投诉、理赔、纠纷) → OMG 标准,处理无固定顺序的复杂案件
  • UML:统一建模语言(类图、时序图)
  • CORBA:分布式对象通信标准(老一代微服务)
  • MDA:模型驱动架构(从模型自动生成代码)
  • DDS:实时数据分发(工业物联网、航天)

BPM(Business Process Management)流程引擎业务流程管理的核心中枢,负责建模→执行→监控→优化全生命周期管理,把复杂业务流程从代码中解耦,实现可视化、可配置、可追溯、可集成

基于BPMN 2.0标准的流程执行内核,解释并执行流程模型,驱动任务路由、分配、状态流转与历史归档。

核心能力(BPMN 2.0 为核心)

1)流程建模(设计态)

  • 可视化拖拽:设计器画流程图(开始 / 结束、任务、网关、事件)。
  • BPMN 元素
    • 任务:人工审批、系统自动、脚本、子流程
    • 网关:排他(XOR)、并行(AND)、包含(OR)、事件网关
    • 事件:消息、定时、错误、补偿、信号
  • 扩展DMN(决策表)做审批规则,CMMN(案例管理)处理非结构化场景。

2)流程执行(运行态)

  • 实例管理:启动、暂停、终止、挂起、恢复、版本迁移。
  • 路由控制:串行、并行、分支、汇聚、回退、跳转。
  • 任务分配:角色 / 部门 / 人员 / 岗位 / 动态候选人、会签 / 或签。
  • 数据上下文:流程变量、表单数据、参数传递、表达式路由。
  • 事务与补偿:事务边界、重试、幂等、异常处理、回滚补偿。

3)流程监控与治理

  • 实时看板:实例数、待办、逾期、耗时、通过率、瓶颈节点。
  • 历史追溯:全链路日志、操作人、时间、数据快照、审计存档。
  • 权限与 SLA:节点权限、超时提醒、催办、自动处理、绩效指标。
  • 版本管理:流程迭代、灰度发布、新旧实例隔离。

4)集成与扩展

  • API / 回调:RESTful、WebHook、消息队列、事件驱动。
  • 表单引擎:拖拽表单、字段校验、权限控制、数据绑定。
  • 低代码:配置化开发、减少编码、快速上线。

技术选型

  • Flowable:2016 从Activiti 6分叉,社区驱动、开源彻底、轻量化、全标准支持
  • Camunda:由原 Activiti 核心团队基于Activiti 5重写,企业导向、强稳定、强监控、商业生态成熟
  • 共同点:都完全支持 BPMN 2.0、DMN 1.3;都完美集成Spring Boot
  • Flowable6.x 稳定、7.x 开发活跃,Apache 2.0完全开源无限制
  • Camunda 7:2025-10EOL(停止社区维护),仅企业版付费支持
  • Camunda 8(Zeebe):新架构、云原生、事件驱动、无关系库商业授权为主,开源版功能弱

Flowable

Flowable是一款轻量级开源工作流引擎,基于BPMN 2.0标准实现业务流程自动化。

通过流程图直观定义,引擎自动处理状态变更和事件通知。

核心模块:

  1. 流程建模工具:支持BPMN 2.0标准的XML格式流程定义
  2. 流程引擎核心:负责流程实例的生命周期管理
  3. 任务管理模块:处理人工任务分配与完成
  4. 持久化层:基于MyBatis的数据库操作封装
  5. 事件监听机制:支持流程执行过程中的事件回调
  6. REST API服务:提供远程调用接口

传统企业业务流程管理面临三大痛点:

硬编码实现:业务规则变更需重新编译部署

流程碎片化:跨系统流程难以统一监控

执行不透明:缺乏流程执行轨迹的完整记录

Flowable的诞生解决了这些核心问题:

动态流程配置:通过修改BPMN文件即可调整流程逻辑

统一执行环境:所有流程节点在引擎内统一调度

完整审计追踪:自动记录每个流程节点的执行信息

Maven项目

<properties> <spring.boot.version>3.5.15</spring.boot.version> <flowable.version>7.2.0</flowable.version> </properties> <!-- SpringBoot Actuator 基础包(actuator starter依赖它) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- BPM核心流程引擎 核心流程引擎:流程定义、实例、任务、变量、异步执行器、BPMN 解析等基础能力; --> <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter-process</artifactId> <version>${flowable.version}</version> </dependency> <!--对接 Spring Boot Actuator,提供自定义监控端点: /actuator/flowable 总入口 流程引擎状态、任务统计、作业执行器指标、缓存信息 --> <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter-actuator</artifactId> <version>${flowable.version}</version> </dependency> <!-- 如果需要REST接口 --> <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter-process-rest</artifactId> <version>${flowable.version}</version> </dependency>

yaml

management: endpoints: web: exposure: include: health,info,flowable endpoint: health: show-details: always # flowable actuator 相关暂无额外大量配置,开箱即用 flowable: async-executor-activate: true database-schema-update: false # 生产建议关闭,使用脚本初始化

核心模块源码解析

核心引擎层

提供了BPMN工作流、CMMN案例管理和DMN决策的核心能力

当调用ProcessEngineConfiguration.buildProcessEngine()时,引擎初始化经历以下关键步骤:初始化过程中会创建7个核心服务(Repository/Runtime/Task/History等),每个服务持有对其他服务的引用,形成服务网格架构。

  • flowable-engine: BPMN 2.0 流程引擎核心模块。

  • flowable-cmmn-engine: CMMN 1.1 案例管理引擎。

  • flowable-dmn-engine: DMN 1.1 决策引擎。

  • flowable-idm-engine: 身份管理引擎,处理用户、组和权限

扩展引擎与服务层

在核心引擎之上,提供了模型、转换、REST API以及应用层面的支持。

  • model/converter/validation 模块: 提供BPMN、CMMN等标准的模型定义、XML/JSON转换及校验功能
  • REST API 模块: 为每个引擎提供独立的REST API,例如flowable-rest(BPMN)、flowable-cmmn-restflowable-idm-rest等,这些API模块最终可以被聚合到一个应用中。

  • 应用与集成模块: 包含flowable-app-engine(应用部署) 和flowable-spring-boot-starter等,方便与Spring Boot集成。

流程定义解析机制

当部署BPMN文件时,引擎会执行以下解析流程:

  1. XML验证:检查是否符合BPMN 2.0 Schema
  2. 模型转换:将XML节点转换为内部流程模型
  3. 依赖检查:验证网关、事件等节点的配置完整性
  4. 持久化存储:将流程定义存入ACT_RE_PROCDEF表
任务调度算法

Flowable采用异步任务队列+定时器结合的调度机制:

  1. 异步任务处理:通过AsyncJobExecutor线程池执行
  2. 定时任务调度:使用QuartzScheduler管理延迟任务
  3. 死锁检测:通过版本号机制防止并发修改冲突

数据库表

Flowable 数据库表命名规则

ACT_RE_* : ’RE’表示 repository(存储)。RepositoryService 接口操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。

ACT_RU_* : ’RU’表示 runtime。RuntimeService, TaskService运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。flowable 只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。

ACT_ID_* : ’ID’表示 identity (组织机构)。IdentityService包含标识的信息,如用户,用户组,等等。

ACT_HI_* : ’HI’表示 history。HistoryService,包含着历史的相关数据,如结束的流程实例,变量,任务,等等。

ACT_GE_* : 存储通用的数据,如ACT_GE_BYTEARRAY(存储BPMN文件、图片等二进制资源)、ACT_GE_PROPERTY(系统属性)

FLW_*:Flowable扩展引擎,Flowable在核心引擎之外提供了多种扩展功能,其表结构通常以FLW_为前缀,-FLW_ACTION_: 动作引擎,存储可触发的动作定义与实例。
-FLW_AUDIT_: 审计引擎,存储业务事件审计流。
-FLW_CO_: 内容引擎,用于存储文档、图片等内容。
-FLW_DO_: 数据对象引擎,用于存储和查询对象,常与主数据管理结合使用。
-FLW_ENGAGE_: 协同引擎,支持会话和消息功能。

数据库表结构 (34 张表,不同版本数量可能会有出入)

一般数据 (2)

ACT_GE_BYTEARRAY 通用的流程定义和流程资源

ACT_GE_PROPERTY 系统相关属性

流程定义表 (3)

ACT_RE_DEPLOYMENT 部署单元信息

ACT_RE_MODEL 模型信息

ACT_RE_PROCDEF 已部署的流程定义

运行实例表 (10)

ACT_RU_EXECUTION 运行时流程执行实例

ACT_RU_DEADLETTER_JOB 正在运行的任务表

ACT_RU_EVENT_SUBSCR 运行时事件

ACT_RU_HISTORY_JOB 历史作业表

ACT_RU_IDENTITYLINK 运行时用户关系信息

ACT_RU_JOB 运行时作业表

ACT_RU_SUSPENDED_JOB 暂停作业表

ACT_RU_TASK 运行时任务表

ACT_RU_TIMER_JOB 定时作业表

ACT_RU_VARIABLE 运行时变量表

流程历史记录 (8)

ACT_HI_ACTINST 历史的流程实例

ACT_HI_ATTACHMENT 历史的流程附件

ACT_HI_COMMENT 历史的说明性信息

ACT_HI_DETAIL 历史的流程运行中的细节信息

ACT_HI_IDENTITYLINK 历史的流程运行过程中用户关系

ACT_HI_PROCINST 历史的流程实例

ACT_HI_TASKINST 历史的任务实例

ACT_HI_VARINST 历史的流程运行中的变量信息

用户用户组表 (9)

ACT_ID_BYTEARRAY 二进制数据表

ACT_ID_GROUP 用户组信息表

ACT_ID_INFO 用户信息详情表

ACT_ID_MEMBERSHIP 人与组关系表

ACT_ID_PRIV 权限表

ACT_ID_PRIV_MAPPING 用户或组权限关系表

ACT_ID_PROPERTY 属性表

ACT_ID_TOKEN 系统登录日志表

ACT_ID_USER 用户表

其他表 (2)

ACT_EVT_LOG 事件日志表

ACT_PROCDEF_INFO 流程定义信息

参考文档:

流程设计器(BPMN) | RuoYi Office 文档

Flowable数据字典详解数据库表结构与命名规则-开发者社区-阿里云

Overview (Flowable Open Source 7.2.0.10)

Flowable工作流引擎深度解析:从源码到架构设计-百度开发者中心

http://www.jsqmd.com/news/1392974/

相关文章:

  • 分布式存储 RPC 评审:超时、重试和幂等要连着看
  • Stellarium星空文化终极指南:一键切换千年文明,看清同一片天
  • 一台旧iPhone的自救:applera1n激活锁绕过工具全解析
  • RPG Maker MV解密神器上手指南:不用装软件,浏览器一键解锁加密资源
  • 婴童蛋黄油精华霜哪家好:【蜜妙诗】抚平起皮粗糙 - 17328623207
  • 2026西双版纳装修公司推荐:本地深耕15年的靠谱之选 - 品牌品鉴馆
  • 5 分钟搞定 B站视频下载:BiliTools 跨平台下载工具新手速通
  • 2026年气体在线分析仪公司哪家好?服务优、技术强且口碑佳的品牌 - 选型|行业|价格|案例
  • 工业厂房机电装修工程公司哪家专业?服务、质量与性价比综合评估 - 选型|行业|价格|案例
  • [软件测试] 考试问卷通
  • 2026测试岗面试,没人再问你“黑盒白盒有什么区别”了——现在的题你根本没见过
  • 金融DevOps自动化测试平台推荐
  • 国家自然科学基金申请书LaTeX模板实战指南:从clone到一键出PDF,半小时上手
  • 2026福州奢侈包回收选寄卖还是买断?两种模式资金到账速度 - 一刻涨新知
  • 【企业微信】iPad协议开发客户群操作API设计:支持群生命周期全流程管理与精细化权限控制
  • 弧形异形 LED 显示屏厂家有哪些?2026 户外、宴会厅、地面屏品牌推荐 - 品牌品鉴馆
  • 2026年车辆价值贬值评估专业解读:验车帮司法级鉴定如何守护消费者权益 - 深度智识库
  • 2026 年郑州玻璃吸盘车租赁、吊车租赁,工程设备租赁答疑 - LYL仔仔
  • 【学习笔记】tcpdump+Wireshark抓包(2)
  • 常州GEO服务公司推荐选型指南:六大维度横评帮你选对不踩坑 - 趣闻早乐评
  • 从简历到Offer:Java面试准备的实用方法
  • 【技术地图】OLED 专题调研 · 文章索引
  • 宿州市2026年最新电大中专报考详解! - 我叫小周
  • 名包回收18332179539 2026邯郸二手箱包交易指南 京津冀小强 - 京津冀小强
  • 毫米波雷达实时可视化完全指南:Python轻松读懂AWR1843
  • 公证和认证是一起做吗?不清楚办理流程,慧办好带您分清两个环节 - 信息快递
  • HackRF频谱分析仪完整评测:从零上手到横向对比,一文搞懂这款开源神器
  • 从 33GB 到 5GB:这款多线程微信清理工具,帮你安全告别缓存堆积
  • 出境租车自驾必看:驾照公证有效期是多久?办理步骤说明与避坑要点 - 信息快递
  • 【大模型应用开发-ES】(七)ElasticSearch全文搜索