Como usar gateways

Os Gateways (desvios) são elementos que podem modificar o caminho do andamento do curso de execução do processo.

Visão geral

Gateway é um dos elementos básicos da notação de desenho de processos BPMN.

Os gateways (desvios) são elementos que podem modificar o caminho do andamento do curso de execução do processo. Com o uso de gateways conseguimos criar processos complexos, com diversas ramificações, que representam exatamente como as coisas acontecem nas empresas.

Os gateways são representados por losangos com ícones representativos, conforme sua função:

Os gateways podem ser divergentes ou convergentes.

Gateways divergentes

Como elemento divergente, o gateway possui duas ou mais setas de conexão de saída. Como o nome diz, ele tem o poder de divergir o processo, ou seja, mudar sua rota de execução, podendo inclusive iniciar execuções em paralelo. No exemplo abaixo, após a atividade A, as atividades B, C e D poderão (ou não) serem iniciadas: uma delas, duas delas, ou as três ao mesmo tempo.

Quais atividades serão iniciadas dependerá do tipo de gateway utilizado e das condições associadas.

Gateways convergentes

Como elemento convergente, o gateway possui duas ou mais setas de conexão de entrada. Como o nome diz, ele tem o poder de convergir o processo, ou seja, aguardar dois ou mais braços do processo que estão sendo executados em paralelo para então dar sequencia no fluxo. No exemplo abaixo, a atividade C somente iniciará após as atividades A e B concluírem.

Quais atividades que serão aguardadas para a atividade C iniciar dependerá do tipo de gateway utilizado, conforme veremos nos próximos capítulos.

Convergente e divergente ao mesmo tempo

Um mesmo gateway pode ter comportamentos convergentes e divergentes ao mesmo tempo. No exemplo abaixo, o gateway irá esperar a finalização das tarefas A e B para, então, iniciar as tarefas C e D ao mesmo tempo.

Esse tipo de modelagem, entretanto, não é indicado como boa prática, pois pode gerar dúvidas de interpretação em processos muito complexos. O exemplo abaixo traz o mesmo comportamento porém com um desenho muito mais claro. O primeiro gateway tem comportamento convergente e o segundo gateway divergente.

Gateways convergentes e divergentes funcionam juntos

Observe o desenho abaixo, que possui um gateway divergente. Trata-se de um gateway paralelo, que, como veremos nos próximos tópicos, irá acionar as tarefas B, C e D ao mesmo tempo, após finalizada tarefa A.

O problema dessa modelagem é que a tarefa E será acionada 3 vezes. E isso pode ou não pode ser o comportamento que você espera. De fato, uma vez que B, C e D estejam acionadas, cada vez que uma delas terminar, irá acionar a tarefa E. O processo vai começar a rodar múltiplas vezes dentro da mesma solicitação, o que na maioria das vezes é errado.

Para resolver isso, você usa um gateway convergente complementar:

No exemplo acima, o novo gateway convergente irá aguardar B, C e D finalizarem, para só então acionar E.

Em resumo, em geral, você deverá estar atento para criar correspondências entre gateways divergentes e gateways convergentes. Essas correspondências, algumas vezes, podem não ser tão diretas e explícitas como no desenho acima, já que desenhos de processos grandes e complexos podem ter diversas ramificações.

Veja o exemplo abaixo. O gateway divergente G-A-1, logo no início do processo, tem seu correspondente convergente G-A-2 somente no final do processo. O divergente G-B-1 igualmente tem seu correspondente distante no processo, o G-B-2. Somente G-C-1 e G-C-2 estão próximos.

Clique para ampliar

Dica: como veremos no detalhamento do gateway condicional exclusivo, ele não gera execuções em paralelo, na medida em que somente 1 caminho é possível. Por isso, as tarefas G e H nunca existirão ao mesmo tempo. Portanto, o elemento convergente G-C-2 é desnecessário, por não convergir nada. Entretanto, sua existência é bem-vinda, pois torna o desenho mais claro e explícito.

Desenhador de versões anteriores do Zeev

Se você é cliente faz mais tempo do Zeev, deve ter trabalhado com o antigo desenhador de processos. Apesar de, também, ser baseado na notação BPMN, o antigo desenhador e o novo desenhador possuem uma diferença importante no uso de gateways.

No antigo desenhador existiam elementos específicos para representar gateways divergentes e outros elementos para representar gateways convergentes.

No novo desenhador, como vimos antes, o mesmo elemento desempenha simultaneamente o papel de divergente e convergente, seguindo inclusive a notação BPMN correta.

Veja, assim, como ficou a correspondência de gateways entre a versão anterior e a nova:

Elemento
Desenhador antigo
Desenhador novo

Paralelo

Condicional exclusivo

Condicional inclusivo

Aleatório

Não disponível

Conheça os tipos de gateways

Conheça, nos links abaixo, os principais tipos de gateways e suas particularidades:

Gateway paraleloGateway condicional inclusivoGateway condicional exclusivo

E, ainda, temos um tópico especial sobre a montagem de condicionais:

Condições em gateways

Demonstração prática

Confira no vídeo a seguir a demonstração de como utilizar gateways.

Atualizado