Документация 0.4 Справочник действий
Пока
control.while · Управление · контейнер
Повторяет тело, пока условие истинно
Повторяет вложенные шаги, пока условие истинно. Подходит, когда число повторов заранее неизвестно: обработка очереди до опустошения, ожидание файла, повтор попытки. Условие проверяется перед каждым повтором.
Свойства #
| Свойство | Имя в файле | Значение | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|---|
| Условие | condition |
выражение | да | — | Проверяется перед каждой итерацией |
| Максимум итераций | maxIterations |
число | нет | 10000 |
Результат #
Действие не возвращает значений.
Вложенные шаги #
| Ветка | Имя в файле |
|---|---|
| Тело цикла | body |
Как работает #
- Условие (
condition) — выражение без{{ }}, вычисляется заново перед каждой итерацией:!done,attempts < 3. Можно написатьtrueи выходить из цикла шагомcontrol.break— так устроен обработчик очереди. - Максимум итераций (
maxIterations, по умолчанию 10000) — защита от вечного цикла: когда повторов больше, шаг завершается ошибкой. control.continueпереходит к следующей проверке условия.
Ошибки #
| Код | Причина и что делать |
|---|---|
InvalidArgument |
Превышено максимальное число итераций — проверьте, что условие когда-нибудь становится ложным, или увеличьте Максимум итераций |
ExpressionError |
Ошибка в выражении условия |
Пример #
Брать заявки из очереди, пока они есть:
{
"type": "control.while",
"props": { "condition": "true" },
"children": {
"body": [
{ "type": "orch.queueGetItem", "props": { "queue": "Заявки" }, "out": { "item": "item", "found": "found" } },
{ "type": "control.if", "props": { "condition": "!found" }, "children": { "then": [ { "type": "control.break", "props": {} } ] } }
]
}
}