Node-Red có hỗ trợ luồng đa yêu cầu (tức là phiên) không?


8

Tôi đã cho Node-Red chạy thử ngắn trong tuần này. Tôi không rõ liệu nó có hỗ trợ các luồng bao gồm nhiều hơn một yêu cầu hay không. Node-Red có mô hình yêu cầu cho mỗi luồng hoặc mô hình phiên trên mỗi luồng không?

Đã làm việc với các công cụ lập trình dựa trên luồng dữ liệu cho Mô hình hóa quy trình nghiệp vụ (webMethods và Tibco), tôi thấy một trong những tính năng chính của chúng là khả năng mô hình hóa các phiên và quy trình công việc. Tuy nhiên, các công cụ này khá lớn cho mục đích của hầu hết các dự án IoT, vì vậy sẽ thật tuyệt nếu một cái gì đó tương tự có thể được thực hiện với Node-Red.

Một câu hỏi tiếp theo, trong trường hợp Node-Red không hỗ trợ này, là liệu có một số công cụ đơn giản mà làm hỗ trợ xây dựng mô hình đồ họa của dòng phiên?


Tôi không chắc chắn nếu điều này giúp; Groups.google.com/forum/#!topic/node-red/Fv37YHVXQxw
MatsK

1
@MatsK Không chắc chắn. Nếu bạn theo liên kết này, bạn sẽ thấy một luồng ví dụ, hơi khó hiểu, từ một công cụ BPM. Nhìn vào phần "Nhà cung cấp pizza" của luồng bạn thấy ba sự kiện / yêu cầu đầu vào: đơn hàng nhận được, yêu cầu trạng thái (pizza của tôi ở đâu?) Và thanh toán. Các yêu cầu phục vụ để thúc đẩy luồng có vòng đời độc lập với bất kỳ yêu cầu nào.
Chris Steinbach

1
@MatsK Một ví dụ phù hợp hơn với IoT sẽ là, một máy dò khói bắt đầu một dòng chảy khi phát hiện khói. Hành động đầu tiên (nút) trong luồng sẽ là phát ra âm thanh báo động âm thanh, nhưng sau đó luồng có thể đi theo một số cách khác nhau. Nếu một yêu cầu người dùng được nhận trong một thời gian nhất định để hủy báo thức, báo động âm thanh sẽ bị dừng và luồng kết thúc. Nếu không nhận được yêu cầu hủy hoặc kích hoạt đầu báo khói khác, thì các hành động tiếp theo sẽ được thực hiện (ví dụ: chủ sở hữu SMS, gọi các dịch vụ khẩn cấp).
Chris Steinbach

Câu trả lời:


3

Câu trả lời là không và có.

Các luồng trong nút đỏ là khá tĩnh, không có khái niệm bắt đầu một luồng khi các yêu cầu đầu tiên xuất hiện sao cho bạn có thể có một luồng cho mỗi yêu cầu.

Cũng không có khái niệm tích hợp nào về phiên sẽ cho phép bạn liên kết các thông điệp chảy qua các luồng với phiên.

Tuy nhiên, bạn có thể tương đối dễ dàng xây dựng những thứ này cho mình. Node-red cung cấp một khái niệm về dòng chảy và trạng thái toàn cầu, được truy cập bằng cách sử dụng flowglobalcác đối tượng, xem https://nodered.org/docs/wr-fifts#storing-data . Những gì bạn sẽ làm là gửi một cookie cho khách hàng và sau đó liên kết rõ ràng một yêu cầu đến với trạng thái lưu lượng hoặc toàn cầu đã lưu. Sau đó, bạn có thể viết mã "nhận biết phiên" dựa trên trạng thái phiên đã lưu. Điều này hoạt động tốt trong các nút chức năng, nhưng bạn sẽ gặp một số vấn đề với các nút tích hợp thực hiện những việc như giới hạn tốc độ hoặc phân tách & hợp nhất các thông báo vì những điều này thường không nhận thức được khái niệm phiên.

Trong ví dụ về pizza, bạn sẽ duy trì trạng thái của một đơn hàng trong dòng chảy hoặc bối cảnh toàn cầu và bạn sẽ truy cập trạng thái của đơn hàng phù hợp dựa trên giá trị cookie.


5

Câu trả lời ngắn gọn là , ít nhất là theo yêu cầu tính năng này :

Xác định quy ước cho các phiên 'trạng thái' # 63

Yêu cầu này được đóng lại với một cam kết cho biết rằng một nút ổ cắm web được thêm vào, dựa trên mã thông báo phiên.


Đây là một tính năng hữu ích và phù hợp với những gì tôi quan tâm ở một mức độ nào đó, nhưng không hoàn toàn giống nhau. Ý tôi là bởi phiên thực sự là một phiên bản bắt đầu của một luồng xác định, (hoặc mô hình trong thế giới BPM). Thời gian tồn tại của luồng khởi tạo này không được liên kết với bất kỳ yêu cầu hoặc phiên vận chuyển nào. Hãy nghĩ về nó giống như một sơ đồ chuyển trạng thái nếu bạn muốn, mặc dù ít được chính thức hóa trong các triển khai tôi đã thấy.
Chris Steinbach
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.