






















flowable 和mysql的类比 数据库都用过吧,定义好表之后就可以增删改查了,一行一行的数据
flowable高级一些,可以把逻辑定义好之后,就可以启动、驱动、结束、并接收回调通知
Flowable 和 MySQL 确实可以这样对比理解,但 Flowable 更偏向于 “业务流程的自动化管理”,而 MySQL 是纯粹的 “数据存储与操作”。以下是具体类比和差异分析:
| MySQL | Flowable |
|---|---|
定义表结构(如 user、order) |
定义流程模型(BPMN 图,如请假流程) |
插入一行数据(INSERT) |
启动一个流程实例(runtimeService.startProcessInstance()) |
更新数据(UPDATE) |
驱动流程到下一步(taskService.complete(taskId)) |
查询数据(SELECT) |
查询流程状态(historyService 查历史记录) |
删除数据(DELETE) |
终止流程(runtimeService.deleteProcessInstance()) |
MySQL:需要手动编写代码实现业务逻辑(如“订单支付后更新库存”)。
Flowable:直接在 BPMN 流程图 中定义逻辑(如网关判断、服务任务调用),引擎自动执行。
MySQL:数据是静态的,需外部代码控制状态流转(如 status 字段从 待审核 改为 已通过)。
Flowable:流程引擎自动管理状态(如从 提交申请 → 经理审批 → HR归档)。
MySQL:需依赖触发器(Trigger)或应用层事件(如 Spring Event)。
Flowable:原生支持监听器(Listener),在流程节点触发时自动回调(如 审批通过后发送邮件)。
MySQL:需手动设计历史表或日志表。
Flowable:自动记录流程历史(ACT_HI_* 表),支持回溯。
MySQL 实现:
创建表 leave_apply(字段:id, user_id, days, status)。
代码中硬编码状态流转逻辑(如 status=1 时通知经理审批)。
需手动处理超时、撤回等异常情况。
Flowable 实现:
绘制 BPMN 流程图(用户提交 → 经理审批 → 自动归档)。
启动流程后,引擎自动推动审批,处理超时(边界事件)、回调通知。
通过 ACT_RU_TASK 表查看当前任务,ACT_HI_PROCINST 表查看历史。
MySQL 是 Flowable 的底层存储:
Flowable 本身依赖数据库(默认使用 MySQL/Oracle 等),所有流程数据(如运行中的任务、历史记录)均存储在表中(ACT_* 前缀的表)。
配合使用:
Flowable 管理流程,MySQL 存储业务数据(如 leave_apply 的详细数据)。
通过 流程变量(Variables) 关联业务数据(如 flowable.setVariable("leaveId", 123))。
| 维度 | MySQL | Flowable |
|---|---|---|
| 核心功能 | 数据存储与操作 | 业务流程自动化 |
| 灵活性 | 高(需手动编码逻辑) | 中(依赖预定义流程) |
| 适用场景 | 通用数据管理 | 审批流、工单系统、自动化任务 |
| 复杂度 | 低 | 高(需学习 BPMN、引擎 API) |
一句话总结:
MySQL 是“数据库工具”,而 Flowable 是“业务流程自动化工具”——它基于数据库,但抽象了状态管理和逻辑驱动层,让你从手动维护 status 字段的泥潭中解脱出来!
flowable 和mysql的类比 数据库都用过吧,定义好表之后就可以增删改查了,一行一行的数据 flowable高级一些,可以把逻辑定义好之后,就可以启动、驱动、结束、并接收回调通知
你的类比很形象!Flowable 和 MySQL 确实可以这样对比理解,但 Flowable 更偏向于 “业务流程的自动化管理”,而 MySQL 是纯粹的 “数据存储与操作”。以下是具体类比和差异分析:
| MySQL | Flowable |
|---|---|
定义表结构(如 user、order) |
定义流程模型(BPMN 图,如请假流程) |
插入一行数据(INSERT) |
启动一个流程实例(runtimeService.startProcessInstance()) |
更新数据(UPDATE) |
驱动流程到下一步(taskService.complete(taskId)) |
查询数据(SELECT) |
查询流程状态(historyService 查历史记录) |
删除数据(DELETE) |
终止流程(runtimeService.deleteProcessInstance()) |
MySQL:需要手动编写代码实现业务逻辑(如“订单支付后更新库存”)。
Flowable:直接在 BPMN 流程图 中定义逻辑(如网关判断、服务任务调用),引擎自动执行。
MySQL:数据是静态的,需外部代码控制状态流转(如 status 字段从 待审核 改为 已通过)。
Flowable:流程引擎自动管理状态(如从 提交申请 → 经理审批 → HR归档)。
MySQL:需依赖触发器(Trigger)或应用层事件(如 Spring Event)。
Flowable:原生支持监听器(Listener),在流程节点触发时自动回调(如 审批通过后发送邮件)。
MySQL:需手动设计历史表或日志表。
Flowable:自动记录流程历史(ACT_HI_* 表),支持回溯。
MySQL 实现:
创建表 leave_apply(字段:id, user_id, days, status)。
代码中硬编码状态流转逻辑(如 status=1 时通知经理审批)。
需手动处理超时、撤回等异常情况。
Flowable 实现:
绘制 BPMN 流程图(用户提交 → 经理审批 → 自动归档)。
启动流程后,引擎自动推动审批,处理超时(边界事件)、回调通知。
通过 ACT_RU_TASK 表查看当前任务,ACT_HI_PROCINST 表查看历史。
MySQL 是 Flowable 的底层存储:
Flowable 本身依赖数据库(默认使用 MySQL/Oracle 等),所有流程数据(如运行中的任务、历史记录)均存储在表中(ACT_* 前缀的表)。
配合使用:
Flowable 管理流程,MySQL 存储业务数据(如 leave_apply 的详细数据)。
通过 流程变量(Variables) 关联业务数据(如 flowable.setVariable("leaveId", 123))。
| 维度 | MySQL | Flowable |
|---|---|---|
| 核心功能 | 数据存储与操作 | 业务流程自动化 |
| 灵活性 | 高(需手动编码逻辑) | 中(依赖预定义流程) |
| 适用场景 | 通用数据管理 | 审批流、工单系统、自动化任务 |
| 复杂度 | 低 | 高(需学习 BPMN、引擎 API) |
一句话总结:
MySQL 是“数据库工具”,而 Flowable 是“业务流程自动化工具”——它基于数据库,但抽象了状态管理和逻辑驱动层,让你从手动维护 status 字段的泥潭中解脱出来!

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。