Asosiy mazmunga o'tish

Узел switch

Узел switch предназначен для маршрутизации сообщений в зависимости от их содержимого, структуры или других условий. Это мощный инструмент для создания условной логики в потоках.


Настройки узла switch

IMG2

1. Name

Поле для указания имени узла.
Имя отображается в рабочей области и помогает легко идентифицировать узел.
Если оставить пустым, узел будет называться inject.

Пример:

  • Имя узла: check status

2. Property

Указывает, какое свойство объекта сообщения msg будет использоваться для проверки условий.

Пример:

  • msg.payload
  • msg.topic
  • msg.device.temperature

Также поддерживаются свойства среды (flow, global) и выражения JSONata (начинаются с $).


3. Check

  • Проверка до первого совпадения (Default):
    Сообщение отправляется только на первый выход, удовлетворяющий условию.
  • Проверка всех совпадений:
    Сообщение может быть отправлено на несколько выходов, если соответствует нескольким условиям.

3. Rules

Определяют логику маршрутизации. Каждое условие привязано к одному из выходов узла. Сообщение будет отправлено на первый подходящий выход.

Доступные типы условий:

  • ==: Проверяет равенство значения.
  • !=: Проверяет неравенство.
  • <: Проверяет, меньше ли значение.
  • <=: Проверяет, меньше или равно ли значение.
  • >: Проверяет, больше ли значение.
  • >=: Проверяет, больше или равно ли значение.
  • has key: Проверяет, содержит ли объект указанный ключ.
  • between: Проверяет, находится ли значение в указанном диапазоне (включительно).
  • contains: Проверяет, содержит ли строка или массив указанное значение.
  • matches regex: Проверяет, соответствует ли строка регулярному выражению.
  • equals true: Проверяет, равно ли значение true.
  • equals false: Проверяет, равно ли значение false.
  • equals null: Проверяет, равно ли значение null.
  • not equals null: Проверяет, не равно ли значение null.
  • is of type: Проверяет, соответствует ли значение указанному типу (например, string, number, boolean).
  • empty: Проверяет, является ли строка, массив или объект пустым.
  • not empty: Проверяет, не является ли строка, массив или объект пустым.
  • else: Выполняется, если ни одно из других условий не выполнено.

Пример:

  • msg.payload is greater than 50

Входные данные

Узел принимает объект msg.
Какие именно свойства будут проверяться, задается в поле Property.


Выходные данные

Узел отправляет сообщение msg на тот выход, который соответствует заданному условию.
Если сообщение не соответствует ни одному условию, оно не отправляется на выходы.


Примеры использования

Пример 1: Фильтрация температурных данных

Задача:
Разделить данные на три категории: низкая, нормальная и высокая температура.

Поток:

[inject] ---> [function] ---> [switch] ---> [debug (low temp)]
| [debug (normal temp)]
| [debug (high temp)]

Настройки узла switch:

  • Property: msg.payload
  • Условия:
    1. is less than 10 → Выход 1
    2. is between 10 and 30 → Выход 2
    3. is greater than 30 → Выход 3

Результат:
Температуры будут маршрутизироваться в зависимости от их значения.