O Node-Red suporta fluxos de várias solicitações (ou seja, sessões)?

8

Dei um breve teste ao Node-Red esta semana. Não está claro para mim se ele suporta fluxos que abrangem mais de uma solicitação. O Nó-Vermelho possui um modelo de solicitação por fluxo ou sessão por fluxo?

Tendo trabalhado com ferramentas de programação baseadas em fluxo de dados para Modelagem de Processos de Negócios (webMethods e Tibco), vejo que um de seus principais recursos é a capacidade de modelar sessões e fluxos de trabalho. Essas ferramentas são, no entanto, bastante grandes para os propósitos da maioria dos projetos de IoT; portanto, seria ótimo se algo semelhante pudesse ser realizado com o Node-Red.

Uma pergunta de acompanhamento, no caso Node-Red não suporta este, é se existem algumas ferramentas simples que fazem apoiar modelagem gráfica dos fluxos de sessão?

Chris Steinbach
fonte
Não tenho certeza se isso ajuda; groups.google.com/forum/#!topic/node-red/Fv37YHVXQxw
MatsK
1
@MatsK Não tenho certeza. Se você seguir este link , verá um exemplo, um tanto artificial, de uma ferramenta de BPM. Observando a parte "Vendedor de pizza" do fluxo, você vê três eventos / solicitações de entrada: o pedido recebido, uma solicitação de status (onde está minha pizza?) E pagamento. As solicitações servem para avançar o fluxo que possui um ciclo de vida independente de qualquer solicitação única.
Chris Steinbach
1
@MatsK Um exemplo mais relevante para a IoT seria, por exemplo, um detector de fumaça que inicie um fluxo quando a fumaça for detectada. A primeira ação (nó) no fluxo seria acionar um alarme sonoro, mas depois o fluxo pode seguir algumas maneiras diferentes. Se uma solicitação do usuário for recebida dentro de um determinado período para cancelar o alarme, o alarme sonoro será interrompido e o fluxo será encerrado. Se nenhuma solicitação de cancelamento for recebida ou outro detector de fumaça for acionado, outras ações serão tomadas (por exemplo, proprietário do SMS, ligue para os serviços de emergência).
22417 Chris Steinbach

Respostas:

3

A resposta é não e sim.

Os fluxos no nó vermelho são bastante estáticos, não há noção de instanciar um fluxo quando os primeiros pedidos chegam, de modo que você possa ter uma instância de um fluxo por pedido.

Também não há noção interna de uma sessão que permita associar mensagens que fluem através de fluxos a uma sessão.

No entanto, você pode construir essas coisas com relativa facilidade. Node-red fornece uma noção de fluxo e estado global, que é acessada usando os objetos flowe global, consulte https://nodered.org/docs/writing-functions#storing-data . O que você faria é enviar um cookie aos clientes e associar explicitamente uma solicitação de entrada ao estado global ou de fluxo salvo. Em seguida, você pode escrever um código que reconhece a sessão com base no estado da sessão salva. Isso funciona bem em nós de função, mas você encontrará alguns problemas com os nós internos que fazem coisas como limite de taxa ou mensagens de divisão e mesclagem, porque geralmente não estão cientes da noção de sessão.

No exemplo da pizza, você manteria o estado de um pedido no fluxo ou no contexto global e acessaria o estado do pedido apropriado com base no valor do cookie.

TvE
fonte
5

A resposta curta é sim , pelo menos de acordo com esta solicitação de recurso :

Definir convenção para sessões 'stateful' # 63

Essa solicitação é encerrada com uma confirmação informando que um nó de soquete da web foi adicionado, com base em um token de sessão.

mico
fonte
Esse é um recurso útil e relevante para o que me preocupa até certo ponto, mas não exatamente o mesmo. O que quero dizer com sessão é realmente uma instância iniciada de um fluxo definido (ou modelo no mundo do BPM). A vida útil desse fluxo instanciado não está vinculada a nenhuma solicitação ou sessão de transporte única. Pense nisso como um diagrama de transição de estado, se desejar, embora menos formalizado nas implementações que eu já vi.
22317 Chris Steinbach