Unterstützt Node-Red Flows mit mehreren Anforderungen (dh Sitzungen)?

8

Ich habe Node-Red diese Woche einen kurzen Testlauf gegeben. Mir ist nicht klar, ob es Flows unterstützt, die mehr als eine Anfrage umfassen. Verfügt Node-Red über ein Request-per-Flow- oder ein Session-per-Flow-Modell?

Nachdem ich mit datenflussbasierten Programmiertools für die Geschäftsprozessmodellierung (webMethods und Tibco) gearbeitet habe, sehe ich eine ihrer Hauptfunktionen in der Fähigkeit, Sitzungen und Workflows zu modellieren. Diese Tools sind jedoch für die meisten IoT-Projekte ziemlich umfangreich. Daher wäre es großartig, wenn mit Node-Red etwas Ähnliches erreicht werden könnte.

Eine weitere Frage für den Fall, dass Node-Red dies nicht unterstützt, ist, ob es einige einfache Tools gibt, die die grafische Modellierung von Sitzungsabläufen unterstützen.

Chris Steinbach
quelle
Ich bin mir nicht sicher, ob das hilft; groups.google.com/forum/#!topic/node-red/Fv37YHVXQxw
MatsK
1
@MatsK Ich bin mir nicht sicher. Wenn Sie diesem Link folgen , sehen Sie einen etwas erfundenen Beispielfluss von einem BPM-Tool. Wenn Sie sich den Teil "Ablauf des Pizza-Anbieters" ansehen, sehen Sie drei Eingabeereignisse / -anforderungen: die eingegangene Bestellung, eine Statusanforderung (wo ist meine Pizza?) Und die Zahlung. Die Anforderungen dienen dazu, den Fluss voranzutreiben, dessen Lebenszyklus von jeder einzelnen Anforderung unabhängig ist.
Chris Steinbach
1
@MatsK Ein für das Internet der Dinge relevanteres Beispiel wäre beispielsweise ein Rauchmelder, der einen Fluss beginnt, wenn Rauch erkannt wird. Die erste Aktion (Knoten) im Fluss besteht darin, einen akustischen Alarm auszulösen. Danach kann der Fluss verschiedene Wege gehen. Wenn innerhalb einer bestimmten Zeit eine Benutzeranforderung zum Abbrechen des Alarms eingeht, wird der akustische Alarm gestoppt und der Fluss beendet. Wenn keine Abbruchanforderung empfangen wird oder ein anderer Rauchmelder ausgelöst wird, werden weitere Maßnahmen ergriffen (z. B. SMS-Besitzer, Notdienst anrufen).
Chris Steinbach

Antworten:

3

Die Antwort ist nein und ja.

Flows in Node-Red sind ziemlich statisch. Es gibt keine Vorstellung davon, einen Flow zu instanziieren, wenn die ersten Anforderungen eingehen, sodass Sie möglicherweise eine Instanz eines Flows pro Anforderung haben.

Es gibt auch keinen integrierten Begriff für eine Sitzung, mit dem Sie Nachrichten, die durch Flüsse fließen, einer Sitzung zuordnen können.

Sie können diese Dinge jedoch relativ einfach selbst konstruieren. Node-Red bietet eine Vorstellung von Flow und globalem Status, auf die mit den Objekten flowund zugegriffen wird global(siehe https://nodered.org/docs/writing-functions#storing-data) . Sie würden ein Cookie an Clients senden und dann eine eingehende Anforderung explizit mit dem gespeicherten globalen Status oder dem Flow-Status verknüpfen. Sie können dann Code schreiben, der basierend auf dem gespeicherten Sitzungsstatus "sitzungsbewusst" ist. Dies funktioniert gut in Funktionsknoten, aber Sie werden auf einige Probleme mit den integrierten Knoten stoßen, die Dinge wie Ratenbegrenzung oder Split & Merge-Nachrichten ausführen, da diese den Sitzungsbegriff im Allgemeinen nicht kennen.

Im Pizza-Beispiel würden Sie den Status einer Bestellung im Ablauf oder im globalen Kontext beibehalten und auf den Status der entsprechenden Bestellung basierend auf dem Cookie-Wert zugreifen.

TvE
quelle
5

Kurze Antwort ist ja , zumindest gemäß dieser Funktionsanforderung :

Definieren Sie die Konvention für 'Stateful'-Sitzungen # 63

Diese Anforderung wird mit einem Commit geschlossen, das angibt, dass ein Web-Socket-Knoten hinzugefügt wurde, der auf einem Sitzungstoken basiert.

mico
quelle
Dies ist eine nützliche Funktion und relevant für das, worum es mir in gewissem Maße geht, aber nicht genau das gleiche. Was ich unter Sitzung verstehe , ist wirklich eine gestartete Instanz eines definierten Flusses (oder Modells in der BPM-Welt). Die Lebensdauer dieses instanziierten Flusses ist nicht an eine einzelne Anforderung oder Transportsitzung gebunden. Stellen Sie es sich wie ein Zustandsübergangsdiagramm vor, wenn Sie so wollen, obwohl es in den Implementierungen, die ich gesehen habe, weniger formalisiert ist.
Chris Steinbach