[Документация Yandex Cloud](../../../../../index.md) > [Yandex Serverless Integrations](../../../../index.md) > [Концепции](../../../index.md) > Workflows > [Спецификация YaWL](../index.md) > Управляющие шаги > While

# While

Выполняет последовательность шагов, указанную в `do`, пока выполняется условие `condition` и количество итераций не превышает `max_iterations`. Если условие `condition` не задано, шаг выполняется заданное в `max_iterations` количество раз. Если значение `max_iterations` не задано, цикл будет выполняться, пока соблюдается условие или до достижения [таймаута](../../../limits.md) выполнения рабочего процесса.

Результат выполнения — выходные данные последнего шага, для которого возможно задать значение поля `output`, последней итерации.

Каждая ветка выполнения внутри шага While (с учетом всех шагов [Switch](switch.md)) должна содержать [интеграционный шаг](../index.md#integration-steps) или шаг [Success](success.md), [Fail](fail.md) или [Wait](wait.md).

Имя поля | Тип | Обязательное | Значение по умолчанию | Поддерживается [шаблонизация](../../templating.md) | Описание
--- | --- | --- | --- | --- | ---
`input` | `string` | Нет | [Полное состояние рабочего процесса](../../workflow.md#state) | Да | jq-шаблон, фильтрующий состояние рабочего процесса, которое передается в шаг.
`output` | `string` | Нет | Выходные данные шага | Да | jq-шаблон, фильтрующий выходные данные шага, которые добавляются в состояние рабочего процесса.
`do` | [WhileDo](#WhileDo) | Да | Нет | Нет | Последовательность шагов, которая будет выполняться в цикле.
`condition` | `string` | Обязательно, если не указано `max_iterations` | Нет | Да. Дополнительно доступна переменная `$counter`, которая равна номеру итерации (индексация начинается с нуля). | Условие в формате jq, которое возвращает строку `true` или `false`.
`max_iterations` | `int` | Обязательно, если не указано `condition` | Нет | Да | Максимальное количество итераций, которое может совершить цикл. 
`next` | `string` | Нет | Нет | Нет | Идентификатор следующего шага.

## Объект WhileDo {#WhileDo}

Имя поля | Тип | Обязательное | Описание
--- | --- | --- | ---
`start` | `string` | Да | Идентификатор шага, с которого начнется выполнение.
`steps` | `map<string, Step>` | Да | Описание шагов. Объект, где ключ — идентификатор шага, значение — объект, который описывает параметры шага. Структура аналогична структуре поля `steps` [верхнего уровня спецификации](../index.md#workflow).