数据库事务
介绍
数据库事务节点用于将一组数据库操作放入同一个事务中执行。适合需要保证多步数据处理“全部成功或全部回滚”的场景,例如创建订单后扣减库存、写入明细、更新状态等。
事务节点目前只支持数据库数据源。节点内同一数据源的数据操作会自动纳入该事务;其他数据源不会使用该事务。
创建节点
在工作流配置界面中,点击流程中的加号(“+”)按钮,添加“数据库事务”节点。

创建后会生成两个分支:
- 执行:事务内执行的主分支。该分支全部成功时,事务自动提交;任意节点失败或出错时,事务自动回滚。
- 回滚后:回滚后执行的分支。该分支在事务外执行,可用于记录日志、发送通知、执行补偿处理等。

节点配置

数据源
选择该事务控制的数据库数据源。只有同一数据 源的数据操作节点会自动纳入事务。
隔离级别
设置事务隔离级别,默认值为 READ UNCOMMITTED。如业务需要更严格的数据一致性,可根据数据库能力和并发要求选择其他隔离级别。
回滚后继续执行工作流
开启后,回滚后 分支执行完成后,工作流会继续执行事务节点后面的节点。
关闭时,回滚后 分支执行完成后,工作流会在事务节点处结束,不再继续后续节点。
使用方法
约束
执行 分支内不支持使用会挂起流程的异步节点,例如人工处理、延时等。事务需要在当前执行过程中完成提交或回滚,如果 执行 分支进入等待状态,系统会回滚事务并将流程标记为失败。
回滚后 分支不在事务内执行,因此不受上述限制。可以根据业务需要在该分支中使用异步节点,例如发送请求、等待人工确认或延时处理。
注意
事务会占用数据库连接直到提交或回滚。请避免在 执行 分支中编排长耗时操作,尽量只放必要的数据读写和判断逻辑。
嵌套事务
事务节点可以嵌套使用,但需要注意数据源范围:
- 内层事务与外层事务使用同一数据源时,会在外层事务范围内创建嵌套事务,由数据库和 Sequelize 按对应能力处理。
- 内层事务使用不同数据源时,不会复用外层事务,会为该数据源创建独立事务。
- 如果工作流由同步的数据表事件触发,触发器本身可能已经提供同一数据源的顶层事务。事务节点会优先复用同一数据源的外层事务,不会复用不同数据源的事务。
嵌套事务会增加理解和排错成本。通常建议只在确实需要局部回滚边界时使用嵌套事务,否则优先用一个事务节点包裹完整的数据处理流程。
常见场景
一个典型流程如下:
- 在
执行分支中查询或创建相关数据。 - 继续在
执行分支中更新库存、状态、明细等同一数据源的数据。 - 如果全部成功,事务自动提交。
- 如果任意节点失败或出错,事务自动回滚,并进入
回滚后分支。 - 在
回滚后分支中记录失败原因、发送通知或执行补偿逻辑。
如果需要在回滚后继续执行后续流程,请开启“回滚后继续执行工作流”。

