¿Node-Red admite flujos de solicitud múltiple (es decir, sesiones)?

8

Le di a Node-Red una breve prueba esta semana. No me queda claro si admite flujos que abarcan más de una solicitud. ¿Node-Red tiene un modelo de solicitud por flujo o una sesión por flujo?

Después de haber trabajado con herramientas de programación basadas en el flujo de datos para Business Process Modeling (webMethods y Tibco), veo que una de sus características clave es la capacidad de modelar sesiones y flujos de trabajo. Sin embargo, estas herramientas son bastante grandes para los propósitos de la mayoría de los proyectos de IoT, por lo que sería genial si se pudiera lograr algo similar con Node-Red.

Una pregunta de seguimiento, en caso de que Node-Red no lo admita, es si hay algunas herramientas simples que admiten el modelado gráfico de los flujos de sesión.

Chris Steinbach
fuente
No estoy seguro si esto ayuda; groups.google.com/forum/#!topic/node-red/Fv37YHVXQxw
MatsK
1
@MatsK No estoy seguro. Si sigue este enlace , verá un flujo de ejemplo, algo artificial, de una herramienta BPM. Si observa la parte del flujo "Vendedor de pizza", verá tres eventos / solicitudes de entrada: el pedido recibido, una solicitud de estado (¿dónde está mi pizza?) Y el pago. Las solicitudes sirven para avanzar en el flujo que tiene un ciclo de vida que es independiente de cualquier solicitud individual.
Chris Steinbach
1
@MatsK Un ejemplo más relevante para IoT sería, por ejemplo, un detector de humo que comienza a fluir cuando se detecta humo. La primera acción (nodo) en el flujo sería hacer sonar una alarma audible, pero después de eso, el flujo puede ir de diferentes maneras. Si se recibe una solicitud del usuario dentro de un tiempo determinado para cancelar la alarma, la alarma sonora se detiene y el flujo finaliza. Si no se recibe ninguna solicitud de cancelación, u otro detector de humo se dispara, se toman medidas adicionales (por ejemplo, el propietario del SMS, llame a los servicios de emergencia).
Chris Steinbach

Respuestas:

3

La respuesta es no y sí.

Los flujos en el nodo rojo son bastante estáticos, no existe la noción de crear instancias de un flujo cuando llegan las primeras solicitudes de modo que pueda tener una instancia de un flujo por solicitud.

Tampoco hay una noción incorporada de una sesión que le permita asociar mensajes que fluyen a través de flujos con una sesión.

Sin embargo, usted mismo puede construir estas cosas con relativa facilidad. Node-red proporciona una noción de flujo y estado global, al que se accede mediante los objetos flowy global, consulte https://nodered.org/docs/writing-functions#storing-data . Lo que haría es enviar una cookie a los clientes y luego asociar explícitamente una solicitud entrante con el estado global o de flujo guardado. Luego puede escribir código que sea "consciente de la sesión" según el estado de la sesión guardada. Esto funciona bien en los nodos de función, pero tendrá algunos problemas con los nodos integrados que hacen cosas como limitar la velocidad o dividir y fusionar mensajes porque generalmente no son conscientes de la noción de sesión.

En el ejemplo de pizza, mantendría el estado de un pedido en el flujo o en el contexto global y accedería al estado del pedido correspondiente en función del valor de la cookie.

TvE
fuente
5

La respuesta corta es , al menos según esta solicitud de función :

Definir convención para sesiones 'con estado' # 63

Esta solicitud se cierra con una confirmación que indica que se agrega un nodo de socket web, que se basa en un token de sesión.

mico
fuente
Esta es una característica útil y relevante para lo que me preocupa hasta cierto punto, pero no exactamente lo mismo. Lo que quiero decir con sesión es realmente una instancia iniciada de un flujo definido (o modelo en el mundo BPM). La vida útil de este flujo instanciado no está vinculada a una sola solicitud o sesión de transporte. Piense en ello como un diagrama de transición de estado si lo desea, aunque menos formalizado en las implementaciones que he visto.
Chris Steinbach