工作流
把重复的流程自动化:调用外部服务、等待、重新读取数据,并在需要时交给人来决定。
工作流用来跑你反复做的流程:来了一条新线索,Busabase 给它打分、通知 CRM、等一天、重新看一遍这条线索,再请销售负责人批准交接。步骤只需要画一次,之后每次运行都在服务端按步骤走完,不用一直开着页面。

搭建工作流
新建
点侧边栏的 +,选择工作流。如果列表里没有,展开更多类型。
添加并连接步骤
用工作流工具栏上的 + 添加步骤,再从一个步骤拖线到下一个步骤。选中步骤后,在配置页签里设置它。
保存
点保存。运行总是使用最后保存的版本,所以有未保存的修改时不能启动运行。
每种步骤做什么
| 步骤 | 作用 | 出去的连线 |
|---|---|---|
| 触发器 | 运行的起点。如果这次运行关联了记录,会在这里读取它。 | 一条 |
| 函数 | 运行一条已保存的 Webhook 规则(动作为「运行函数」)。返回值保存在这一步。 | success |
| Webhook | 发送一次 HTTP 请求,请求体是这次运行的 JSON 数据(GET 不带请求体)。对方的响应就是这一步的输出。 | success |
| 条件 | 判断一个表达式,走两条路中的一条。 | true、false |
| 等待 | 暂停若干分钟、小时或天。重启和发版都不会影响等待。 | elapsed |
| 动作 | 重新读取记录,或修改、新建、删除记录,见修改数据。 | success |
| 审批 | 暂停,直到有人批准或驳回。 | approved、rejected |
| 结束 | 以某个结果结束运行。 | 无 |
连线上的结束结果决定什么情况下走这条线。同一次运行不会重复进入同一个步骤,超过 64 步会报错停止。
在条件里使用前面的结果
条件可以用 input 读取紧邻的上一步,也可以引用更早的任意一步。选中一个步骤,在公式里这样引用这一步会显示该怎么写,旁边有复制按钮:
input.status == 200 && steps.score.score >= 80&& 和 || 一旦能确定结果就不再往下算,缺失的值等于 null,所以 input.body && input.body.ok 这样写是安全的。名字不是普通单词时用方括号:fields["follow-up"]、items[0]。
等待之后读到的是最新数据吗?
要你明确让它读才是。每个完成的步骤都会保存当时看到的快照,所以 steps.trigger 里仍然是运行开始时的记录。想用最新的值,就在等待后面加一个动作步骤,选择重新读取记录。它会重新读取记录,下一步通过 input.record 拿到。
修改数据
动作步骤可以修改你的数据,从列表里选它要做什么:
| 动作 | 作用 | 设置 |
|---|---|---|
| 修改记录 | 设置一条记录的字段。 | 记录(可选)、要设置的字段 |
| 新建记录 | 在一张表里新建一条记录。后面的步骤可以用这一步的 createdRecordId 拿到它的 ID。 | 数据表、要设置的字段 |
| 删除记录 | 把记录移到所在表的回收站,之后可以恢复。 | 记录(可选) |

记录留空表示本次运行的记录。也可以填记录 ID,或公式,例如 =steps.add.createdRecordId,用来修改前面步骤新建的那条记录。
要设置的字段是一个 JSON 对象:
{ "status": "qualified", "score": "=steps.score.score" }- 键用字段的名称或标识。普通值按原样保存。
- 以
=开头的文本是公式,可以引用前面的步骤。以==开头则保存以=开头的文本。 - 公式取不到值时这一步会失败,所以写错不会把字段清空,也不会改错记录。
另外要知道:
- 这一步以运行所用身份的权限操作那张表。能编辑就当场生效;只能提议修改时,改动进入收件箱等待审核,数据暂时不变,这一步失败并写明变更请求号。把发生错误时设为继续执行,运行会接着往下走。
- 步骤自己应用的修改不会启动任何工作流,包括监听其他表的工作流。所以监听记录更新、又去更新这条记录的工作流不会死循环,工作流之间也不会互相触发。人手改的、或之后由人批准的改动,照常启动工作流。
- 如果运行删除了自己关联的记录,后面的步骤会继续执行,只是没有记录可用;重新读取记录这一步会失败。
启动运行
手动启动。 打开运行页签,或者点工具栏上的运行按钮。可以填记录 ID 让触发器读取,也可以填附加数据 JSON。然后点开始运行。
记录变化时自动启动。 在配置页签里:
- 选中触发器,选择「新建记录时」或「记录更新时」。
- 选一张表来限定范围,或者保持所有表。
- 把执行模式改成事件触发,然后保存。
每次匹配的变化都会排队一次运行,由调度器启动。事件运行使用的是最后以事件模式保存这个工作流的人的身份。如果这个人离开了空间,这些运行会失败并写明原因。
其他事件名称只是标签,不会自动启动运行。目前还没有按时间触发。
查看运行
运行页签列出这个工作流最近的运行,点加载更早的运行可以继续往前看。选中一次运行,就能按执行顺序看到每一步当时看到和返回的内容。画布上也会把这些步骤标成已完成、已暂停或失败。
| 状态 | 含义 |
|---|---|
| 排队中 | 等待开始或继续,会自动往下走,通常在一分钟内。 |
| 运行中 | 正在执行某个步骤。 |
| 等待中 | 停在等待步骤上。点立即继续可以跳过剩余时间。 |
| 待审批 | 停在审批步骤上。 |
| 已完成 | 走到了结束步骤。 |
| 失败 | 因错误停止,运行上会显示原因。 |
| 已取消 | 被人停止了,运行上会显示是谁。 |
已结束的运行保留 90 天,之后删除。还没结束的运行不会被删除。
审批

