等待到指定时间 flow.wait
等待节点把运行暂停到一个确定的 UTC 时间,适合冷却期、预约执行、业务截止前等待和延迟重试。截止时间写入历史后,当前 worker 会释放。调度器到期再投递运行,重放从 resumed 端口继续。等待期间没有线程或进程需要一直占用该运行。
截止时间
resume_at 是日期时间表达式,可以读取启动输入或已提交的上游结果。表达式必须得到包含时区的绝对时间。不要在每次重放时重新计算相对时长,否则进程重启可能不断推迟截止点。需要等待七天时,应先把基准时间和计算结果固定在输入或任务结果中,再由本节点读取最终时间。
截止时间早于当前调度时刻时,运行会在调度器处理后尽快继续。它不等于运行超时,也不会自动提交超时终态。业务需要到期即失败时,可以让等待节点唤醒后进入 flow.timeout,并让两个节点使用同一个已持久化截止时间。需要等待外部消息时,应使用信号或 Hook,避免用高频轮询代替事件边界。
调度与恢复检查
入站控制边连接 in,到期后从 resumed 继续。生产环境要配置到期扫描或定向唤醒、时钟同步、扫描批量上限和重复投递处理。测试应覆盖未来时间、已经到期、时区偏移、进程重启、调度器重启以及同一运行重复唤醒。历史中已有恢复事件时,worker 不应再次创建新的等待决定。
用它把运行暂停到一个绝对 UTC 时间。适合冷却期、预约执行、业务截止时间和确定性的重试窗口。
运行方式
等待时间写入历史后,worker 会释放。调度器到期后重新投递运行,重放从 resumed 端口继续。
节点契约
- 类型
flow.wait- 角色
- 持久运行命令
- 运行绑定
wait_until- 持久身份
- 图节点 ID
配置属性
| 属性 | 类型与控件 | 默认值 | 规则 |
|---|---|---|---|
resume_at继续时间(UTC) | dictA3SFlowExpressionInput | {"apiVersion":"a3s.dev/flow-expression/v1","expression":{"op":"field","path":"input.deadline"}} | 可以填写以 Z 结尾的 UTC 时间,也可以选择一个保存了该时间的工作流字段。必填 |
端口
| 方向 | 端口 ID | 种类 | 数据类型 |
|---|---|---|---|
| 输入 | in进入 | control | FlowControl |
| 输入 | resume_at继续时间 | data | DateTime |
| 输出 | resumed等待结束 | control | FlowControl |
节点 JSON 示例
CLI 会用 manifest 默认值生成同样的节点结构。画布位置、标题和选中状态属于展示数据。
CLI 用法
先查看当前安装版本的 manifest,再创建节点并验证完整工作流。所有命令输出 JSON。
Skill 用法
安装包内附带 a3s-flow Skill。它会先查询 CLI 的节点清单,再创建、校验、编译并计算语义摘要。
使用注意
- 使用带时区的绝对时间。
- 进程恢复不会重新计算截止时间。
- 生产环境需要调度扫描或定向唤醒。
