惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
月光博客
月光博客
V
Visual Studio Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
Jina AI
Jina AI
J
Java Code Geeks
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
Recorded Future
Recorded Future
C
Check Point Blog
腾讯CDC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
SecWiki News
SecWiki News
博客园 - Franky
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News | PayPal Newsroom
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security @ Cisco Blogs
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
F
Full Disclosure
The Cloudflare Blog
Y
Y Combinator Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
AI
AI
N
News and Events Feed by Topic
T
Tor Project blog
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog

博客园 - timseng

ai辅助升级前端安全更新(贼快!hh openclaw的token又耗完了,先不冲了,记录下折腾踩坑过程 (如果需要协助安装500,帮忙卸载250[doge]) VS Code我的配置(持续更新) springboot升级3x导致邮件发送失败:错误1 jakarta.mail.NoSuchProviderException: smtp nice du更好的du分析文件占用工具ncdu 使用MITMProxy转发https请求到本地、保存鉴权给本地请求(二) 前端发布shell脚本 virtualBox环境Ubuntu升级后太卡,转debian很丝滑 收藏:加不加「/」?Nginx location 路径与 proxy_pass 的规律 使用visjs分析flowable流程数据 浏览器标签页多行显示:使用Floorp浏览器 最先进的跨平台 Firefox 衍生品 开源之光 开源WAF:ModSecurity探究与部署 动态条件实现java mysql备份恢复云端之核心:更新扫描MySQL库里的所有表的UPDATE_TIME,若发生变动就mysqldump 使用MITMProxy转发请求到本地、保存鉴权给本地请求 这款Ubuntu的默认壁纸水母是真漂亮啊 笑死!'m not going to tell you who, but I know someone who recently locked himself out of the system he was using for an article covering iptables by forgetting the SSH rule. itext的PdfPCell中设置行间距失败的问题 Java递归函数计算递归次数出错
推广:flowable工作流引擎就是高级版本的数据库而已(一)
timseng · 2025-08-05 · via 博客园 - timseng

flowable 和mysql的类比 数据库都用过吧,定义好表之后就可以增删改查了,一行一行的数据

flowable高级一些,可以把逻辑定义好之后,就可以启动、驱动、结束、并接收回调通知

 Flowable 和 MySQL 确实可以这样对比理解,但 Flowable 更偏向于 “业务流程的自动化管理”,而 MySQL 是纯粹的 “数据存储与操作”。以下是具体类比和差异分析:


1. 基础类比:数据 vs 流程

MySQLFlowable
定义表结构(如 userorder 定义流程模型(BPMN 图,如请假流程)
插入一行数据(INSERT 启动一个流程实例(runtimeService.startProcessInstance()
更新数据(UPDATE 驱动流程到下一步(taskService.complete(taskId)
查询数据(SELECT 查询流程状态(historyService 查历史记录)
删除数据(DELETE 终止流程(runtimeService.deleteProcessInstance()

2. 核心差异:Flowable 的“高级”特性

(1) 逻辑预定义

  • MySQL:需要手动编写代码实现业务逻辑(如“订单支付后更新库存”)。

  • Flowable:直接在 BPMN 流程图 中定义逻辑(如网关判断、服务任务调用),引擎自动执行。

(2) 状态驱动

  • MySQL:数据是静态的,需外部代码控制状态流转(如 status 字段从 待审核 改为 已通过)。

  • Flowable:流程引擎自动管理状态(如从 提交申请 → 经理审批 → HR归档)。

(3) 监听与回调

  • MySQL:需依赖触发器(Trigger)或应用层事件(如 Spring Event)。

  • Flowable:原生支持监听器(Listener),在流程节点触发时自动回调(如 审批通过后发送邮件)。

(4) 历史追踪

  • MySQL:需手动设计历史表或日志表。

  • Flowable:自动记录流程历史(ACT_HI_* 表),支持回溯。


3. 具体场景示例

场景:员工请假审批

  • MySQL 实现:

    1. 创建表 leave_apply(字段:iduser_iddaysstatus)。

    2. 代码中硬编码状态流转逻辑(如 status=1 时通知经理审批)。

    3. 需手动处理超时、撤回等异常情况。

  • Flowable 实现:

    1. 绘制 BPMN 流程图(用户提交 → 经理审批 → 自动归档)。

    2. 启动流程后,引擎自动推动审批,处理超时(边界事件)、回调通知。

    3. 通过 ACT_RU_TASK 表查看当前任务,ACT_HI_PROCINST 表查看历史。


4. 协作关系

  • MySQL 是 Flowable 的底层存储:
    Flowable 本身依赖数据库(默认使用 MySQL/Oracle 等),所有流程数据(如运行中的任务、历史记录)均存储在表中(ACT_* 前缀的表)。

  • 配合使用:

    • Flowable 管理流程,MySQL 存储业务数据(如 leave_apply 的详细数据)。

    • 通过 流程变量(Variables) 关联业务数据(如 flowable.setVariable("leaveId", 123))。


5. 总结

维度MySQLFlowable
核心功能 数据存储与操作 业务流程自动化
灵活性 高(需手动编码逻辑) 中(依赖预定义流程)
适用场景 通用数据管理 审批流、工单系统、自动化任务
复杂度 高(需学习 BPMN、引擎 API)

一句话总结:
MySQL 是“数据库工具”,而 Flowable 是“业务流程自动化工具”——它基于数据库,但抽象了状态管理和逻辑驱动层,让你从手动维护 status 字段的泥潭中解脱出来!

flowable 和mysql的类比 数据库都用过吧,定义好表之后就可以增删改查了,一行一行的数据 flowable高级一些,可以把逻辑定义好之后,就可以启动、驱动、结束、并接收回调通知

你的类比很形象!Flowable 和 MySQL 确实可以这样对比理解,但 Flowable 更偏向于 “业务流程的自动化管理”,而 MySQL 是纯粹的 “数据存储与操作”。以下是具体类比和差异分析:


1. 基础类比:数据 vs 流程

MySQLFlowable
定义表结构(如 userorder 定义流程模型(BPMN 图,如请假流程)
插入一行数据(INSERT 启动一个流程实例(runtimeService.startProcessInstance()
更新数据(UPDATE 驱动流程到下一步(taskService.complete(taskId)
查询数据(SELECT 查询流程状态(historyService 查历史记录)
删除数据(DELETE 终止流程(runtimeService.deleteProcessInstance()

2. 核心差异:Flowable 的“高级”特性

(1) 逻辑预定义

  • MySQL:需要手动编写代码实现业务逻辑(如“订单支付后更新库存”)。

  • Flowable:直接在 BPMN 流程图 中定义逻辑(如网关判断、服务任务调用),引擎自动执行。

(2) 状态驱动

  • MySQL:数据是静态的,需外部代码控制状态流转(如 status 字段从 待审核 改为 已通过)。

  • Flowable:流程引擎自动管理状态(如从 提交申请 → 经理审批 → HR归档)。

(3) 监听与回调

  • MySQL:需依赖触发器(Trigger)或应用层事件(如 Spring Event)。

  • Flowable:原生支持监听器(Listener),在流程节点触发时自动回调(如 审批通过后发送邮件)。

(4) 历史追踪

  • MySQL:需手动设计历史表或日志表。

  • Flowable:自动记录流程历史(ACT_HI_* 表),支持回溯。


3. 具体场景示例

场景:员工请假审批

  • MySQL 实现:

    1. 创建表 leave_apply(字段:iduser_iddaysstatus)。

    2. 代码中硬编码状态流转逻辑(如 status=1 时通知经理审批)。

    3. 需手动处理超时、撤回等异常情况。

  • Flowable 实现:

    1. 绘制 BPMN 流程图(用户提交 → 经理审批 → 自动归档)。

    2. 启动流程后,引擎自动推动审批,处理超时(边界事件)、回调通知。

    3. 通过 ACT_RU_TASK 表查看当前任务,ACT_HI_PROCINST 表查看历史。


4. 协作关系

  • MySQL 是 Flowable 的底层存储:
    Flowable 本身依赖数据库(默认使用 MySQL/Oracle 等),所有流程数据(如运行中的任务、历史记录)均存储在表中(ACT_* 前缀的表)。

  • 配合使用:

    • Flowable 管理流程,MySQL 存储业务数据(如 leave_apply 的详细数据)。

    • 通过 流程变量(Variables) 关联业务数据(如 flowable.setVariable("leaveId", 123))。


5. 总结

维度MySQLFlowable
核心功能 数据存储与操作 业务流程自动化
灵活性 高(需手动编码逻辑) 中(依赖预定义流程)
适用场景 通用数据管理 审批流、工单系统、自动化任务
复杂度 高(需学习 BPMN、引擎 API)

一句话总结:
MySQL 是“数据库工具”,而 Flowable 是“业务流程自动化工具”——它基于数据库,但抽象了状态管理和逻辑驱动层,让你从手动维护 status 字段的泥潭中解脱出来!

image