Automações Síncronas e Assíncronas
Gatilhos
Qual a diferença entre automações síncronas e assíncronas?
Como seus nomes indicam, as automações síncronas e assíncronas são gatilhos que são executados em sincronia ou fora de sincronia com as ações do usuário. O que isso significa é que:
- Automações síncronas serão acionadas imediatamente quando um usuário realizar uma ação e serão executadas até a conclusão como uma sequência única e ininterrupta de ações.
- Automações assíncronas não serão necessariamente executadas imediatamente (embora geralmente o façam). Mais importante, a automação pode ser executada em blocos. Isso significa que é possível que o usuário veja e interaja com resultados parciais de automações enquanto usa Jestor (por exemplo, importar 1.000 linhas de uma planilha pode importá-las em blocos de 100s).
Os usos para automações síncronas e assíncronas variam, mas geralmente estão vinculados à probabilidade de a automação causar ou não tempos limites.
Como executar Automações Síncronas no Jestor?
As automações síncronas são a maneira padrão de executar gatilhos no Jestor e farão isso, a menos que especificado de outra forma.
O código de exemplo abaixo será executado como síncrono:
if($objectNew['status'] == 'Won'){
Jestor.create('onboarding',['name' => $objectNew['name']);
}
Como executar Automações Assíncronas no Jestor?
Para executar automações assíncronas, basta escrever //async como a primeira linha de código no gatilho.
O código de exemplo abaixo será executado como assíncrono:
//async
if($objectNew['status'] == 'Won'){
Jestor.create('onboarding',['name' => $objectNew['name']);
}
Como essa é uma automação muito curta, provavelmente produzirá o mesmo resultado final que a automação síncrona equivalente (no que diz respeito ao usuário), mas será executada em paralelo à experiência do usuário.
Observe que, como não há feedback imediato se a automação funcionou ou não, é importante que as automações assíncronas longas tenham algum tipo de feedback para o usuário quando terminarem de ser executadas.
Por exemplo, o código abaixo aguardará dez minutos e, em seguida, atualizará um campo de caixa de seleção para indicar que a automação foi concluída.
//async
sleep(600);
Jestor.update('test_automation',['id_test_automation' => $objectNew['id_test_automation'], 'done' => 1]);
Como dica final, é importante executar automações assíncronas com testes menores depois de criá-los, pois não há como pausá-los. Você não quer esperar 15 minutos para que uma automação termine quando você percebe imediatamente que há algo errado com ela!
Sobre Jestor.error()
Como as automações assíncronas são executadas em paralelo à experiência do usuário, Jestor.error() funcionará de maneira diferente das automações síncronas.
O método ainda funcionará (a automação será interrompida e as alterações serão revertidas), mas a mensagem de erro não aparecerá para o usuário. Tenha isso em mente ao desenvolver seus gatilhos!
Updated over 1 year ago