Документация 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": {} } ] } }
    ]
  }
}