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

# Foreach

Выполняет последовательность шагов, указанную в `do`, над каждым элементом входных данных. Выходные данные — массив результатов выполнения шагов, указанных в `do`. Для шагов в `do` в поле `next` можно указывать только шаги, которые есть в списке шагов в `do`. Подробнее о [состоянии рабочего процесса при выполнении шага Foreach](../../workflow.md#state-for-Foreach).

Имя поля | Тип | Обязательное | Значение по умолчанию | Поддерживается [шаблонизация](../../templating.md) | Описание
--- | --- | --- | --- | --- | ---
`input` | `string` | Да | Нет | Да | jq-шаблон, формирующий массив объектов. Если результат не является массивом объектов, запуск завершается с ошибкой.
`output` | `string` | Да | Нет | Да | jq-шаблон, формирующий объект с результатом работы `foreach`. Если результат не является объектом, запуск завершается с ошибкой.
`do` | [ForeachDo](#ForeachDo) | Да | Нет | Нет | Последовательность шагов, которые будут выполнены над каждым элементом входных данных.
`concurrency` | `int` | Нет | 1 | Нет | Количество элементов входных данных, над которыми одновременно выполняется последовательность шагов, указанная в `do`.
`next` | `string` | Нет | Нет | Нет | Идентификатор следующего шага.

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

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