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 を通じてトークンをストリーミングで返します。エディターは実行の進行中にリアルタイムの出力を表示します。
- コスト計測 — すべてのブロックは入出力トークンとコストを実行ログに記録し、使用状況ページで確認できます。
同期と非同期
ユーザーが開始した実行はリクエスト内で同期的に実行されます。トリガーされたワークフローや長時間実行されるワークフローは Cloud Tasks にディスパッチされ、バックグラウンド関数で実行されるため、リクエストタイムアウトの制約を受けません。
同期実行はプラットフォームのリクエストタイムアウトに縛られます。実行時間が長くなる可能性のあるワークフローには、非同期でディスパッチされる Webhook またはスケジュールトリガーを使用することをお勧めします。