工作流管理

前置条件

阅读本页前,请确保你已按照 AI 搭建快速开始 安装了 NocoBase CLI 并完成了初始化。

简介

工作流管理 Skill 用于创建、编辑、启用和诊断 NocoBase 工作流——从触发器选择到节点链搭建,再到执行结果排查,覆盖工作流使用的完整生命周期。

能力范围

可以做:

  • 创建工作流:选择触发器类型,逐个添加处理节点
  • 编辑工作流:修改触发器配置、增删改节点、移动和复制节点
  • 版本管理:已执行过的版本会自动创建新修订,不影响历史记录
  • 启用和手动执行工作流
  • 诊断失败的执行:定位失败节点和错误信息

不能做:

  • 不能设计数据模型(用数据建模 Skill
  • 不能安装 MCP 或处理环境问题(用环境管理 Skill
  • 不能删除整个工作流(需要单独确认的高风险操作)
  • 不能凭空编造节点类型或触发器类型

提示词示例

场景 A:创建新工作流

帮我编排一个订单创建之后自动扣减商品库存的工作流

Skill 会先确认触发器类型和节点链设计,确认后逐步创建。

20260419234303

场景 B:编辑已有工作流

在订单创建的工作流里,增加一个当库存不足时的通知节点,给管理员发送站内信

如果当前版本已执行过,会先创建新修订再编辑,不影响历史执行记录。

20260419234419

场景 C:诊断执行失败

订单创建后扣减库存的工作流最近一次执行失败了,帮我看看哪里出了问题

会找到最近一次失败的执行,定位失败节点和错误信息,给出修复建议。

20260419234532

场景 D:分析或总结工作流逻辑

帮我分析一下"订单创建扣减商品库存"这个工作流的处理逻辑

输出:

# 工作流分析:订单创建扣减商品库存

## 工作流概览
**工作流名称:** 订单创建扣减商品库存

### 触发器
- **类型:** 操作后事件 (Action)
- **触发条件:**`orders`(订单)集合执行“创建”操作时触发(全局触发)。
- **关联数据:** 触发时携带 `details`(订单明细)关联数据。
- **执行模式:** 异步

---

### 节点执行链

**[触发] 订单创建**


**[1] 循环订单明细 (Loop)**
    * **目标:** `{{$context.data.details}}`
    * *操作:对每一条明细项执行以下步骤:*


    **branchIndex=0 (循环体)**


    **[2] 查询商品库存 (Query)**
    * **集合:** `products`
    * **过滤条件:** `id = {{$scopes.5u6lsjzf8vh.item.productId}}`


    **[3] 检查库存是否充足 (Condition)**
    * **引擎:** `formula.js`
    * **表达式:** `{{$jobsMapByNodeKey.n6rf8lf2lum.inventory}} < {{$scopes.5u6lsjzf8vh.item.quantity}}`

        ├── **YES (branchIndex=1, 库存不足, 条件为 TRUE):**
        │   ▼
**[4] 通知超级管理员 (Notification)**
*向 root 角色用户发送通知,内容包含:*
*商品名称、商品 ID、当前库存、订单需求数量。*

        └── **NO (branchIndex=0, 库存充足, 空分支)**


    **[5] 扣减库存 (SQL)**
    * **SQL 语句:** `UPDATE products SET inventory = inventory - :quantity`

---

### 关键逻辑说明

| 阶段 | 说明 |
| :--- | :--- |
| **触发** | 订单创建时,系统携带完整的订单明细列表进入工作流。 |
| **循环** | 按明细行逐项处理,每行对应一个商品及其购买数量。 |
| **查询** | 通过 `productId` 查出该商品当前库存。 |
| **判断** | 判定 `inventory < quantity` 是否为真(即是否库存不足)。 |
| **通知** | 若库存不足,向具有 `root` 角色的用户发送站内消息提醒。 |
| **扣减** | 通过 SQL 直接更新库存;由于分支汇合,无论库存是否充足都会执行扣减。 |

---

### ⚠️ 潜在设计问题

条件节点的 `downstreamId` 指向了“扣减库存”节点,这意味着无论走哪条分支(库存充足或库存不足),最终都会汇合执行扣减操作。实际行为如下:

- **库存充足** $\rightarrow$ 直接扣减库存(正常流程)。 ✓
- **库存不足** $\rightarrow$ 先通知管理员,**随后依然执行扣减**(可能导致库存变为负数)。

**分析:** 这种设计属于“允许超卖并发出预警”的模式,也可能是一个逻辑疏忽(本意应在库存不足时阻止扣减)。需要与业务方进一步确认设计意图。

---

### 当前状态

- **启用状态:** `false`(已禁用)
- **执行记录:** 已执行过 1 次。
- **版本控制:** 当前版本处于冻结状态,如需修改需先创建新版本。

常见问题

工作流创建后为什么没有触发?

新创建的工作流默认是禁用状态(enabled: false)。需要确认触发器配置正确后再手动启用。

修改工作流后历史执行记录会受影响吗?

不会。如果当前版本已有执行记录,Skill 会自动创建新修订(revision),历史执行记录绑定在旧版本上,不受影响。

相关链接