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 http://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

6 ideias sobre “Desmistificando tipos de tarefas em BPMN: Tarefas de envio e recebimento

  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.

  4. 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.

  5. 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).

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>