INTEGRITY Документация

Визуализация 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 выполнится в порядке, в котором шаги обнаруживает среда выполнения.