castomFLOW

触发器与动作

什么启动它,它做什么,它如何决策

三个问题,这个平台上的每个工作流都是对它们的回答。本页是词汇表:运行可以开始的方式、步骤可以做的事情,以及塑造两者之间路径的各个部件。

触发器

运行开始的四种方式

一个计划

每十分钟一次,每周一七点,每月第一个工作日。以你选择的时区表示,所以夏令时回调不会变成事故。

一个 Webhook

你的商店、你的 CRM、你的计费系统,任何能发起 HTTP 请求的东西。签名验证默认开启,载荷会随运行一起保存。

来自世界的事件

演唱会公布、赛程排定、地震、洪水预警、空气质量区间越界、服务商故障。超过 175 个来源,每十到二十分钟刷新一次。

一次轮询,或一个人

监视一个端点、一个邮箱或一个文件夹,有变化时启动。或者从控制台手动启动,因为有时这才是诚实的答案。

每个事物只运行一次。当触发器因同一个底层事件触发两次——发送方重试的 webhook、轮询再次看到同一行——只会启动一次运行,而不是两次。去重以标识该事物的键为准,当发送方的 id 设计不如你的时,你可以自己设定这个键。

操作

执行操作的步骤

动作改变运行之外的东西:写入、发送、扣款、预订、获取或归档。分两类,区别在于是否涉及模型。

确定性动作

调用 HTTP 端点。读写你自己的系统。重塑载荷。在参考数据中查找。发送电子邮件、短信、推送通知或纸质信件。提供可预订的时段。收款。生成短链接。获取图片并附带其许可信息。写入一行、一个文件、一条记录。

相同输入,相同输出。运行它们不花任何钱,所以诚实的建议是:凡是不真正需要判断的事情都用它们。

AI 动作

对这条消息分类。起草那封回复。把一个讨论串总结成三个要点。从非结构化文档中提取字段。根据你用文字写下的规则在选项之间做选择。翻译,并保留语气。

每个 AI 步骤都会声明其返回内容的结构,并在运行继续之前对该返回结果进行校验。如果模型产生了格式错误的内容,该步骤会干净地失败,而不是污染接下来的十二个步骤。

某件事发生了。然后,接下来发生的正是该发生的事。

Flow:只关心运行本身的步骤

条件根据某个值进行分支。两条路径始终都有定义——else 分支未定义的条件是自动化悄悄丢失记录的最常见原因,所以在这里不可能留下悬空的分支。

等待让运行暂停到某个时刻或某个事件。等待是写在运行本身上的一个 wake_at,而不是队列里的一行记录,这就是为什么一个工作流可以让一万人等上三个星期,却分文不花、也无人察觉。

免打扰时段防止外发消息在凌晨三点送达。在免打扰窗口内到达发送步骤的运行会等到窗口关闭。严重级别可以刻意覆盖它,用于那些本就该把人叫醒的警报。

分流把一部分运行送到路径 A,其余送到路径 B,这样你就可以在真实流量上对比两个邮件主题、两种等待或两种顺序。

目标标记工作流本来要达成的事。当运行到达目标时,它就在那里停止,无论下游还剩什么——已经购买的客户不会再收到第三次购买提醒。

被遗弃的购物车目标已达成
  • ⚡触发器购物车闲置 40 分钟。按购物车 ID 去重。
  • ?条件购物车超过 150 兹罗提?是——走较长的路径。
  • ⏸等待运行上的一个 wake_at。没有队列记录,没有成本。
  • A拆分邮件主题五五分流。本次运行采用了变体 A。
  • ✉发送带短链接的电子邮件,按收件人统计重定向。
  • ★目标订单已下单。运行在此停止;第二次提醒永远不会发送。

调用过模型的步骤:1零成本的步骤:5

错误是流程的一部分,而不是流程的例外

失败的步骤有去处。带退避地重试,并限制重试次数。走一条替代路径。停止运行,把它归档到有人会看到的地方。或者照常继续,因为那个步骤本来就是可选的,你宁愿拿到大部分结果,也不愿一无所获。

对于要和别人的系统打交道的步骤,默认做法是重试几次然后停止——因为 09:14 宕机的系统通常 09:19 就恢复了,而且一个已经停止的运行,比一个半途而废的运行更容易理清。

你不能做的事:步骤不能跳回更早的步骤。工作流是一条有向路径,不是带跳转指令的程序。如果你的任务确实需要循环,可以在单个步骤内遍历一个列表,或者为每一项启动一次运行——这两种方式都受支持,而且事后读起来都比一个循环清晰得多。