Busabase

工作流

把重复的流程自动化:调用外部服务、等待、重新读取数据,并在需要时交给人来决定。

工作流用来跑你反复做的流程:来了一条新线索,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。然后点开始运行。

记录变化时自动启动。 在配置页签里:

  1. 选中触发器,选择「新建记录时」或「记录更新时」。
  2. 选一张表来限定范围,或者保持所有表。
  3. 把执行模式改成事件触发,然后保存。

每次匹配的变化都会排队一次运行,由调度器启动。事件运行使用的是最后以事件模式保存这个工作流的人的身份。如果这个人离开了空间,这些运行会失败并写明原因。

其他事件名称只是标签,不会自动启动运行。目前还没有按时间触发。

查看运行

运行页签列出这个工作流最近的运行,点加载更早的运行可以继续往前看。选中一次运行,就能按执行顺序看到每一步当时看到和返回的内容。画布上也会把这些步骤标成已完成、已暂停或失败。

状态含义
排队中等待开始或继续,会自动往下走,通常在一分钟内。
运行中正在执行某个步骤。
等待中停在等待步骤上。点立即继续可以跳过剩余时间。
待审批停在审批步骤上。
已完成走到了结束步骤。
失败因错误停止,运行上会显示原因。
已取消被人停止了,运行上会显示是谁。

已结束的运行保留 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 与事件 · 变更请求

On this page