Nhảy đến nội dung

Nút switch

Nút switch được thiết kế để định tuyến các thông điệp dựa trên nội dung, cấu trúc hoặc các điều kiện khác. Đây là một công cụ mạnh mẽ để tạo ra logic điều kiện trong các luồng.


Cài đặt nút switch

IMG2

1. Tên

Trường để chỉ định tên của nút.
Tên sẽ hiển thị trong không gian làm việc và giúp dễ dàng xác định nút.
Nếu để trống, nút sẽ được gọi là switch.

Ví dụ:

  • Tên nút: kiểm tra trạng thái

2. Thuộc tính

Chỉ định thuộc tính nào của đối tượng thông điệp msg sẽ được sử dụng để kiểm tra các điều kiện. Mặc định là payload.

Ví dụ:

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

Cũng hỗ trợ các thuộc tính môi trường (flow, global).


3. Kiểm tra

  • kiểm tra tất cả các quy tắc (mặc định):
    Thông điệp có thể được gửi đến nhiều đầu ra nếu nó thỏa mãn nhiều điều kiện.
  • dừng sau lần khớp đầu tiên:
    Thông điệp chỉ được gửi đến đầu ra đầu tiên thỏa mãn điều kiện.

4. Quy tắc

Xác định logic định tuyến. Mỗi quy tắc gắn liền với một trong các đầu ra của nút: số lượng quy tắc tương ứng với số lượng đầu ra. Số lượng đầu ra mà thông điệp sẽ đi đến khi có nhiều sự khớp được xác định bởi trường Kiểm tra.

Mỗi quy tắc có hai trường: Điều kiện — loại điều kiện và Giá trị — giá trị để so sánh. Đối với các điều kiện equals true, equals false, equals null, not equals null, emptynot empty, trường Giá trị sẽ không hiển thị.

Các loại điều kiện có sẵn:

  • ==: Kiểm tra sự bằng nhau của giá trị.
  • !=: Kiểm tra sự không bằng nhau.
  • <: Kiểm tra xem giá trị có nhỏ hơn không.
  • <=: Kiểm tra xem giá trị có nhỏ hơn hoặc bằng không.
  • >: Kiểm tra xem giá trị có lớn hơn không.
  • >=: Kiểm tra xem giá trị có lớn hơn hoặc bằng không.
  • has key: Kiểm tra xem đối tượng có chứa khóa đã chỉ định không.
  • between: Kiểm tra xem giá trị có nằm trong khoảng đã chỉ định (bao gồm cả hai đầu).
  • contains: Kiểm tra xem chuỗi hoặc mảng có chứa giá trị đã chỉ định không.
  • matches regex: Kiểm tra xem chuỗi có khớp với biểu thức chính quy không.
  • equals true: Kiểm tra xem giá trị có bằng true không.
  • equals false: Kiểm tra xem giá trị có bằng false không.
  • equals null: Kiểm tra xem giá trị có bằng null không.
  • not equals null: Kiểm tra xem giá trị có khác null không.
  • is of type: Kiểm tra xem giá trị có thuộc loại đã chỉ định không (ví dụ: string, number, boolean).
  • empty: Kiểm tra xem chuỗi, mảng hoặc đối tượng có rỗng không.
  • not empty: Kiểm tra xem chuỗi, mảng hoặc đối tượng có không rỗng không.
  • else: Thực hiện nếu không có điều kiện nào khác được thỏa mãn.

Ví dụ:

  • Điều kiện: >, Giá trị: 50

Dữ liệu đầu vào

Nút nhận đối tượng msg.
Các thuộc tính nào sẽ được kiểm tra được xác định trong trường Thuộc tính.


Dữ liệu đầu ra

Nút gửi thông điệp msg đến đầu ra tương ứng với điều kiện đã chỉ định.
Nếu thông điệp không thỏa mãn điều kiện nào, nó sẽ không được gửi đến các đầu ra.


Ví dụ sử dụng

Ví dụ 1: Lọc dữ liệu nhiệt độ

Nhiệm vụ:
Phân loại dữ liệu thành ba loại: nhiệt độ thấp, bình thường và cao.

Luồng:

[inject] ---> [function] ---> [switch] ---> [debug (nhiệt độ thấp)]
| [debug (nhiệt độ bình thường)]
| [debug (nhiệt độ cao)]

Cài đặt nút switch:

  • Thuộc tính: msg.payload
  • Các điều kiện:
    1. is less than 10 → Đầu ra 1
    2. is between 10 and 30 → Đầu ra 2
    3. is greater than 30 → Đầu ra 3

Kết quả:
Nhiệt độ sẽ được định tuyến dựa trên giá trị của chúng.