Boa tarde pessoal. Eu tenho um problema e não sei como resolve-lo de forma automatizada.
Eu possuo 2 macros. Vamos chamar Macro1 (que acessa uma API do fornecedor e solicita a execução de um report com parametros que eu envio, me retornando um id de transação) e a Macro2 (que eu informo o id de transação retornado da Macro1).
Eu criei um fluxo que executo a Macro1, recebe o id da transação e informa esse ID na Macro2. Agora vem o problema....
A Macro1 é só o gatilho para a execução do report que preciso, e o id da transação é a chave que preciso buscar o report. O problema que quando executo a Macro2 sequencial no fluxo, o report ainda não está pronto no server do fornecedor e me retorna "Pendente na fila de execução". Ai preciso executar varias vezes a MAcro2 até que ela retorne "OK" e me retorne dados.
Eu precisava de um temporizador (uns 5 min deve dar) ou então algo que fique executando (automático) até que o retorno da Macro2 para o campo execução seja OK.
Não sei se ficou muito claro, mas é isso. Se alguém tiver uma sugestão, irá me ajudar muito.
Obrigagdo 🙂
Solucionado! Ir para Solução.
Oi @afprospero tudo bem?
Só pra eu entender melhor:
O Id de transação (que vc usa na macro 2) vc recebe ele antes de o relatório, solicitado na Macro 1, estar pronto?
Carlos A Teixeira
Ola @carlosteixeira , bom dia.
Isso mesmo. Eu envio a solicitação e a macro 1 devolve o id (por exemplo ID 54). Ai eu preciso informar ele na Macro 2 como parametros de entrada da API, ai enquanto o relatório não estiver pronto a macro 2 retorna que esta na fila. Só quando finaliza a execução do report, é que o id 54 traz os resultados pra eu poder utilizar.
Obrigado pela ajuda de sempre.
Você sabe quanto tempo leva pra primeira macro finalizar todo o resultado?
O que estou pensando, não sei se para seu problema serviria, mas seria utilizar a ferrmanta "wait a second" da CREW MACRO, nela você teria já o ID da primeira macro, mas colocaria um tempo de espera até finalizar a macro 1 e aí rodaria a macro 2.
Me diz se entendeu a idéia.
Oi @carlosteixeira é uma boa idéia. Entendi sim
Eu pensei também em rodar a macro 1, e enquanto o campo status não for "OK" não rodar a macro 2. Seria como se fosse um loop a cada 10 segundos ou algo assim.
Sobre o tempo de execução exato do report, não tem como saber. Ja trouxe resultado em 1 minuto (minimo) e em 7 (maximo), pois depende da movimentação do dia. Mas se não tiver outra forma eu cravo um tempo de uns 10 min.
Eu tava fuçando as ferramentas e não encontrei alguma que tivesse "loop" .
O que acha disso?
@afprospero Legal, espero que de certo.
Bom nesse seu último exemplo, eu acho que você poderia usar algumas ferramentas do CREW MACRO
Runner e Conditional Runner, como na imagem abaixo:
O runner (primeira) vai executar a sua primeira macro, se ela executar com sucesso (até o final) ele executa a segunda ferramenta, Conditional Runner.
Acho que seria uma outra idéia para você testar.
Quanto ao loop, geralmente usamos a Iterative Macro quando precisamos fazer algum tipo de loop.
Segue uma pagina pra ler um pouquinho sobre ela:
https://help.alteryx.com/pt-br/current/designer/iterative-macro
Espero que ajude amigão.
Qualquer coisa posta aqui que vamos tentando ajudar.
Abraços
Legal @carlosteixeira .
Como habilito o CREW MACRO aqui? Pesquisei e não tem. Acho que é algum pacote que tem que instalar...correto?
Obrigado
Só baixar e instalar, se não me engano tem im install dentro do ZIP:
http://downloads.chaosreignswithin.com/Macros.zip
Abração
Valeu @carlosteixeira . Instalei o pacote e utilizei o Wiat a Second.
Coloquei um time de 5 minutos e rodou do jeito que eu precisava.
Grande abraço.