Węzeł switch
Węzeł switch
jest przeznaczony do routingu wiadomości w zależności od ich zawartości, struktury lub innych warunków. To potężne narzędzie do tworzenia logiki warunkowej w strumieniach.
Ustawienia węzła switch
1. Nazwa
Pole do podania nazwy węzła.
Nazwa jest wyświetlana w obszarze roboczym i pomaga łatwo zidentyfikować węzeł.
Jeśli pozostawisz puste, węzeł będzie nazywał się inject
.
Przykład:
- Nazwa węzła:
check status
2. Właściwość
Określa, która właściwość obiektu wiadomości msg
będzie używana do sprawdzania warunków.
Przykład:
msg.payload
msg.topic
msg.device.temperature
Obsługiwane są również właściwości środowiska (flow
, global
) oraz wyrażenia JSONata (zaczynające się od $
).
3. Sprawdzenie
- Sprawdzenie do pierwszego dopasowania (Domyślnie):
Wiadomość jest wysyłana tylko na pierwszy wyjście, które spełnia warunek. - Sprawdzenie wszystkich dopasowań:
Wiadomość może być wysyłana na kilka wyjść, jeśli spełnia kilka warunków.
3. Reguły
Określają logikę routingu. Każdy warunek jest przypisany do jednego z wyjść węzła. Wiadomość zostanie wysłana na pierwsze odpowiednie wyjście.
Dostępne typy warunków:
==
: Sprawdza równość wartości.!=
: Sprawdza nierówność.<
: Sprawdza, czy wartość jest mniejsza.<=
: Sprawdza, czy wartość jest mniejsza lub równa.>
: Sprawdza, czy wartość jest większa.>=
: Sprawdza, czy wartość jest większa lub równa.has key
: Sprawdza, czy obiekt zawiera określony klucz.between
: Sprawdza, czy wartość znajduje się w określonym zakresie (włącznie).contains
: Sprawdza, czy ciąg lub tablica zawiera określoną wartość.matches regex
: Sprawdza, czy ciąg odpowiada wyrażeniu regularnemu.equals true
: Sprawdza, czy wartość jest równatrue
.equals false
: Sprawdza, czy wartość jest równafalse
.equals null
: Sprawdza, czy wartość jest równanull
.not equals null
: Sprawdza, czy wartość nie jest równanull
.is of type
: Sprawdza, czy wartość odpowiada określonemu typowi (np.string
,number
,boolean
).empty
: Sprawdza, czy ciąg, tablica lub obiekt jest pusty.not empty
: Sprawdza, czy ciąg, tablica lub obiekt nie jest pusty.else
: Wykonywane, jeśli żaden z innych warunków nie jest spełniony.
Przykład:
msg.payload
jest większe niż50
Wejście
Węzeł przyjmuje obiekt msg
.
Jakie właściwości będą sprawdzane, określa pole Właściwość.
Wyjście
Węzeł wysyła wiadomość msg
na to wyjście, które odpowiada określonemu warunkowi.
Jeśli wiadomość nie spełnia żadnego warunku, nie jest wysyłana na wyjścia.
Przykłady użycia
Przykład 1: Filtrowanie danych temperatury
Zadanie:
Podzielić dane na trzy kategorie: niska, normalna i wysoka temperatura.
Strumień:
[inject] ---> [function] ---> [switch] ---> [debug (low temp)]
| [debug (normal temp)]
| [debug (high temp)]
Ustawienia węzła switch
:
- Właściwość:
msg.payload
- Warunki:
is less than 10
→ Wyjście 1is between 10 and 30
→ Wyjście 2is greater than 30
→ Wyjście 3
Wynik:
Temperatury będą routowane w zależności od ich wartości.