Перейти до основного вмісту

Узел 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

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