← Cloudflare Workflows / workflows / build
Визуализация Workflows
Посмотрите визуальное представление разобранного кода Workflow в виде диаграммы на панели управления Cloudflare.
Диаграмма показывает последовательные и параллельные шаги, условия, циклы и вложенную логику. Чтобы увидеть Workflow на верхнем уровне, откройте диаграмму со свёрнутыми циклами и условиями, либо разверните её для более детального представления.
Диаграммы Workflow пока находятся в бета-версии для всех Workers на Typescript и Javascript. Посмотреть свои Workflows можно в Панель управления Cloudflare ↗ чтобы посмотреть их диаграммы.
Типы узлов
Диаграммы состоят из узлов следующих типов:
| Тип узла | Описание |
|---|---|
StepSleep |
Приостанавливает выполнение Workflow на заданный промежуток времени. |
StepDo |
Представляет именованный, повторяемый шаг, который оборачивает единицу работы. |
StepWaitForEvent |
Приостанавливает выполнение до получения внешнего события. |
StepSleepUntil |
Приостанавливает выполнение Workflow до указанной даты и времени. |
LoopNode |
Представляет конструкцию цикла (for, while, и т. д.), повторяющий блок логики. |
ParallelNode |
Группирует шаги, которые выполняются одновременно, например внутри Promise.all(). |
TryNode |
Представляет try...catch блок, который обрабатывает ошибки внутри Workflow. |
BlockNode |
Группирует последовательность шагов в логический блок для отображения. |
IfNode |
Представляет условное ветвление на основе if/else выражение. |
SwitchNode |
Представляет switch оператор, который направляет выполнение по нескольким вариантам (case). |
StartNode |
Обозначает точку входа Workflow или определение функции. |
FunctionCall |
Представляет вызов именованной функции в коде Workflow. |
FunctionDef |
Представляет определение функции, используемой в Workflow. |
BreakNode |
Представляет break оператор, досрочно завершающий цикл. |
Порядок выполнения
У каждого узла есть starts и resolves поле, отслеживающее порядок выполнения. Эти индексы показывают, когда каждый Promise начал и закончил выполняться, относительно первого Promise, который начал выполняться без немедленного завершения. Это соответствует вертикальному расположению на диаграмме (то есть все шаги с starts: 1 будет отображаться в тексте).
При разборе промисы без await или Promise.all() вызовам присваивается порядковый номер, который хранится в starts поле. Когда await встречается для этого Promise, номер записи увеличивается и сохраняется как номер выхода в resolves поле. Это позволяет диаграмме определить, какие Promise выполняются одновременно и когда каждый из них завершится относительно других.
Если ожидание шагов (await) выполняется в месте их объявления, starts и resolves будет undefined, и Workflow выполнится в порядке, в котором шаги обнаруживает среда выполнения.