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:

  1. 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.
  2. 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!