Blog da iProcess - Compartilhando conhecimento em BPM e RPA

BPMN: Use o evento de link com inteligência

Os eventos de link são coringas na notação BPMN ajudam a criar modelos de processos limpos e claros, porém precisam ser usados com cuidado ou o risco de dificultar ainda mais o entendimento torna-se uma realidade. Confira neste artigo algumas dicas para usá-lo com inteligência.

Se você foi jovem nos anos 90, certamente jogou esse jogo aqui:

Você se lembra de jogar Detetive, o clássico jogo de tabuleiro da Estrela nos anos 90?

Era assim que a gente declarava a tentativa de acertar o que era confidencial: quem era o criminoso, em que aposento da mansão aconteceu o crime e que objeto foi usado como arma. A dinâmica desse jogo consiste em jogar os dados e ir andando pelos corredores até chegar a algum aposento do tabuleiro para então poder fazer a sua acusação. O detalhe deste jogo (na versão dos anos 90) era que entre alguns aposentos havia uma “passagem secreta”, que seria uma forma de passar “por baixo do tabuleiro”. Assim, com apenas um movimento, era possível atravessar para o outro lado, pulando, por exemplo, da Sala de Música para a Sala de Estar.

Você lembra disso?

Eventos de Link: a passagem secreta dos diagramas BPMN

Os eventos de link na notação BPMN tem uma função parecida nos diagramas de fluxos de processos. Ele permite criar uma “passagem secreta por baixo do diagrama” para que um fluxo de processo possa prosseguir em alguma outra ponta ou outra raia, evitando mapear longos fluxos de sequência entre elementos que estejam distantes.

No exemplo, os eventos de link com o mesmo nome conectam “virtualmente” pontos distantes do processo, fazendo com que após a atividade ‘Verificar condições de férias’ o processo siga em sua execução, iniciando a atividade ‘Avaliar solicitação de férias’. Com isso, a sobreposição de sequence flows foi evitada, deixando o processo mais legível.

A diferença entre o evento de link de BPMN e a passagem secreta do jogo Detetive é que no BPMN o caminho é sempre unidirecional – partindo do evento de envio de link (send link event) para continuar no evento de recebimento de link (receive link event).

Regras do evento de Link

(Para entender melhor a diferença entre esses dois tipos de evento. Confira o artigo BPMN: Diferenças entre eventos de Link, Message e Signal)

1. Existe uma outra exceção, que é o evento intermediário de compensação (compensation event), mas ele é tão específico que raramente é lembrado.

Boas práticas (e outras péssimas) de uso do evento de Link em BPMN

Dê nomes (e não números ou letras) aos links

Usar códigos como números ou letras para identificar o par de links geralmente dificulta a interpretação do processo pelo leitor. Por exemplo, se você usar "A", quem lê terá que percorrer com os olhos todo o diagrama na tela para achar onde está a outra ponta "A" e só então seguir o fluxo e entender o que é que acontece no resto do fluxo. Use nomes que possam dar "spoilers" sobre as próximas atividades do processo. Este simples cuidado ajudará em muito e leitura do diagrama por outras pessoas. Por exemplo: nomear os pares de link com algo como "segue negociação", permite ao leitor não apenas entender que o processo continua em um outro lugar, mas também o que acontecerá na sequência (veja como é fácil perceber isso no exemplo do processo de solicitação de férias acima). Ou "retoma reserva", ajuda a entender que o processo vai voltar para uma etapa onde estava sendo feita uma reserva.

Use comedidamente

Usar um par de links no diagrama pode ser útil. Dois é aceitável. Mas se você começar a usar muitos links, a pessoa que for interpretar o seu processo passará tanto tempo tentando encontrar a outra ponta do processo no meio de tantos links que pode acabar esquecendo qual dos fluxos estava seguindo.

Não fatie o processo através de links

Usar muitos links pode acabar levando a outra consequência negativa no diagrama: você pode acabar modelando um processo totalmente desmembrado, dificultando ver o que é mais importante: o fluxo de trabalho executado para entregar o resultado do processo. Veja um caso (real e estremo) no exemplo abaixo:

Excesso de eventos de link pode deixar o processo difícil de interpretar e completamente desconectado (este exemplo foi enviado por um leitor do blog mas teve os nomes das tarefas e gateways alterados para preservar a identidade da empresa).

O mesmo processo, porém conectado adequadamente, revela a sua lógica e facilita visualizar o começo, meio e fim.

Aproveite as dicas e boa modelagem!

