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
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ằngtrue
không.equals false
: Kiểm tra xem giá trị có bằngfalse
không.equals null
: Kiểm tra xem giá trị có bằngnull
không.not equals null
: Kiểm tra xem giá trị có không bằngnull
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ơn50
Đầ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:
nhỏ hơn 10
→ Đầu ra 1ở giữa 10 và 30
→ Đầu ra 2lớ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.