Nó: Junção (Join)
O nó Junção (Join) é responsável por sincronizar branches paralelas dentro de um workflow. Ele aguarda a convergência de todas as branches em andamento antes de permitir que o fluxo continue para o próximo passo. Sem ele, branches que correm em paralelo nunca se reencontram, e o restante do processo não pode prosseguir de forma controlada.
Pense no Join como uma barreira de sincronização: nenhuma branch passa sozinha. O fluxo só avança quando o último caminho paralelo também chegar até o nó de junção.
Quando usar
Use o nó Join sempre que o seu workflow tiver dividido o fluxo em mais de um caminho simultâneo (fork) e você precisar que todos esses caminhos terminem antes de continuar.
Exemplos práticos de situações em que o Join é necessário:
- Enviar um email para o solicitante e ao mesmo tempo registrar os dados em uma planilha, e só confirmar a conclusão do processo quando as duas ações terminarem.
- Disparar notificações para diferentes equipes em paralelo e, após todas serem enviadas, atualizar o status da instância.
- Solicitar aprovações de diferentes aprovadores em branches separadas e aguardar que todas as respostas cheguem antes de tomar uma decisão final.
Sempre que você criar um fork no canvas (ou seja, conectar múltiplas saídas de um nó a nós diferentes), você precisará de um Join para reunir essas branches novamente em um único fluxo.
Entendendo Branches Paralelas (Fork)
Um fork ocorre quando, a partir de um único nó, múltiplas transições são ativadas ao mesmo tempo. Cada uma dessas transições inicia uma branch independente, que executa seus próprios nós sem esperar pelas demais.
As branches são realmente independentes: se uma delas travar em um nó de aprovação aguardando resposta, as outras continuam executando normalmente ao seu lado.
Nós que podem criar um fork
Qualquer nó que possua mais de uma saída conectada a nós distintos pode criar um fork. Os casos mais comuns são:
- Aprovação: cada desfecho configurado (por exemplo, "Aprovado", "Rejeitado", "Revisar") é uma saída separada. Se você conectar dois desses desfechos a nós diferentes que depois precisam se reencontrar, terá um fork.
- Se/Senão (If-Else): as saídas Verdadeiro e Falso também podem criar branches que precisam convergir.
- Webhook de Saída: as saídas Sucesso e Erro podem gerar branches paralelas.
- Enviar Mensagem no Slack / Enviar Mensagem no Microsoft Teams: saídas de sucesso e erro.
- Qualquer nó em que você, manualmente no canvas, arrasta múltiplas conexões a partir de uma mesma saída para nós distintos que depois se unem.
Cada branch de um fork corre de forma autônoma. Elas não compartilham estado entre si. O único ponto de encontro planejado é o nó Join, que sabe quantas branches esperar e aguarda todas elas antes de prosseguir.
Configuração
O nó Join é intencionalmente simples: ele não possui configurações funcionais além do rótulo (label), que serve apenas para identificação visual no canvas.
O número de entradas que o Join irá aguardar não é configurado manualmente. O editor de workflows calcula esse número automaticamente com base nas conexões desenhadas no canvas. Cada seta que chega até o nó Join representa uma branch que ele precisará aguardar.
Isso significa que:
- Conecte todos os caminhos paralelos ao nó Join no canvas.
- O sistema detecta automaticamente quantas branches chegam até ele.
- Não há nenhum campo numérico para preencher.
O nó Join aguarda exatamente o número de branches que chegam até ele no canvas. Se você criar um fork com três caminhos e conectar apenas dois deles ao Join, o terceiro nunca chegará e o Join nunca avançará. Certifique-se de que todas as branches do fork estejam conectadas ao Join.
Comportamento em Execução
Durante a execução de uma instância do workflow, o nó Join se comporta da seguinte forma:
- A primeira branch que chega ao Join é recebida e o nó entra em modo de espera.
- O status da instância é atualizado para indicar que o fluxo está aguardando a convergência das branches restantes.
- Conforme cada branch adicional chega, o Join registra sua chegada.
- Quando a última branch esperada chega, o Join libera o fluxo e o próximo nó conectado à saída do Join é executado.
O que acontece se uma branch falhar
Se qualquer uma das branches paralelas encontrar um erro não tratado durante sua execução, o Join registra a falha. O fluxo não avança e a instância é marcada com status Falhou. Isso garante que o processo não continue em estado inconsistente, com dados parcialmente processados.
Exemplo de Fluxo com Join
A seguir, um exemplo textual de como um workflow com fork e Join funciona na prática:
Cenário: Ao receber uma nova resposta de formulário, o workflow deve enviar um email de confirmação para o solicitante e exportar os dados para uma planilha do Google Sheets ao mesmo tempo. Somente após ambas as ações concluírem, o status da instância deve ser atualizado.
[FORM_RESPONSE_TRIGGER]
|
v
[Nó A: Se/Senão (If-Else)] ← verifica se formulário está completo
|
(Verdadeiro)
|
FORK ──────────────────────────────────┐
| |
v v
[Branch 1: Enviar email] [Branch 2: Exportar para planilha]
Envia confirmação (Google Sheets ou Microsoft Excel)
| |
└──────────────┬──────────────────────┘
v
[JOIN]
|
v
[Definir Status]
Status: "Processamento concluído"
Neste exemplo:
- O nó Se/Senão (If-Else) avalia se a resposta está completa. Em caso positivo, o fluxo segue para o fork.
- Branch 1 executa o envio do email de confirmação.
- Branch 2 executa a exportação dos dados para o Google Sheets.
- As duas branches correm em paralelo, de forma independente.
- O nó Join aguarda as duas branches terminarem.
- Somente após o Join, o nó Definir Status executa e atualiza o status da instância.
Boas Práticas
- Planeje o fork antes de adicionar o Join. Identifique visualmente todos os caminhos que partem do fork e certifique-se de que cada um deles chegue até o nó Join.
- Evite Joins "abertos". Nunca deixe um Join com menos conexões do que o número real de branches. O fluxo ficará preso indefinidamente aguardando branches que jamais chegarão.
- Use o rótulo para documentar. Mesmo sendo simples, nomeie o nó Join com algo descritivo como "Aguarda email e planilha" para facilitar a leitura do workflow por outros membros da equipe.
- Trate erros nas branches. Se uma branch pode falhar (por exemplo, uma chamada de webhook ou integração com serviço externo), considere tratá-la antes do Join para evitar que toda a instância seja marcada como falha.
Sem o nó Join, as branches paralelas nunca convergem e o fluxo não sabe quando pode prosseguir. Sempre que você criar um fork no canvas, adicione um Join ao final das branches para garantir que o processo continue de forma ordenada e previsível.