13 respostas

  1. Olá,
    esse blog é maravilhoso. Parabéns Kelly. Sempre busco informações aqui.
    Existe uma boa prática de não utilizar evento link entre Pools? Por exemplo, interação com fornecedor externo.

    1. Oi Suzana, que bom que nosso blog está te apoiando!
      Olha, eventos de links não podem ser usados para conectar fluxos em pools (piscinas) diferentes. Não é nem uma questão de boa prática, é regra mesmo. Tá lá na especificação. È que o link é uma abstração de um fluxo de sequência entre duas atividades de um processo. E pools (piscinas) são usadas para organizar processos diferentes que se comunicam, logo se são processos diferentes cada um tem o seu próprio fluxo de sequência.
      Para sincronizar o que acontece entre processos de duas pools diferentes, você precisa usar o conector de fluxo de mensagem (aquele tracejado), e ele não é usado em eventos de links, apenas eventos do tipo mensagem (se você tentar no bizagi, vai ver que ele nem deixa conectar, porque não tem como enviar nem receber mensagem de um evento de link de sequência).
      A dica para entender as diferenças é o artigo já comentado acima, mas que deixo aqui também: BPMN: Diferenças entre eventos de Link, Message e Signal.

    1. Olá Aline. Semanticamente falando ele é um modelo válido, porém não é uma prática recomendada pois como o artigo discute, ao fatiar o processo dessa forma você perde a visão essencial de como as atividades contribuem umas às outras na geração de valor do processo. É muito mais difícil de ler e pode acabar levando a outros erros – por exemplo usar um gateway exclusivo em uma raia dividindo o processo e juntar em outra com tipo de gateway indevido ou deixar pontas soltas. Ou ainda, gerar loops infinitos no processo.

  2. Se eu não posso ligar links entre piscinas como faço pra representar isso, caso a situação peça isso? Por exemplo um looping que acaba no fim de uma piscina e retorna no começo de outra.

    1. Olá Fábio. Piscinas são usadas para representar processos diferentes. A ligação entre processos acontece sempre por eventos do tipo mensagem (message event). Portanto, você deve modelar isso usando um evento de fim por mensagem em uma e evento de início por mensagem na outra. Lembre-se de usar o mesmo nome para o evento nas duas piscinas, para esclarecer que a mensagem enviada no fim do processo é o que inicia o outro processo.

  3. Olá! Estou com um problema.
    Eu tenho atividade dentro de um subprocesso que pode acontecer após uma atividade do processo principal. Se fosse tudo no principal, eu usaria link por estarem em lugares diferentes e longe, mas entre processo e subprocesso o Link dá erro.
    Alguma sugestão de como contornar isso?

    1. Precisaria compreender um pouco mais o que é o cenário que você está modelando para dar uma resposta mais assertiva, mas se entendi direito você tem: um subprocesso que precisa ficar parado até que algo aconteça no processo principal, para então executar uma próxima atividade. É isso? Se for esse o caso, talvez um evento de sinal possa ser mais adequado. Assim, ao chegar no ponto de “liberação”, o processo pai emite um sinal, que seria aguardado no ponto anterior à tarefa, retomando a execução do processo quando o sinal for ativado.
      Espero que essa ideia possa resolver a sua questão :)

  4. Uma dúvida. Tenho um subprocesso “A” que termina com um gateway exclusivo com duas opções de fluxo: uma opção do fluxo é um término, e a outra vai para o subprocesso “B”. Por causa disso fiquei sem saber que elemento colocar no final desse último fluxo. Tentei colocar um link de lançamento para um link dentro do subprocesso “B”. Mas na validação não aceita. Qual seria a sugestão?

    1. Estou tentando “desenhar” o seu processo aqui :)
      Vamos ver se entendi: você tem um processo “P” que tem um fluxo em que uma atividade (subprocesso A) é executada e quando ela termina, tem uma regra que, dependendo do resultado dessa atividade, pode ou não executar o subprocesso B.
      Se essa for a leitura, então a modelagem mais adequada seria, no processo P, após o subprocesso A, você incluir um gateway testando o resultado dessa atividade, e então levar para o subprocesso B, quando for o caso. Essa minha explicação seria para uma modelagem do tipo “orquestração”. Nessa visão, o processo P estaria orquestrando a execução das duas atividades (no caso, os subprocessos).

      Dê uma olhada nesse artigo, acho que pode ajudar a esclarecer:
      https://blog.iprocess.com.br/2013/04/bpmn-demonstrando-a-continuidade-de-processos/

      Se preferir, o conteúdo desse artigo é explicado nesse webinar, com bons exemplos:
      https://blog.iprocess.com.br/2015/09/webinares-iprocess-2015-bpmn-modelando-a-comunicacao-entre-processos/

  5. Olá! Saberia informar se quando clico no gateway de link a “página” corre automaticamente para o link destino?
    Tentei fazer o teste, mas ele somente marcou o link destino, precisei rolar o fluxo para identificar onde estava marcado.

    1. Olá Natália, isso não depende da notação (conjunto de símbolos) e sim da ferramenta que você está utilizando para modelar o processo. Pode ser que algum editor BPMN tenha essa funcionalidade. Entretanto, das ferramentas que utilizamos até o momento, não conhecemos nenhuma que tenha esse recurso. Seria algo bem interessante, né?
      Em alguns casos (por exemplo no visio) eu acho que você pode criar explicitamente um link apontando para uma âncora em uma página de um documento de processo, mas não é uma característica do evento do tipo link, e sim uma funcionalidade do editor que pode ser utilizado em qualquer elemento do seu diagrama. Quanto a outros editores, seria necessário verificar se existe algo parecido.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

MAIS VISTOS

Torne-se um líder em iniciativas em RPA, a próxima turma inicia em agosto!... (continuar lendo)
Participe deste evento exclusive e gratuIto e se prepare para as transformações que IA irá... (continuar lendo)
Veja agora as ações que foram realizadas através das doações de todos os participantes deste... (continuar lendo)

Inscreva-se na nossa Newsletter

seers cmp badge