搭建工作流
打开一个自动化会以构建器占据整个屏幕:右侧是节点画布,左侧是节点面板或检查器,顶部横跨一条工具栏。它覆盖在你的工作区之上,没有单独的页面或标签页。
快速了解
- 创建或打开一个自动化,进入构建器。
- 从节点面板把一个节点拖到画布上。
- 从一个节点的连接点拖到下一个节点,把它们连起来。
- 点击某个节点,在左侧面板打开它的设置。
- 点击 Validate,然后点 Test 运行一次,或点 Activate 正式上线。
详细参考
布局
| 区域 | 包含内容 |
|---|---|
| 图标栏(最左侧) | 三个视图:Flow(画布)、Settings(每个自动化的选项)、Activity(运行历史)。 |
| 左侧面板 | 未选中任何节点时显示节点面板,选中某个节点时显示该节点的设置。两者会就地切换。 |
| 画布 | 图本身:网格背景、平移和缩放、缩略地图,以及缩放控件。 |
| 工具栏 | 退出、自动化的名称和自动保存状态、撤销和重做、Validate、状态标签,以及 Test / Activate / Pause。 |
节点面板
左侧面板的节点面板带有一个搜索框,以及与节点目录对应的三个标签页:Triggers、Actions 和 Rules,每个又分成更小的子类别(例如 Actions 下的 Design、AI 或 Notification)。把任意节点拖到画布上即可放置;完整目录参见 节点。
连接节点
从一个节点底部的连接点拖到下一个节点的顶部,把它们连起来。触发器没有输入端;退出节点没有输出端。条件类节点(例如 If)会暴露两个连接点,各对应一个分支,因此你可以分别接出「是」路径和「否」路径。
配置节点
点击某个节点,把左侧面板切换为它的检查器:一个标题、一段简短说明,以及它的各个字段。
| 字段类型 | 呈现为 |
|---|---|
| Text | 单行输入框 |
| Textarea | 多行输入框,用于提示词和较长的内容 |
| Number | 数值输入框,相关时带有最小值和最大值 |
| Select | 下拉菜单;某些(例如文件夹)会加载你工作区的实时数据 |
| Boolean | 开关切换 |
| Part picker | 一个按钮,打开下文介绍的部件选择器 |
选择项目部件
某些动作节点,从 Pick a part 开始,需要一个项目中的具体部件,而不是整个设计。选择器是构建器之上的两步覆盖层:先选一个项目,再选它内部的一个部件,可以是页面、画框或幻灯片,每个项目都有实时预览缩略图。选定之后,会出现一个 Open in editor 链接,可以直接跳到那个确切的部件。
逐节点错误处理
每个节点的检查器都有两个标签页:Parameters(即上文介绍的字段),以及 Settings,后者只对动作类节点显示选项(触发器和逻辑节点在这里没有可配置项,因为它们没有需要重试的副作用):
| 设置 | 作用 |
|---|---|
| On error | Continue 会吞下失败并继续,Stop the run 会让整个运行失败,Route to an error output 会给该节点接出第二个红色的「Hata」连接点,让你可以接出一条专门的失败路径 |
| Retry (0-5) | 在落入 On error 行为之前,对同一步重试这么多次 |
| Wait (ms) | 每次重试之间暂停多长时间 |
| Note | 节点上的一段自由文本备注,供你自己参考;对执行没有任何影响 |
一个保持默认 Continue 的节点只会记录一个 error 步骤,然后让运行像什么都没发生一样继续前进,因此一个无法访问的 webhook 或一封被退回的邮件本身不会阻断图的其余部分。
Settings 视图
图标栏的 Settings 视图容纳整个自动化的选项,随草稿一起保存:
| 分组 | 设置 | 作用 |
|---|---|---|
| Execution | Concurrency | Free(多次运行同时进行)、Single at a time(一次一个)、Skip if busy(忙时跳过),或 Queue up to a cap(排队直到上限) |
| Execution | Max concurrent | 队列的上限,仅在 Queue 模式下显示 |
| Execution | Max run duration | 超过这么多秒的运行会被自动判为失败,即便正处于延迟中 |
| Execution | Priority | 当引擎有积压时,优先级更高的自动化的运行会被优先推进 |
| Error | Default on-error behavior | Continue 或 Stop,供任何未设置自己 On error 的节点使用 |
| Error | Error notifications | 运行失败时发送的应用内、邮件和/或 Slack 通知 |
| Error | Error automation | 每当此自动化失败时,另启动一个自动化(发出即不管) |
| Error | Circuit breaker | 在连续失败这么多次运行后,自动暂停该自动化 |
| Scheduling | Quiet hours | 一个起止时间窗口(按自动化所在时区),在此期间触发会被延后而非触发 |
| Scheduling | Debounce | 两次触发之间强制保持的最小间隔,叠加在触发器节点自身设置的任何防抖之上 |
| Data & retention | Save execution data | 保存全部步骤日志、仅错误,或都不保存,是一种隐私与存储的取舍 |
| Data & retention | Run history retention | 超过这么多天的已完成运行会被自动删除;留空则全部保留 |
Validate 不会检查这里的任何一项,只检查图本身;一个不合理的设置(例如 Queue 上限为 0)只会保守地运行,而不会阻止 Activate。
工具栏控件
| 控件 | 作用 |
|---|---|
| Exit | 关闭构建器并返回概览。 |
| 名称 + 状态文字 | 显示自动化的名称,以及它是已保存、保存中还是保存失败。 |
| Undo / Redo | 在你对图的编辑之间前后回退。 |
| Validate | 检查图,并在工具栏下方以内嵌方式列出错误和警告。 |
| Status pill | 一眼看清 Draft、Active、Paused 或 Error。 |
| Test | 先保存,然后立即把图运行一次。参见 运行与监控。 |
| Activate / Pause | 发布并上线,或在不丢失草稿的情况下停止监听。 |
键盘快捷键
| 快捷键 | 动作 |
|---|---|
Delete / Backspace | 删除选中的节点(及其相连的边) |
Ctrl/Cmd + Z | 撤销 |
Ctrl/Cmd + Shift + Z(或 Ctrl+Y) | 重做 |
Ctrl/Cmd + C / V | 复制和粘贴选中的节点 |
Ctrl/Cmd + D | 复制选中的节点 |
拖动的节点会对齐到网格,在空白画布上拖动会框选多个节点。
分步操作
以下示例用今天就能真正运行的节点搭建完整、真实的自动化(哪些节点能运行,参见 节点)。下面的锚点会被其他页面引用。
演练:定时的 AI 摘要,通过邮件发送
- 把一个 Scheduled 触发器拖到画布上(Triggers 标签页,Zaman 分组)。打开它的检查器并设置频率:选 Weekly 指定固定的某一天,选 Interval 加上一个「Every (minutes)」值实现紧凑的节奏,或选 Cron 用一条原始 cron 表达式加时区实现精确控制(参见 触发器)。
- 从 Actions > AI 拖出一个 Generate copy 节点,把触发器的连接点连到它。打开它的检查器并写一段提示词,例如「Write 3 short social post ideas for this week, one line each.」这一步会通过你在 Settings > AI 下连接的任意 AI 服务商密钥运行;如果没有连接,它会记录一个被跳过的步骤,而不会让运行失败。
- 从 Actions > Notification 拖出一个 Send email 节点,把 Generate copy 连到它。把 To 设为你的邮箱地址,把 Subject 设为类似「This week's post ideas」,把 Body 设为
{{ context.__aiText }},这样它就会把 AI 步骤的输出带过来。 - 点击 Validate,修正它标出的任何问题(常见的一个:To 或 Subject 留空),然后点 Test。打开 Activity 视图,确认 AI 步骤产生了文本,且邮件步骤显示
ok(如果还没配置 SMTP 连接或 AI 密钥,则会显示清晰的跳过原因)。 - 点击 Activate。它现在会按你配置的计划自行运行;你不需要一直开着应用。
演练:带 AI 回复的 webhook 接入
- 把一个 Incoming webhook 触发器拖到画布上。它的入站 URL 由自动化自身的 id 构成(
/api/workflow/hook/<automation id>);构建器里目前还没有复制 URL 的按钮,所以请从页面本身已经发出的网络请求里找到这个 id(例如在构建器打开时用浏览器的开发者工具),而不要指望它印在节点上。可选地设置一个 HMAC 密钥,这样只有携带有效签名的请求才会被接受。 - 把一个外部表单工具、CRM 或聊天挂件的 webhook 目标指向那个 URL,使用类似
{ "email": "...", "message": "..." }的 JSON 主体。 - 在触发器之后拖一个 Set a variable 节点,把一个你稍后会复用的字段规范化,例如键为
customerEmail,值为{{ context.email }}。 - 在它之后拖一个 Generate copy 节点,提示词例如
Write a short, friendly reply to: {{ context.message }}。 - 拖一个 Slack / Discord 节点,粘贴你频道的入站 webhook URL,把消息设为
New submission from {{ context.customerEmail }}: {{ context.__aiText }}。 - 先 Validate,然后用一个示例 JSON 主体 Test(任意 HTTP 客户端,或你工具自带的「发送测试事件」按钮都行,因为它只需要向 webhook URL 发一个
POST)。查看 Activity,然后 Activate。
演练:保存后按条件分支
- 从一个 Design updated 触发器开始;在设计/工作区事件触发器中,这是今天应用会自动触发的那一个,每当设计被保存时触发(参见 触发器)。
- 拖上一个 Pick a part,让后续步骤有一个具体对象可操作;打开部件选择器,选一个项目,再选它内部的一个页面、画框或幻灯片。
- 拖上一个 Condition (yes/no) 节点。它的检查器会构建一条规则(一个字段、一个比较方式,例如等于或包含,以及一个值),而不是一条原始的手写表达式;规则两侧都可以从运行的上下文中取值。
- 在 yes 分支上,加一个 In-app notification,告诉你的团队这个部件已可供审核。在 no 分支上,加一个 Write an audit entry 步骤,让直通的情况也被记录下来。
- 先 Validate,再 Test;Test 会立即运行,与触发器无关,因此你可以在不实际保存设计的情况下测试两个分支。确认两条路径都在 Activity 中正确出现,然后 Activate。
疑难排解
- 某个节点的 Settings 标签页看起来是空的。 只有动作类节点才有 On error / Retry / Note 标签页。触发器和逻辑节点(Condition、Filter、Delay、Set a variable 等)没有需要重试的副作用,所以它们的 Settings 标签页除了 Note 字段之外空无一物。
- 我设了「Route to an error output」,但没有地方可以接出失败路径。 只有在你翻开该设置之后,节点本身才会出现第二个红色连接点;再看看节点底部;新的「Hata」把手就在正常输出旁边。
- 复制/粘贴(
Ctrl/Cmd+C/V)好像没反应。 粘贴出来的副本会相对原节点略微偏移一小段随机抖动,而不是精确地叠在它上面;请看源节点的正下方偏右一点的位置。 - Validate 通过了,但 Activate 仍然失败。 Activate 会在一步之内重新校验并发布;如果某个字段依赖实时数据(例如一个此后已被删除的文件夹),即便一分钟前 Validate 看起来没问题,此刻它也可能失败。重新打开失败节点的检查器,重新选一次那个值。
- 有个必填字段报错,但我找不到它。 Validate 的消息会指明节点和字段,但检查器只显示当前满足其
displayIf条件的字段;一个字段可以既是必填又被隐藏,如果它的可见性由另一个字段控制(例如 HTTP 节点的主体只有在选了一个携带主体的方法之后才出现)。
提示
先 Validate 再 Activate
校验会在你尝试上线之前,捕捉空图、多于一个触发器、留空的必填字段、悬空的连接,或未接线的分支。
更改会自行保存
在你停止输入或移动某个东西片刻之后,编辑会自动保存;工具栏的状态文字会确认这一点。没有单独的保存按钮。
删除节点会移除它的边
没有单独的清理连接的步骤;删除一个节点会连带删除任何触及它的边。