Все ноды/Logic & Flow/Branching
Переключатель
Многовариантное ветвление: вычисляет выражение и выбирает один из нескольких выходов по значению (аналог switch/case). Если значение не совпало ни с одним — выполняется ветка 'default'.
Тип в графе: switch
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Маршрутизация на три ветки
Два кейса разбирают текст обращения, всё остальное уходит в ветку по умолчанию.
- Исполнение + данные
Запускается сразу
Как применять
Берите эту ноду, когда направлений больше двух: тип обращения, язык письма, код ответа
сервиса, категория от классификатора. Для развилки на две ветки достаточно if — он
короче и понятнее в графе.
Вопреки названию, нода не сравнивает одно значение с набором вариантов. Это список пар
«условие → выход»: условия проверяются сверху вниз, побеждает первое истинное, и
дальше список не читается. Если не сработало ни одно, выполняется ветка по умолчанию —
её handle задаётся полем «Handle ветки по умолчанию» и по умолчанию называется default.
Как это работает
Выходные порты берутся из настроек: сколько кейсов, столько портов, плюс порт ветки по
умолчанию, который есть всегда. Условия — те же выражения Jinja, что у if, с той же
оговоркой: составное условие или сравнение текста пишите целиком внутри {{ }}, иначе
после подстановки получится непустая строка, а она истинна.
Значение проходит ноду насквозь: на сработавший выход уезжает то, что пришло на вход.
Ниже по графу доступны {{ nodes.<id>.output }} — это значение — и
{{ nodes.<id>.branch }} — handle сработавшей ветки.
Настраивается нода на вкладке Conditions: слева условие, справа поле handle id, ниже кнопка Add condition и строка Fallback handle. Соседняя вкладка JSON показывает те же кейсы списком — так удобнее переставлять их местами.
Частые ошибки
- Порядок условий — часть логики. Широкое условие, поставленное первым, перекроет все частные под ним. Начинайте со специфичных.
- Переименование handle разрывает связь. Порт рисуется по значению поля, поэтому после правки id старый порт исчезает вместе с ребром — проведите связь заново.
- Два кейса с одинаковым handle дают один порт. Граф исполнится, но по нему уже не видно, какое из условий сработало; для разной обработки нужны разные id.
- Не называйте кейс так же, как ветку по умолчанию — он сольётся с ней в один порт.
- Пустое условие или пустой handle не задеплоятся: валидатор сообщает про конкретный номер кейса.
- Все ветки в один exit — нормальная схема. Нода за развилкой выполнится один раз, с данными сработавшей ветки; валидатор предупреждает об этом, чтобы вы не рассчитывали получить значения всех веток сразу.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Inputinput | Исполнение + данныеexecute_data | — |
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Defaultdefault | Исполнение + данныеexecute_data | — |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Кейсыcases | array | — | Упорядоченный список пар условие→handle; выигрывает первое истинное совпадение |
Handle ветки по умолчаниюdefault_case | string | default | Выходной handle по умолчанию, когда ни одно условие не совпало |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.