Os dados do Nodered não estão indo para o OpenRPA

Oi,

Tenho dois problemas que não encontrei solução:

Quando vou executar um workflow do openrpa que tem o componente “Invoke OpenFlow”, o dados do NodeRed não retorna para o OpenRPA mesmo que na saida de dados do NodeRed apareça valores validos.
Como vc pode ver nas imagens a seguir, os valores quando vão para o OpenRpa aparem “None” no lugar de aparecer o valor de saida do OpenRpa.

O outro problema que esta acontecendo é que muitas vezes ao usar “Invoke OpenFlow” ele não se conecta com o flow do NodeRed. Por exemplo. Eu clico em executar o workflow openrpa . E logo em seguida vou ao Nodered para ver se começou a executar o flow mas ele não executa, enquanto isso o OpenRpa fica executando infinitamente aguardando o valor retornar do NodereRed. Mas o valor nunca vai retornar pelo fato do flow não ter começado a executar. Nas imagens tem os container do Docker e esta tudo certo eles rodam normalmente. Tem dia que o OpenFlow com o Nodered executa perfeitamente mas tem outros que acontece esse problema.

  1. Não sei porquê aparece “None”, sendo que na saida do NodeRed aparece os valores que preciso, mas ao chegar no OpenRpa ao invez de colocar os valores corretos ele coloca “None”. O mais estranho e que quando eu executo novamente ele funciona normalmente trazendo o mesmo dado que o NodeRed.

  2. Primeiro estou usando o “Invoke OpenFlow” e logo em seguida o “Invoke Code” pra separar cada variavel e armazenando no OpenRpa
    codigo pra criar variaveis

  3. Eu não uso o Rabitmq. Eu uso apenas o OpenRpa e o NodeRed mesmo… Sera que por isso tem esses erros ? A versão do OpenRpa que uso é a 1.4.54 e a do NodeRed é a 3.1.4

conexão openrpa

output Openrpa

  1. None seem to be generated by your code? if a value was missing it would be null if from openflow/nodere or Nothing if from OpenRPA.
    But if you are sending a payload from NodeRED to OpenRPA, then calling invoke openflow, you need to remap all the arguments to variables, since “invoke” functions cannot read/see arguments
  2. Check if you have “zombie” connections in your rabitmq. I have not seen that happen in a looooong time, but if you are on an old code base, maybe that is what you are struggling with ? If rabitmq thinks there are more than 1 client consuming a queue it will “load balance” the message between them, there for only every second message willl go though.
    Or, check if NodeRED is really connected. The NodeRED web interface will still work, even if it has lost connection to openflow ( can you do a query towards the database, when this happens ? )
  1. Não sei porquê aparece “None”, sendo que na saida do NodeRed aparece os valores que preciso, mas ao chegar no OpenRpa ao invez de colocar os valores corretos ele coloca “None”. O mais estranho e que quando eu executo novamente ele funciona normalmente trazendo o mesmo dado que o NodeRed.

  2. Primeiro estou usando o “Invoke OpenFlow” e logo em seguida o “Invoke Code” pra separar cada variavel e armazenando no OpenRpa
    codigo pra criar variaveis

  3. Nao estou usando o Rabitmq. Uso apenas o OpenRpa e o NodeRed. O OpenRpa esta na versão 1.4.54 e o NodeRed na versão 3.1.4

  1. None is python’s version of “null” so that explains it
    What do you mean “second time” what is different from the first time ? how do you “trigger” a try ?
    Try using debug node in NodeRED, and writeline in OpenRPA to see when the data is missing ( or use a breakpoint by selecting an activity in OpenRPA and pressing F9 )
  2. again, invoke functions cannot read arguments, you need to map the argument to a variables before using it inside a invoke function ( like invoke code or invoke nodered )
  3. yes you are. OpenFlow does not work without rabbitmq, that is how you are sending message between nodered/openrpa

Eu coloco pra executar o OpenRpa, no componente Invoke OpenFlow ele vai ao NodeRed e começa a executar o flow que tem lá. A saida de dados do NodeRed contem dados. Mas ao enviar novamente ao OpenRpa aparece “None”.

output Openrpa

Isso na primeira vez que executo o OpenRpa, ao executar novamente apos ver que o valor veio como “None” ele vem com o valor correto igual ao NodeRed

Como deveria vim

try adding a debug node after the workflow out node and make sure msg.payload contains an OBJECT and not an array. The object needs to have one or more properties that matches the variable’s in openrpa ( in your case that seems to be resultado_lista )

Ele contem o objeto.

O estranho e que ele da esse problema, eu paro a execusão do OpenRPA e executo novamente e ai funciona perfeitamente.

You have connetcted the “flow” to something else
Are you modifying the payload there ? please try and disconnect the link node

Esse link é importante, pois eu estou envindo para outro fluxo todos os produtos da consulta
na API do Slaesforce para que o robo pegue esses dados e dentro de um loop ( caso tenha mais de 1 produto ) adicione cada um deles.
Usamos o OpenRpa para uma integração de criação de pedido de venda automaticamente.

Você acha que é possivel juntar esses dois fluxos em um só ? Eu uso dois robos um para adicionar os dados de compra e outro para adicionar os produtsos. Se tudo ficar no mesmo fluxo como o segundo robo vai conseguir pegar um dado que esta apenas no primeiro robo ?

if you need to continue the flow/split it, you need to avoid “touching” the msg.payload.
One work around could be to use amqp to send a message between two nodes
image

or even better, use workitems … the you get state, security for execution, tracking, retry-ability and so much more

1 Like

WOW! Muito obrigada Allan você é incrivel !!

1 Like

Oiii,

Allan você poderia me ajudar com uma coisa ?

Você disse que o OpenFlow não funciona sem o RabbitMQ, não encontrei em nenhum lugar como posso fazer a coneção entre esses dois. Você teria algum link onde eu possa usar como guia ?

1 Like