Все ноды/Logic & Flow/Branching

Переключатель

Многовариантное ветвление: вычисляет выражение и выбирает один из нескольких выходов по значению (аналог switch/case). Если значение не совпало ни с одним — выполняется ветка 'default'.

Переключатель
InputDefault

Тип в графе: switch

Exec

Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Маршрутизация на три ветки

Два кейса разбирают текст обращения, всё остальное уходит в ветку по умолчанию.

Вход
Переключатель
Шаблон
Шаблон
Шаблон
Выход
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Запускается сразу

Как применять

Берите эту ноду, когда направлений больше двух: тип обращения, язык письма, код ответа сервиса, категория от классификатора. Для развилки на две ветки достаточно 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

Настройки

ПолеТипПо умолчаниюОписание
Кейсыcasesarray

Упорядоченный список пар условие→handle; выигрывает первое истинное совпадение

Handle ветки по умолчаниюdefault_casestringdefault

Выходной handle по умолчанию, когда ни одно условие не совпало

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.