Split
Общее описание
Блок Split позволяет разделять сложное сообщение на части и обрабатывать их по отдельности с помощью логики, выстроенной внутри этого блока-контейнера. В отличие от блока Parallel, блок Split содержит только одну ветку для обработки.
При добавлении блока на рабочую область рядом с ним отображается область его действия, обрамляющая все блоки, добавляемые в Split. Изначально вместе с блоком Split в область действия добавляется пустая ячейка Обработчики и отправители, которую нельзя удалить.
Область действия можно сворачивать и разворачивать на экране стрелкой в правом верхнем углу рабочей области. Блоки, добавленные в рабочую область, выполняются в рамках одного блока Split.
При удалении блока Split удаляются все блоки, расположенные внутри его области действия.
Настройка блока
В данном разделе описаны параметры блока Split, которые необходимо заполнить при настройке и примеры заполнения значений этих параметров.
Базовые параметры блока Split
| Название в UI | Название атрибута | Обязательный | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|---|
| Language | language | Да | Выбор языка, на котором будет написано выражение для определения количества выполняемых циклов. Возможные значения:
| groovy | Список |
| Expression | expression | Да | Выражение, которое определяет, как разделять входящее сообщение на части. | Выражение | |
| Delimiter | delimiter | Символ-разделитель текстовых данных. Параметр предназначен для использования со встроенной стратегией токенизации. По сути, это укороченная альтернатива выражению tokenize(','). | , | Строка | |
| Aggregation Strategy | aggregationStrategy | Ссылка на класс, реализующий алгоритм агрегации, которая определяет как объединять все ответы, полученные после обработки каждой части, в одно результирующее сообщение. | Строка | ||
| Aggregation Strategy Method Name | aggregationStrategyMethodName | Задает имя алгоритма агрегации. Эта опция полезна, если ваш класс-агрегатор имеет несколько методов, и вы хотите выбрать конкретный метод, не реализуя стандартный интерфейс. | Строка | ||
| Aggregation Strategy Method Allow Null | aggregationStrategyMethodAllowNull | Указывает, можно ли вызывать метод агрегации, если на первом вызове не было старого агрегированного сообщения, т.е. оно было пустым – NULL. Если значение параметра равно False, то метод агрегации не вызывается для первой части сообщения, а его результат просто используется как основа для последующей агрегации. | False | Логическое значение | |
| Parallel Processing | parallelProcessing | Если значение параметра установлено в True, то части сообщения будут обрабатываться одновременно в многопоточном режиме. Если значение параметра установлено в False, то части сообщения будут обрабатываться последовательно. | False | Логическое значение | |
| Synchronous | synchronous | Разделение и последующая маршрутизация обрабатываются синхронно в исходном потоке, даже если включена опция параллельной обработки Parallel Processing. Это может быть полезно для тестирования или простых сценариев, где переключение между потоками нежелательно. Использование этого параметра может критически снизить производительность параллельной обработки. | False | Логическое значение | |
| Streaming | streaming | Если значение параметра установлено в True, то данные будут разделяться и обрабатываться последовательно, для каждой части. Это позволяет эффективно работать с очень большими объемами данных, не загружая их все в память сразу. | False | Логическое значение | |
| Stop On Exception | stopOnException | Если значение параметра установлено в True, то при возникновении любого исключения немедленно прекратится обработка оставшихся частей. При параллельной обработке те задачи, которые еще не начали выполняться, будут отменены. | False | Логическое значение | |
| Timeout | timeout | Таймаут в миллисекундах для общей обработки всех частей. Если обработка не уложится в это время, будет вызвана стратегия, указанная в AggregationStrategy для текущих результатов, а оставшиеся части будут отменены. | 0 | Строка | |
| Executor Service | executorService | Ссылка на пользовательский потоковый пул, который будет использоваться для параллельной обработки. Если значение параметра не указано при включенной параллельной обработке, то используется стандартный пул. | Строка | ||
| On Prepare | onPrepare | Ссылка на класс, реализующий процесс обработки. Этот процесс будет вызван для каждой части сообщения перед тем, как она будет обработана. Параметр может использоваться для глубокого копирования сообщения, если его части разделяют изменяемое состояние. | Строка | ||
| Share Unit Of Work | shareUnitOfWork | Если значение параметра установлено в True, то все части сообщения будут использовать ту же единицу работы, что и оригинальное сообщение. Это означает, что если обработка одной части завершится неудачей и будет произведен откат состояния, это затронет всю единицу работы, например, откатит транзакцию для всего исходного сообщения. Используйте параметр с осторожностью, в основном для транзакционных сценариев. | False | Логическое значение | |
| Description | description | Краткое описание блока | Строка |
Расширенные параметры блока Split
| Название в UI | Название | Обязательный | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|---|
| Disabled | disabled | Нет | Определяет будет ли отключен блок в потоке. В активированном потоке функциональность блока не будет отрабатываться. | False | Логическое значение |