解析した Workflow コードを、Cloudflare ダッシュボード上の図として表示できます。
図には、順次実行と並列のステップ、条件分岐、ループ、入れ子のロジックが示されます。全体像を見るときはループと条件分岐を折りたたみ、詳細を見るときは展開します。
Workflow の図は、TypeScript と JavaScript の Workers 向けに、現在ベータです。図を確認するには、Cloudflare ダッシュボード ↗ で Workflows を開きます。
図は、次のノード種類で構成されます。
| ノードの種類 | 説明 |
|---|---|
StepSleep |
指定した時間、Workflow の実行を一時停止します。 |
StepDo |
作業単位を包む、名前付きでリトライ可能なステップを表します。 |
StepWaitForEvent |
外部イベントを受け取るまで実行を中断します。 |
StepSleepUntil |
指定した日時まで Workflow の実行を一時停止します。 |
LoopNode |
for や while など、ロジックのブロックを繰り返すループ構文を表します。 |
ParallelNode |
Promise.all() 内など、同時に実行するステップをグループ化します。 |
TryNode |
Workflow 内のエラーを扱う try...catch ブロックを表します。 |
BlockNode |
表示のため、一連のステップを論理ブロックにまとめます。 |
IfNode |
if/else 式に基づく条件分岐を表します。 |
SwitchNode |
複数のケースへ実行を振り分ける switch 文を表します。 |
StartNode |
Workflow または関数定義の入口を示します。 |
FunctionCall |
Workflow コード内の名前付き関数の呼び出しを表します。 |
FunctionDef |
Workflow 内で使う関数の定義を表します。 |
BreakNode |
ループを途中で抜ける break 文を表します。 |
各ノードには、実行順を追跡する starts と resolves フィールドがあります。これらのインデックスは、すぐに完了しなかった最初の Promise を基準に、その Promise が実行を始めた時点と終わった時点を示します。図では縦方向の位置に対応します(つまり starts: 1 のステップは同じ行に並びます)。
解析時、await していない Promise や Promise.all() の呼び出しには、入場番号が割り当てられ、starts フィールドに保存されます。その Promise に対する await に出会うと、入場番号が加算され、退場番号として resolves に保存されます。これにより、どの Promise が同時に動き、それぞれがほかと比べていつ完了するかが図で分かります。
宣言した時点でステップを await している場合、starts と resolves は未定義です。Workflow は、ランタイムから見てステップが現れる順に実行されます。