审批人这一栏决定谁能批准或驳回:
- 填成员邮箱(用逗号分隔): 只有这些成员和空间管理员能决定。他们需要能查看这个工作流,但不需要编辑权限。
- 不填邮箱(留空,或只写「Sales lead」这样的名字): 能编辑这个工作流的人都能决定,名字只是个标签。
- 智能体默认不能决定,除非打开允许智能体决定,见让智能体使用工作流。
如果被点名的审批人没有编辑权限,他们做出决定后,运行会进入排队中,再由调度器以启动这次运行的人的权限继续。审批人的权限范围不会影响后面的步骤能做什么。
工作流的审批在运行页签和通知里处理,和处理变更请求的收件箱是分开的。
取消运行
选中一次状态为排队中、等待中或待审批的运行,点取消运行。取消后不能再继续,已经执行过的步骤也不会撤销。
正在执行步骤的运行要等这一步结束才能取消,因为已经发出去的请求收不回来。
如果批量导入排队了太多运行,列表上方的取消 N 个排队中的运行可以一次全部停掉。正在执行步骤或已暂停的运行不受影响。
通知
| 什么时候 | 谁会收到 |
|---|---|
| 运行停在指定了成员的审批步骤上 | 被指定的成员 |
| 运行停在没有指定成员的审批步骤上 | 启动这次运行的人,以及订阅了这个工作流的人 |
| 运行失败 | 启动这次运行的人,以及工作流的创建者 |
你会收到站内通知和邮件,点链接直接打开那次运行。当时正在操作的人不会收到,因为他们已经看到了。短时间内的多条消息会合并:审批每 10 分钟每个工作流合并成一条,失败每小时合并成一条。开源单用户版没有通知,请直接看运行页签。
权限
| 要做的事 | 需要的权限 |
|---|---|
| 查看运行和每一步的数据 | 工作流的查看权限 |
| 启动、提前继续、取消 | 工作流的编辑权限 |
| 让步骤修改、新建或删除记录 | 运行所用身份在那张表里能做的事:直接编辑,或提议修改 |
| 批准或驳回 | 取决于这一步,见审批 |
函数和 Webhook 步骤会把数据发到 Busabase 之外,动作步骤可以修改你的数据,所以启动运行需要编辑权限。能查看工作流的人都能看到每一步的数据,不要把密钥放进附加数据。
工作流设置
在画布上不选中任何内容(或在配置页签里往下滚动),可以修改整个工作流的设置。
| 设置 | 作用 |
|---|---|
| 执行模式 | 手动只能手动启动。事件触发还允许记录触发器自动启动。 |
| 发生错误时 | 停止流程:函数或 Webhook 步骤失败时运行失败。继续执行:记下错误,按 success 分支继续。 |
| 并发数 | 这个工作流最多同时有几次运行在执行步骤。停在等待或审批上的不算。超出的先排队,有空位时自动开始。多台服务器恰好同时启动时,可能短暂多出一次。 |
| 超时时间(毫秒) | 函数或 Webhook 步骤最长可以执行多久。Webhook 步骤最多等 30 秒。 |
Webhook 步骤只发一次,不会重试,因为重复发送不一定安全。私有和内部地址会被拒绝,经过重定向也一样。
让智能体使用工作流
持有 API key 的智能体可以通过 REST API、MCP 和 CLI 使用工作流。
| 智能体能做 | 需要 |
|---|---|
| 查看运行和每一步的数据 | key 能读取这个工作流 |
| 启动或取消运行 | 写权限的 key,以及工作流的编辑权限 |
| 批准或驳回 | 这一步允许,见下文 |
提前继续等待、一键取消所有排队中的运行,仍然只能在应用里操作。
审批默认是人的决定。 选中这一步,打开允许智能体决定,智能体才能审批。即使打开,key 也必须有写权限,key 的主人也要符合这一步的审批规则。运行会记录是哪个 key 做的决定。
运行的权限不会超过启动它的 key。 运行以 key 主人的身份执行,但受 key 限制,运行上也会显示 key 的名称。每次继续运行时都会重新检查 key:吊销或过期后,等待中的运行会失败并写明原因;调低 key 的等级后,运行也不能再写入。
智能体启动的运行,相关通知也会发给 key 的主人,因为当时他们并没有在看。
常见问题
运行一直排队。 可能是达到了并发数,正在等空位。否则检查调度器是否在运行,自托管版已内置(见配置)。
提示 "The run was interrupted"。 服务器在执行某一步时停止了。Busabase 会把运行标为失败,而不是重做这一步,因为发到一半的请求不能悄悄再发一次。重新启动一次运行即可。
提示 "Could not continue as the person who started this run"。 启动的人已经离开空间,或者失去了这个工作流的访问权限。请重新启动一次运行;事件运行的话,由你自己以事件模式保存一次工作流,之后就会以你的身份运行。
看不到批准和驳回按钮。 这一步指定了其他审批人,或者你没有编辑权限。运行上会说明适用哪条规则。
演示环境里函数和 Webhook 步骤会失败。 演示环境没有已保存的函数,也不发送请求。请在自己的空间里试。
步骤 ID 里有短横线时公式报错。 要写 steps["step-a1b2c3d4"].status,不能写 steps.step-a1b2c3d4.status。选中步骤时在公式里这样引用这一步会显示正确写法。
另请参阅:节点类型 · Webhook 与事件 · 变更请求