Nhảy tới nội dung

Node switch

Node switch được thiết kế để định tuyến tin nhắn 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 logic điều kiện trong các luồng.


Cài đặt cho node switch

IMG2

1. Tên

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

Ví dụ:

  • Tên node: 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 tin nhắn msg sẽ được sử dụng để kiểm tra các điều kiện.

Ví dụ:

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

Các thuộc tính môi trường (flow, global) và biểu thức JSONata (bắt đầu bằng $) cũng được hỗ trợ.


3. Kiểm tra

  • Kiểm tra cho đến khi có sự khớp đầu tiên (Mặc định):
    Tin nhắn chỉ được gửi đến đầu ra đầu tiên đáp ứng điều kiện.
  • Kiểm tra tất cả các sự khớp:
    Tin nhắn có thể được gửi đến nhiều đầu ra nếu nó đáp ứng nhiều điều kiện.

3. Quy tắc

Định nghĩa logic định tuyến. Mỗi điều kiện được gắn với một trong các đầu ra của node. Tin nhắn sẽ được gửi đến đầu ra phù hợp đầu tiên.

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 được chỉ định không.
  • between: Kiểm tra xem giá trị có nằm trong khoảng được chỉ định (bao gồm).
  • contains: Kiểm tra xem chuỗi hoặc mảng có chứa giá trị được 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ông bằng null không.
  • is of type: Kiểm tra xem giá trị có thuộc loại được 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 đáp ứng.

Ví dụ:

  • msg.payload lớn hơn 50

Đầu vào

Node chấp nhận đối tượng msg.
Các thuộc tính cụ thể nào sẽ được kiểm tra được thiết lập trong trường Thuộc tính.


Đầu ra

Node gửi tin nhắn msg đến đầu ra phù hợp với điều kiện đã chỉ định.
Nếu tin nhắn không đáp ứng bất kỳ đ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 cho node switch:

  • Thuộc tính: msg.payload
  • Điều kiện:
    1. nhỏ hơn 10 → Đầu ra 1
    2. ở giữa 10 và 30 → Đầu ra 2
    3. lớn hơn 30 → Đầu ra 3

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