Loop
Общее описание
Блок Loop обеспечивает циклическую обработку сообщений. Алгоритм работы блока является аналогом циклов For и Do-While классических языков программирования.
При добавлении блока на рабочую область рядом с ним отображается область его действия, обрамляющая все блоки, добавляемые в эту область. Область можно сворачивать и разворачивать на экране стрелкой в правом верхнем углу рабочей области. Блоки, добавленные в рабочую область, выполняются в рамках одного цикла.
При удалении блока Loop удаляются все блоки, расположенные внутри его области действия.
Настройка блока
В данном разделе описаны параметры блока Loop, которые необходимо заполнить при настройке и примеры заполнения значений этих параметров.
Базовые параметры блока Loop
| Название в UI | Название арибута | Обязательный | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|---|
| Language | language | Да | Выбор языка, на котором будет написано выражение для определения количества выполняемых циклов. Возможные значения:
| groovy | Список |
| Expression | expression | Да | Выражение для определения количества выполнения цикла. Вычисляется один раз и возвращает число, указывающее, сколько раз цикл будет выполнен. Ноль или отрицательное значение означают отсутствие цикла. | Выражение | Возможные типы:
|
| Result Type | resultType | Нет | Формат результата вычисления условия. | Строка | |
| Trim | trim | Нет | Задает нужно ли отсекать перенос строки и пробелы в начале и конце значения. | True | Логическое значение |
Расширенные параметры блока Loop
| Название | Название | Обязательный | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|---|
| Disabled | disabled | Нет | Определяет будет ли отключен блок в потоке. В активированном потоке функциональность блока не будет отрабатываться. | False | Логическое значение |
| Copy | copy | Нет | Определяет, что для каждой итерации цикла используется копия входного сообщения, то есть каждая итерация цикла будет начинаться с копии одного и того же сообщения. | False | Логическое значение |
| Do While | doWhile | Нет | Включает режим работы цикла while, который выполняется до тех пор, пока предикат не станет ложным или нулевым. | False | Логическое значение |
| Break On Shutdown | breakOnShutdown | Нет | Определяет, должен ли цикл прерываться, если поток останавливается во время выполнения. При установке значения True цикл остановится сразу, а при значении False – продолжит работу до завершения своей текущей итерации, несмотря на остановку потока, что гарантирует завершение обработки данных. Сценарии остановки процесса в зависимости от значения breakOnShutdown:
Поток останавливается, текущая итерация цикла немедленно прерывается, сам цикл завершается. Все незавершенные операции внутри цикла будут отменены. Используйте, когда важна быстрая остановка потока и вы не хотите, чтобы незавершенные операции выполнялись после получения команды на остановку.
Цикл продолжит выполнение текущей итерации, даже если поток был остановлен. Таким образом, все сообщения, уже находящиеся в цикле, будут обработаны до конца, прежде чем цикл завершится. Используйте, когда необходимо, чтобы все сообщения, которые уже попали в цикл, были обработаны до конца. Например, если вы обрабатываете критически важные данные и каждая итерация должна быть завершена, несмотря на остановку приложения. | False | Логическое значение |