Blog da iProcess - Compartilhando conhecimento em BPM e RPA

Desmistificando tipos de tarefas em BPMN: Tarefas de envio e recebimento

Este é o terceiro de uma série de três artigos neste blog destinados a esclarecer os tipos de tarefas de BPMN.

Como já comentamos nos artigos anteriores, os comportamentos esperados para cada tipo de elemento da notação estão descritos em uma especificação formal de BPMN (disponível em https://www.omg.org/spec/BPMN/Current). Apesar disto, a identificação dequando usar cada tipo de tarefa ainda é alvo de alguma ambiguidade.

Para facilitar este estudo, estamos tratando os tipos de tarefa de acordo com seu propósito (essa divisão não é oficial):

Então neste artigo, fechamos o estudo dos tipos de tarefas tratando das tarefas de comunicação.

Tarefas de comunicação

Em situações onde a tarefa representa o trabalho de comunicação entre o processo de negócio e agentes ou participantes externos, entram em cena as tarefas de envio e recebimento de mensagens.

Tarefa de envio (send task) e Tarefa de recebimento (receive task)

De acordo com a especificação:

“Uma tarefa de envio (Send Task) é uma tarefa simples cujo propósito é enviar uma mensagem para um Participante externo (relativo ao processo). Uma vez que a mensagem foi enviada, a tarefa é dada como concluída.
O participante a quem a mensagem se destina pode ser identificado conectando-se a tarefa de envio ao Participante (externo) usando message flows.” (pag 157)

“Uma tarefa de recebimento (Receive Task) é uma tarefa simples cujo propósito é aguardar a chegada de uma mensagem proveniente de um Participante externo (relativo ao processo). Uma vez que a mensagem tenha sido recebida, a tarefa é concluída.
O participante de quem a mensagem é recebida pode ser identificado conectando-se a tarefa de recebimento ao Participante (externo) usando message flow.” (pag 159)

 

Na prática, esses tipos de tarefas fazem mais sentido quando modelamos um processo com propósito de automatização, no qual podem ocorrer o envio  a ou recebimento de mensagem proveniente de outro processo ou outra entidade. Por serem tarefas executadas automaticamente (para enviar ou receber informações de outros processos), a atribuição de “quem faz”, “quem recebe” ou “quem envia” não se dá pela lane em que a tarefa está posicionada. A atribuição de “quem faz” é sempre automática, pois o envio é feito pelo sistema, e “quem recebe” e “quem envia” é dado pela interação representada por pools externas e message flows.

O diagrama abaixo apresenta bons exemplos de uso destas tarefas, e foi extraído do documento BPMN by example, que faz parte da documentação oficial da notação.

Processo de Avaliação dos candidatos ao Prêmio Nobel de Medicina

Como podemos identificar neste exemplo, o remetente (quem envia) e o destinatário (quem recebe) de cada mensagem são explicitados através da representação dos conectores de message flow.

A especificação já deixa claro que a interação acontece com um “participante externo” – portanto não se trata de enviar email a quem está participando diretamente do processo. Em BPMN, participante externo é aquele que não faz parte da pool em que o processo está executando.

 

E agora: quando devo usar tarefas de envio e recebimento ou eventos de mensagem?

Garanto que essa dúvida veio à mente de ao menos 80% dos leitores que já conhecem a notação.

A verdade é que estes tipos de tarefas são equivalentes aos eventos de envio e recebimento de mensagens (message events), e sua diferenciação se dá apenas pelas características de natureza de cada tipo de elemento: utilizando tarefas podemos tê-las ocorrendo em repetição e multi-instância, além de podermos anexar eventos à borda – o que não é possível com eventos. Por outro lado, a utilização de eventos para receber as mensagens permitem gerenciar fluxos através de controles como o uso do gateway baseado em eventos, o que não seria possível com o uso de atividades.

Para conhecer mais sobre eventos de comunicação, leia o artigo: Diferenças entre Eventos de Link, Message e Signal.

E para conhecer a dinâmica dos gateways baseados em eventos, veja o artigo Modelando de Processsos em BPMN com elementos avançados parte 3: Gateways.


Aprenda a dominar a notação BPMN utilizando as melhores práticas com nossos instrutores, em um curso repleto de exercícios e um laboratório prático de modelagem de um processo de negócio de ponta a ponta!
Confira já a agenda de cursos da iProcess Education e inscreva-se:
www.iprocesseducation.com.br/ipe04

14 Responses

  1. Olá Kelly!
    Primeiro agradecendo a sequencia de artigos sobre as tarefas, ajudaram bastante nessas ambiguidades comentadas por você, que é o meu caso.

    Uma dúvida:
    – uma tarefa de envio mensagem não obriga o processo necessariamente ter uma tarefa de recebimento dessa mensagem? Ou isso seria uma situação que depende da regra de cada empresa?

    Muito obrigado!

  2. Olá Stefan, obrigada por seu comentário.
    Não existe nenhuma definição por parte da notação sobre obrigatoriedade de ter uma tarefa ou evento de recebimento de mensagem na sequência de um envio, pois esta situação é uma questão definida pela lógica do próprio processo.

    A especificação BPMN deixa essas ligações o mais livres possíveis justamente para possibilitar que ela represente cenários de qualquer tipo. Afinal, podem haver casos de processos cujo envio de mensagem não requer uma resposta (nem síncrona nem assíncrona). Por exemplo: qualquer processo que em uma determinada atividade envie informações para simples conhecimento (um extrato de cartão que é enviado periodicamente pelo correio ao cliente, por exemplo) poderia ser uma situação que não requer o mapeamento de uma “resposta”.

  3. Olá Kelly,

    Estou em duvida em desenhar um processo onde tenho dois pool , um cliente e outro serviço. Toda chamada do cliente o serviço vai retornar um message do serviço como sucesso ou insucesso (pois no pool serviço existem várias validações) .Minha duvida como represento o retorno de mensagem no pool de serviço como Tarefa de Envio ou Evento de Mensagem.

    Pode me ajudar. Obrigado.

    1. Olá Paulo,
      Qualquer das duas representações estará correta, porque ambos os tipos de elementos representam comunicação do processo com outros processos (no caso estas outras pools). Você pode receber a comunicação através de uma tarefa de recebimento ou através de um evento de captura de mensagem. A tarefa tem características mais de trabalho (por exemplo a mensagem precisa ser interpretada por alguém), fora isso ambas servem da mesma forma. Se você está modelando um processo que será automatizado em algum BPMS, precisa verificar no manual do produto ou em algum forum do fabricante qual o tipo de elemento que ele recomenda.

  4. Olá, boa tarde. Gostaria de uma ajuda! Já procurei em diversos sites e livros e continuo com a seguinte dúvida.

    Tenho um processo no qual é enviado uma mensagem para um participante interno do processo.

    No caso a pool representa a empresa, e as lanes os setores da empresa.

    Eu envio um e-mail do setor A para o Setor B, tudo dentro de uma mesma pool. Como poderia representar isso pela notação, pois em todos os locais que leio vejo que as atividades/eventos de mensagens são utilizados com atores externos (pools diferentes).

  5. Bom dia!

    Em relação a essa parte do BLOG, reproduzida abaixo:

    De acordo com a especificação:

    “Uma tarefa de envio (Send Task) é uma tarefa simples cujo propósito é enviar uma mensagem para um Participante externo (relativo ao processo). Uma vez que a mensagem foi enviada, a tarefa é dada como concluída.
    O participante a quem a mensagem se destina pode ser identificado conectando-se a tarefa de envio ao Participante (externo) usando message flows.” (pag 157)

    “Uma tarefa de recebimento (Receive Task) é uma tarefa simples cujo propósito é aguardar a chegada de uma mensagem proveniente de um Participante externo (relativo ao processo). Uma vez que a mensagem tenha sido recebida, a tarefa é concluída.
    O participante de quem a mensagem é recebida pode ser identificado conectando-se a tarefa de recebimento ao Participante (externo) usando message flow.” (pag 159)

    leva-nos a entender que as tarefas de envio e recebimento de mensagens somente são utilizadas para comunicação com participantes externos. O mesmo comentário já vi relacionado ao uso de eventos intermediários de envio ou recebimento de mensagens, que se aplicam no contexto de comunicação de um participante do processo com um participante externo (de outro processo). Caso seja assim, como faço para representar a comunicação de troca de mensagens (envio e recebimento de mensagem) entre participantes do mesmo processo ou entre raias da mesma piscina? Qual a forma de representar?

    1. Sim, André, você tem o entendimento correto. O envio de mensagem (independente se por evento ou por tarefa) representa uma comunicação com outro processo.
      A comunicação entre recursos do próprio processo (na transferência do processo para o próximo participante) não precisa ser modelada, pois está implícita no próprio fluxo.
      Entretanto, se você quer representar que um participante receberá uma notificação (por exemplo um e-mail), recomendo dar uma conferida neste artigo: Respondendo a dúvidas: como representar email, planilha ou sistema em BPMN?.

  6. Olá Kelly, estou fazendo um modelo conceitual de uma linha de produção. O modelo é grande, porém simples, sendo uma linha contínua.

    A minha dúvida é, eu tenho por exemplo a o processo “montagem peça X”, e antes dessa montagem o operador realiza a leitura de uma etiqueta colada na peça, informando ao sistema (outro pool) que aquela peça foi montada. Eu só quero adicionar ao fluxograma o envio da mensagem/sinal ao sistema.

    Eu criei um pool pro processo e um pro sistema, porém não consigo realizar esse envio de mensagem. Qual a forma correta de fazer isso? O modelo tem cunho ilustrativo, não precisaria rodar.

    Agradeço a atenção desde já!

    1. Olá Philipp, a sua abordagem parece excelente, pois possibilita separar o fluxo do trabalho das interações sistêmicas. Você deveria poder adicionar transições de fluxo de mensagem entre uma atividade de uma pool com a borda ou atividade de outra pool, pois é assim mesmo que acontece a comunicação etre os fluxos. Você está usando o elemento correto para envio/recebimento? É preciso também avaliar se a ferramenta que você está usando não apresenta algum tipo de limitação (nem sempre elas utilizam a notação BPMN completa).

  7. Bom dia, muito bom os artigos de vocês !!!
    É ótimo ter um material de grande riqueza disponível para consulta, vocês são maravilhosos !!!
    Espero ainda ter esta bagagem de conhecimento de vocês, para complementar a riqueza de materiais…
    Gostaria de compartilhar uma dúvida, em um processo de negócio todas as tarefas sejam manuais, em algum momento exista uma interação com um agente externo ao processo, a representação deve ser de envio e recebimento de mensagem, ou posso representar da seguinte forma, fazendo com que a tarefa manual envie para agente externo ele trate e devolva….
    Isso é correto?!

  8. Olá kelly, tudo bom?
    Primeiramente, muito obrigada pelos artigos.
    Tenho uma dúvida:
    Tem-se um pool com 3 lanes. Nela contém o solicitante (lane) que encaminha para o Gestor imediato (lane), em seguida, vai para outra (lane) que ao finalizar precisa disparar uma tarefa de envio. Isso pode ocorrer, sendo no mesmo pool? Vi apenas externo.

    1. Olá Nubia, a aplicação desse elemento pode ser diferente dependendo de como esse processo é executado (manual ou em um workflow automatizado).
      Conceitualmente a tarefa de envio tem como propósito enviar uma mensagem para que outro processo (por exemplo um participante externo, como um cliente ou fornecedor, ou então um processo de uma outra área) receba informações sobre o processo em execução e com esses dados possa tomar providências (executando um fluxo de atividades) ou mesmo para simples conhecimento. Não quer dizer que não possa ser para os mesmos participantes do processo atual (afinal as pessoas podem participar de mais de um processo na organização).

      Se o seu processo é automatizado em um BPMS, use o recurso de envio de mensagem conforme existe no produto.
      Se seu processo não é automatizado, mas você está desenhando o fluxo para entendimento das pessoas envolvidas, recomendo simplesmente não tipificar o elemento (para evitar esses debates sobre aplicação purista x aplicação prática da notação).

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)
Essa é a sua chance de participar do nosso curso de BPMN! Estamos ansiosos para... (continuar lendo)
Qual a diferença entre automação, robotização e inteligência artificial? Em algumas situações esses termos são... (continuar lendo)

Inscreva-se na nossa Newsletter

seers cmp badge