Architecture
执行与数据流
工作流运行如何从触发器到处理程序,再到日志和成本计量的完整生命周期。
无论是通过按钮、Webhook、定时任务还是入站轮询触发,工作流都会经历相同的生命周期。
生命周期
flowchart LR
classDef step fill:#00D4AA,stroke:#0F766E,color:#06302B
classDef data fill:#3B82F6,stroke:#1E40AF,color:#fff
classDef gate fill:#FF6B35,stroke:#C2410C,color:#fff
S1["Build<br/>canvas"]:::step --> S2{"Validate<br/>reference checks"}:::gate
S2 --> S3["Save<br/>blocks + edges"]:::data
S3 --> S4["Deploy<br/>immutable version"]:::step
S4 --> S5["Bind trigger<br/>webhook · schedule · poll"]:::step
S5 --> S6["Execute<br/>resolve inputs → handlers"]:::step
S6 --> S7["Logs + cost<br/>per-block metering"]:::data运行期间发生了什么
sequenceDiagram
participant T as Trigger
participant A as API
participant S as Serializer
participant X as Executor
participant H as Handler
participant L as LLM / Integration
participant D as Database
T->>A: Fire (webhook / schedule / manual)
A->>S: serialize(workflow)
S->>S: Build graph + topological sort
S-->>A: Execution plan
A->>X: execute(plan)
loop For each block
X->>H: handle(block, inputs)
alt AI / Integration block
H->>L: Provider call
L-->>H: Result
else Data block
H->>D: Query / insert
D-->>H: Rows
end
H-->>X: Block output (stored in context)
end
X->>D: Write execution log + cost
A-->>T: Result (streamed when applicable)关键特性
- 拓扑执行 — 块按依赖顺序运行;
parallel和loop块会派生出共享同一追踪 ID 的独立子上下文。 - 类型化分发 — 每个块通过统一接口解析到 30 个处理程序之一, 因此引擎可以在不修改核心代码的情况下支持新的块类型。
- 流式传输 — AI 块通过 Server-Sent Events 将 Token 流式返回;编辑器会在运行过程中实时显示输出。
- 成本计量 — 每个块都会将输入/输出 Token 及成本记录到执行日志中,供用量页面读取。
同步与异步
用户发起的运行在请求范围内同步执行。由触发器触发或长时间运行的工作流会被分发到 Cloud Tasks,并在后台函数中运行,因此不受请求超时的限制。
同步运行受平台请求超时的限制。对于可能运行较长时间的工作流,建议使用 Webhook 或定时触发器,它们以异步方式分发。