信号触发
信号触发器让多个工作流之间可以互相通信。一个工作流发出信号,另一个工作流收到信号后自动启动——无需人工介入。
核心概念
信号触发的本质是一对多的广播通信:发送方通过「发送信号」节点广播一个信号 ID,所有监听这个 ID 的信号触发器都会收到并启动。一个信号可以同时唤醒多个流程。
信号可以携带数据。发送方附带的数据会自动尝试 JSON 解析,解析成功后存入接收方配置的变量中。
配置步骤
以两个工作流为例——流程 A 发信号,流程 B 收信号并弹出通知。
流程 A(发送方):手动执行 → 发送信号
流程 B(接收方):信号触发 → 显示通知
- 拖入「信号触发」节点,信号 ID 填
order_updated(必须和发送方完全一致) - 填写接收数据变量名(执行页面由信号中的系统保留字段决定,见下方说明)
- 拖入「显示通知」节点
- 保存后,流程 A 执行时流程 B 会自动收到信号并启动
执行页面控制
信号触发器的执行页面完全由接收到的信号数据中的系统保留字段决定,触发器本身不再单独配置执行方式。发送方在信号 JSON 数据中携带以下保留字段来控制工作流在哪个页面执行:
| 字段 | 说明 |
|---|---|
_target_url | 跳转到该 URL 对应的页面并执行工作流。 |
_target_tab_id | 在指定已打开的标签页中执行工作流。 |
| (不带保留字段) | 不携带任何保留字段时,在发送信号的页面执行。 |
优先级:_target_tab_id > _target_url。同时携带时优先使用 _target_tab_id。
// 示例:发送信号时携带 _target_url
{
"orderId": 12345,
"_target_url": "https://example.com/orders/12345"
}
参数说明
信号 ID
信号的唯一标识,发送方和接收方必须完全一致(区分大小写)。建议用有意义的英文命名:
order_updated → 订单更新了
data_sync_complete → 数据同步完成
crawl_finished → 采集结束了
接收数据
发送方附带的数据自动 JSON 解析后存入的变量名。比如填 data,后续节点就能用 {{data}} 引用接收到的内容。
如果发送方没带数据,或数据不是合法 JSON,变量值保持原样(字符串)。
激活标签页
开关打开后,收到信号时会自动把浏览器焦点切到正在执行流程的标签页。适合需要用户在页面上看到操作结果的场景;纯后台数据处理可以关掉。
使用场景
信号触发适合多流程联动的场景:
- 登录流程跑完后发信号,数据采集流程收到后自动开始抓数据
- 定时巡检流程发现异常后发信号,通知流程收到后弹出告警
- 一个主流程拆成多个子流程并行跑,用信号串联执行顺序
常见问题
信号触发一直等待不启动
现象:流程始终不启动,日志显示等待信号中。
原因:信号 ID 拼写不一致(大小写敏感),或发送方流程还没执行。
解决:检查发送方和接收方的信号 ID 是否字母大小写完全一致。先用「手动执行」触发发送方跑一次,确认信号发出。