Node-Redはマルチリクエストフロー(つまり、セッション)をサポートしていますか?


8

今週はNode-Redに短い試運転をしました。複数のリクエストを含むフローをサポートしているかどうかは、はっきりしません。Node-Redには、リクエストごとのフローモデルまたはセッションごとのフローモデルがありますか?

ビジネスプロセスモデリング(webMethodsとTibco)のデータフローベースのプログラミングツールを使用していて、それらの主要な機能の1つはセッションとワークフローをモデル化する機能です。ただし、これらのツールはほとんどのIoTプロジェクトの目的にはかなり大きいため、Node-Redで同様のことが実現できればすばらしいと思います。

ケースノード赤でフォローアップの質問は、これをサポートしていない、いくつかの簡単なツールがあるかどうかであるのセッションのグラフィカルモデリングはフローをサポートは?


これが役立つかどうかわかりません。groups.google.com/forum/#!topic/node-red/Fv37YHVXQxw
MatsK

1
@MatsKわからない。このリンクをたどると、BPMツールからの、やや工夫されたサンプルフローが表示されます。フローの「ピザベンダー」の部分を見ると、3つの入力イベント/リクエストがあります。注文、ステータスリクエスト(私のピザはどこですか)、支払いです。リクエストは、単一のリクエストから独立したライフサイクルを持つフローを進めるのに役立ちます。
Chris Steinbach

1
@MatsK IoTにより関連する例は、たとえば、煙が検出されたときにフローを開始する煙検出器です。フローの最初のアクション(ノード)は可聴アラームを鳴らすことですが、その後、フローはいくつかの異なる方法で進むことができます。アラームをキャンセルするためにユーザー要求が所定の時間内に受信された場合、可聴アラームは停止され、フローは終了します。キャンセル要求が受信されない場合、または別の煙探知器がトリガーした場合は、さらにアクションが実行されます(SMSの所有者、緊急サービスへの電話など)。
Chris Steinbach

回答:


3

答えは「いいえ」と「はい」です。

node-redのフローはかなり静的であり、最初のリクエストが来たときにフローをインスタンス化して、リクエストごとにフローのインスタンスを作成するという概念はありません。

また、フローを流れるメッセージをセッションに関連付けることができるセッションの組み込みの概念もありません。

ただし、これらを自分で比較的簡単に構築できます。node-redは、フローとグローバル状態の概念を提供します。これは、flowおよびglobalオブジェクトを使用してアクセスされます。https://nodered.org/docs/writing-functions#storing-dataを参照してください。Cookieをクライアントに送信し、受信したリクエストを保存されているグローバルステートまたはフローステートに明示的に関連付けます。次に、保存されたセッション状態に基づいて「セッション対応」のコードを記述できます。これは関数ノードでうまく機能しますが、レート制限やメッセージの分割とマージなどを行う組み込みノードでは、一般にセッションの概念を認識していないため、いくつかの問題が発生します。

ピザの例では、フローまたはグローバルコンテキストで注文の状態を維持し、Cookie値に基づいて適切な注文の状態にアクセスします。


5

短い答えはイエスです、少なくともこの機能リクエストによると:

「ステートフル」セッションの規則を定義する#63

このリクエストは、セッショントークンに基づくWebソケットノードが追加されたことを示すコミットで閉じられます。


これは便利な機能であり、私がある程度懸念していることに関連していますが、まったく同じではありません。私は何を意味でのセッションは本当に(BPMの世界でまたはモデル)定義されたフローの開始インスタンスです。このインスタンス化されたフローの存続期間は、単一の要求またはトランスポートセッションにリンクされていません。見れば、状態遷移図のように考えることができますが、私が見た実装では形式化されていません。
クリススタインバッハ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.