BPMN: Modelando corretamente o fluxo de sequência de atividades

Em seis anos de estudo da notação, quatro destes realizando treinamentos na área, uma situação recorrente que percebo na compreensão da notação BPMN está em uma confusão relacionada ao fluxo de sequência de atividades de um processo e o fluxo de mensagens da comunicação do processo com agentes externos.

O fluxo de atividades é desenhado pela sequência das atividades de um processo de negócio. Ele é representado através do conector sequence flow. Este objeto de conexão liga dois elementos de fluxo de processo (eventos, gateways ou atividades). O objeto na origem do conector é a atividade predecessora, e o objeto de destino do conector (para onde a seta aponta) é a atividade sucessora.
Este conector implica no entendimento que a atividade sucessora ocorrerá após a atividade predecessora ser concluída.

BPMN - fluxo de sequencia de atividades (foco) - material de treinamento da iProcess - direitos reservados

Existe uma sequência entre as atividades "Solicitar Cotação de Passagem ou Hotel" e "Avaliar Cotações Recebidas", pois estas atividades estão conectadas por um sequence flow.

O fluxo de mensagens representa a comunicação entre dois processos, ou duas entidades representadas por pools diferentes (já que cada entidade tem o seu processo).  Ele não representa a sequência de ações realizadas pelo processo, mas simplesmente quem envia e quem recebe uma informação relevante naquele ponto do processo. O Fluxo de mensagens é representado através do conector message flow. Este objeto de conexão liga dois elementos do tipo eventos de mensagem ou atividades. O objeto na origem do conector é o remetente e o objeto de destino do conector (para onde a seta aponta) é o destinatário, ou receptor.
Este conector implica no entendimento de que esta comunicação acontece durante a execução da atividade de origem da comunicação.

BPMN - fluxo de mensagens (foco) - material de treinamento da iProcess - direitos reservados

Existe uma comunicação com o agente externo "Agência de Viagens" na atividade "Solicitar Cotação de Passagem ou Hotel" do Processo de Viagem, porque há uma conexão de message flow entre elas.

Você consegue perceber a distinção do que cada um destes fluxos representa?

O que muitas vezes percebo nos modelos que enviam para minha avaliação, é uma confusão na utilização do fluxo de mensagens para representar também a sequência de atividades, o que é incorreto na interpretação de um diagrama BPMN. O diagrama abaixo apresenta um exemplo deste equívoco comum:

BPMN - erro fluxo de sequencia - material de treinamento da iProcess - direitos reservados

O autor do diagrama tentou representar a sequência das atividades do processo através do fluxo de mensagens, o que é inválido para a notação BPMN.

Observe na imagem acima que não está sendo representado o fluxo de sequência de atividades entre as tarefas “Solicitar Cotação de Passagem ou Hotel” e “Avaliar Cotações Recebidas”. O autor tentou representar de forma implícita que a sequência das atividades seguirá ordem representada através do fluxo de mensagens nestas duas atividades. Este entendimento implícito não é válido para a modelagem de um processo aderente à especificação BPMN.

Por quê? Porquê nem sempre o fluxo de atividades de um processo segue o fluxo de mensagens. Além disso, a representação da troca de mensagens de um processo não precisa ser explícita (não é obrigatória) em um diagrama de processo, enquanto o fluxo das atividades é obrigatório sempre que houver dependência entre elas. Portanto, a modelagem correta para o caso apresentado acima é esta:

BPMN - solucao fluxo de sequencia - material de treinamento da iProcess - direitos reservados

Agora sim! A sequência das atividades no processo está sendo representada de forma íntegra. Se o fluxo das mensagens fosse removido (não fosse exibido), ainda assim o diagrama do processo estaria correto.

Os trechos de definições abaixo reforçam o entendimento semântico envolvido na utilização destes dois tipos de conectores (extraídas da Especificação BPMN 2.0, tradução livre desta autora):

  • Sequence Flow: Sequence Flow é usado para demonstrar a ordem em que as Atividades serão executadas em um Processo.” (p. 29)
  • “Se uma Atividade não possui Sequence Flows de entrada, a Atividade será instanciada quando o Processo ou Subprocesso que a contiver for instanciado.” (p.427)
  • “Se uma Atividade não possui Sequence Flows de saída, a Atividade será terminada sem produzir nenhum token e a semântica de término para o contenedor [Processo/Subprocesso] é aplicado” (p.427)
  • Message Flow: Message Flow é usado para mostrar o fluxo de Mensagens entre dois Participantes que estão preparados para recebê-las e enviá-las [representados através de Pools].” (p. 29)

A especificação BPMN 2.0 vai mais além quando realiza uma distinção destes fluxos em diagramas distintos: o de Processo, ou Orquestração (que representa a sequência das atividades do processo de negócio) e os de Colaboração e Conversação (que representam exclusivamente a comunicação entre processos de negócio e outros participantes externos).

Apenas para reforçar a diferença semântica existente entre estes dois elementos de BPMN, veja um outro exemplo em que o fluxo de atividades não poderia ser representado pelo fluxo de mensagens:

BPMN - exemplo de processo de tele-entrega de pizzaria

Exemplo de processo de tele-entrega de pizza (traduzido livremente do modelo "5.2 The Pizza Collaboration" em «1» BPMN 2.0 by Example).

Observe no exemplo acima como não seria possível garantir a compreensão do fluxo de atividades do processo se elas fossem representadas apenas pelos fluxos de mensagem. Além disso, note como os fluxos de cada um dos processos (do cliente e da pizzaria) são independentes um do outro: cada um tem seu evento de início, sua própria sequência de atividades e seu evento de término. É possível ler o flluxo do processo do cliente sem conhecer o processo da pizzaria, assim como é possível ler o fluxo do processo da pizzaria sem conhecer o processo do cliente. Essa independência é fundamental para uma diagramação de processos correta, e este tipo de leitura é um excelente exercício na hora de elaborar seus próprios modelos de processos.

Portanto, ao desenvolver seu modelo, lembre-se de garantir que o fluxo de atividades esteja íntegro. Onde houver dependência de execução entre as atividades do processo, a mesma deve ser representada usando o conector de sequence flow.

 «1» BPMN 2.0 by Example

26 ideias sobre “BPMN: Modelando corretamente o fluxo de sequência de atividades

  1. Gostei muito da explicação, hoje em dia tem Empresas que não separam em seus fluxos de mapeamento o cliente, e apenas os incorporam como parte da atividade.
    Acredito que este tipo de modelagem seja fundamental para entendermos o passo a passo do fluxo e levar ao cliente mais qualidade na prestação do serviço ou na entrega do produto.

  2. Kelly,
    Acho seus post de uma simplicidade impactante.. Claro e objetivo, assim como uma representação grafica de processos deve ser.

  3. Olá Kelly,

    Trabalho com modelagem de processos em BPMN. Me surgiu uma dúvida e gostaria de sua opinião. Quando tenho um processo em que há interação com o cliente, eu incluo o cliente como participante do processo que existe, não como uma figura externa ao proceso. Você acha que o correto é colocar o cliente sempre como externo ao seu processo, ou admite a representação como parte do mesmo processo (uma lane no fluxo do processo)?

  4. Oi Leiliane,
    A notação BPMN não apresenta uma definição para este cenário, deixando a escolha totalmente por conta do estilo de modelagem do profissional que estiver mapeando o processo. Já vi profissionais da área empregarem os dois cenários, e para a notação qualquer deles é uma modelagem válida.
    No livro BPMN Method & Style (1ed.), Bruce Silver apresenta uma abordagem bastante interessante para definir se o cliente ficará fora ou dentro da pool do processo. Ele sugere a seguinte análise: quando modelamos um processo, em geral temos o objetivo de controlar as suas atividades. Controlamos com frequência a duração, custos de recursos, etc na realização das tarefas. Se for interessante medir/controlar as atividades do cliente, então ele é participante do processo – e isto representamos com a lane dentro da pool que contém o processo de negócio. Entretanto, se as atividades do cliente não são objetivo de controle ou mensuração, então represento apenas as interfaces do processo de negócio com o cliente, ou seja os pontos onde ocorre esta comunicação. Neste caso, provavelmente haverá algum papel no processo de negócio que realizará uma ou mais atividades de interface com o cliente (estas sim a serem medidas e controladas). Com isso, o cliente não é mais participante do processo de negócio, mas ainda é participante da comunicação do processo, e portanto deve ser representado em uma pool externa (recomendado inclusive nestes casos uma pool black box, em que as tarefas não são detalhadas). Não é uma regra, mas considero esta uma boa abordagem.

  5. Boa tarde Kelly,

    Obrigado pela sua contribuição. Estou iniciando com BPM e seu blog é bastante útil. Agora, estou com uma dúvida no que diz respeito a quando e como incluir um subprocesso. Por exemplo, estou desenhando um processo de negocio “pré-venda”, onde basicamente tenho a interação do cliente com o vendedor e no meio das atividades tenho atividades realizadas por sistemas de informática.
    Exemplo: Atividade onde o vendedor consulta os dados cadastrais do cliente. Tenho a necessidade de desenhar o processo dos sistemas, pois existe uma integração entre o sistema utilizado para incluir, cadastrar e consultar a pré-venda com um outro sistema (ERP), que gerencia o estoque e o pedido de compra para o fornecedor. Tenho a necessidade de visualizar a interação entre estes sistemas, pois meu objetivo é automatizar os processos entre os sistemas. Será que tem algum exemplo ou dica? Obrigado!!

  6. Oi Wagner!
    Obrigada por sua mensagem. Estou refletindo sobre a necessidade que você descreveu mas entendo que a abordagem a ser utilizada na representação que você quer fazer, da interação dos sistemas, depende de um pouco mais do entendimento do processo. Se estes sistemas são acionados manualmente por um usuário durante uma tarefa humana (como no exemplo em que o vendedor consulta os dados cadastrais do solicitante), então as interações entre esses sistemas não são atividades do processo, mas procedimentos de uma atividade. Em BPMN, os procedimentos de atividades não são diagramados, apenas documentados nos atributos das atividades, ou em uma documentação específica, como um manual. Se você quer explicitar visualmente no diagrama qual sistema é acessado pelo usuário, pode utilizar os elementos de artefatos, como o data store e conectá-lo à tarefa.
    Entretanto, se você tem uma sequência de interações que são orquestradas em um processo, com comunicações entre os sistemas envolvidos, para que uma informação seja gerada, por exemplo, e então oferecida ao usuário em uma atividade seguinte, pode representá-las usando as tarefas de serviço (service task). Nesse caso, elas farão parte da sequência de atividades do processo, mas você pode reuní-las em um subprocesso para criar uma abstração.
    Espero ter contribuído com alguma ajuda para a sua dúvida!

  7. Parabéns pelo site, todas as matérias são claras e estão me ajudando muito. Tenho uma dúvida que vocês já devem ter recebido, mas não encontrei no site. Diz respeito ao relacionamento de um processo com outro processo da cadeia de valor de negócios. Por exemplo: presto um serviço de consultoria e, ao final, preciso liberar o serviço para o faturamento, porém, na modelagem atual, o processo de faturamento pertence a outro processo (outro arquivo BMPN). Na visão EPC, eu represetaria esse envio por meio de “interface” saindo do processo de consultoria e entrando no processo de faturamento. Assim como outras representações no meio do processo (ida e volta). Sei que o BPMN representa o processo fim-a-fim, mas ainda não consigo “quebrar” na minha mente o conceito de interface do EPC e a facilidade de representar as interações. Vocês podem me ajudar? Desde já agradeço.

  8. Ola
    Tenho uma duvida de como representar as interfaces entre os processos. Por exemplo, o processo A (inicial) , sua ultima atividade será o o input para o processo B. Desse modo, queria ao clicar na ultima atividade do processo A que ele abrisse o proximo fluxo de processo cuja atividade é o input.
    E possivel?

  9. ​O​lá Raquel,
    ​Estamos planejando um artigo sobre interfaces entre processos pois esta é uma questão que tem aparecido bastante para nós. Estamos elaborando alguns exemplos, mas o artigo deverá ser publicado em breve :)
    Em relação, especificamente à ação de “clicar e abrir”, na verdade é importante ressaltar que a especificação da notação BPMN descreve apenas os elementos gráficos, seus atributos básicos e a semântica do seu uso. “Clicar e abrir” são funcionalidades que podem ou não perceba que esta é uma funcionalidade da ferramenta que você escolher para desenhar o diagrama. Existem diversas ferramentas de mapeamento de processos no mercado que utilizam a notação BPMN. Portanto, recomendo verificar nas funcionalidades do produto utilizado se ele dispoe deste tipo de recurso.

  10. Pingback: BPMN: demonstrando a continuidade de processos | Blog da iProcess

  11. Pingback: BPMN: Desenhar processos na verdical ou horizontal? | Blog da iProcess

  12. Ótimo tópico !!!!!!
    Hoje , muitos dos analistas de processos confundem sequênciador com mensagem . Explicou perfeitamente !!!

  13. Oi, Kelly,

    Parabéns pelo blog. Muitas dicas em doses homeopáticas!

    Uma dúvida: um par throw/catch de eventos de mensagem é capaz de subverter a ordem de dois subprocessos em sequência (um predecessor e seu sucessor)? Em outras palavras, se um subprocesso predecessor lançar um evento de mensagem intermediário (portanto, antes de ter sido finalizado), este evento será corretamente capturado por um evento inicial (ou mesmo intermediário) de um subprocesso sucessor? isso causaria um paralelismo entre o subprocesso sucessor e as atividades ao final do subprocesso predecessor? (favor postar alguma referência sobre este tópico, caso haja)

    Desde já agradeço!

  14. Olá Nilton,

    Por definição, subprocessos para BPMN são fluxos de processo cuja execução é coordenada por um processo “orquestrador”, que chama o próximo processo quando o antecessor foi finalizado. A notação BPMN esclarece que subprocessos não devem possuir gatilhos, ou seja, os eventos de início e fim de subprocessos devem ser do tipo “none”. Isto porque quem define quando o próximo subprocesso será executado não é uma condição de tempo nem a chegada de uma mensagem: é o processo orquestrador, que identifica que o processo antecessor foi finalizado para então iniciar o sucessor.
    Esta regra, de que não se usam gatilhos em eventos de início de subprocessos, está na especificação oficial da notação – pág 241: Start Events for Sub-Processes:

    “There is only one type of Start Event for Sub-Processes in BPMN (see Figure 10.82): None.”

    e é reforçada neste artigo do Bruce Silver sobre BPMN Rules ( veja a regra 0111).

    Assim, a princípio você nunca terá um subprocesso iniciado por mensagem.

    Se você não usa um processo orquestrador, e optou por fazer a coordenação dos processos através de comunicação, então pode usar mensagens para fazer com que um processo inicie o próximo. Neste caso, sim, é possível usar um evento intermediário ou final de throw message para enviar uma mensagem para o próximo processo, que captura a mensagem através do seu evento de start message. No caso de usar um evento intermediário para lançar a mensagem, o primeiro processo terá continuidade do seu fluxo após o envio da comunicação, com isso fazendo com que os dois processos sigam com execução paralela. Uma vez que o segundo processo foi iniciado, é possível definir outras trocas de mensagens usando throw/catch message entre os eventos para coordenar sua execução, se isto for interessante para os processos de negócio. Esse tema foi discutido no artigo BPMN: demonstrando a continuidade de processos.

    Dei uma procurada por exemplos, e embora o documento BPMN 2.0 By Example tenha vários casos de processos iniciados por mensagens enviadas a partir de outros processos, os diagramas do documento usam tarefas de envio de mensagem para enviar a mensagem a ser capturada pelo outro processo. Na prática, dá na mesma: como discutimos no artigo Desmistificando Tipos de tarefas em BPMN: tarefas de envio e recebimento, os dois tipos de elementos podem servir ao mesmo propósito; a diferença está na herança de características de tarefa ou de evento.

    Espero ter ajudado a esclarecer sua dúvida, me avise se precisar de maior esclarecimento sobre alguma questão.

    Em nome do time da iProcess, agredeço sua visita ao nosso blog!

  15. Boa tarde.

    Gostaria de saber quando posso utilizar duas conexões de sequencia entrando em uma mesma atividade ou quando é necessário utilizar uma gateway para este cenário?

  16. Olá Viviane! Em relação à sua dúvida, não há uma regra que determine quando deve ou não ser usado um gateway antes de tarefas que possam possuir mais de um fluxo de entrada. O que diferencia é o nível de controle.
    A interpretação que deve se dar na leitura de um processo em que não temos o gateway controlando as sequências que levam à tarefa é equivalente ao fluxo exclusivo: qualquer sequência que chegar à tarefa a libera para ser executada. Colocando o gateway antes da tarefa torna explícito o controle sobre os flluxos, determinando se são exclusivos (o primeiro que chegar faz o fluxo seguir para a tarefa), paralelos (todos os fluxos de entrada têm que chegar para dar sequencia à tarefa) ou inclusivos (aguarda um ou mais fluxos ativos criados por uma lógica combinada).
    Em nome da equipe da iProcess, agradecemos sua visita e interação!

  17. Estou muito grato pelo conteúdo, estou tendo contato esse ano com a notação BPMN e os exemplos do blog estão em ajudando muito!

  18. Que bom, Tiago! Em nome do time da iProcess posso dizer que cada feedback como o seu reforça em nós o espírito de seguirmos compartilhando nosso conhecimento com a comunidade de BPM. Desejamos sucesso em seus projetos!

  19. Prezados, tenho uma dúvida na modelagem do processo referente a quando temos uma situação em que a entrada do processo pode ser pelo próprio cliente (que por iniciativa própria entra em contato com as mídias e fica sabendo de um serviço e manifesta interesse por este) ou um parceiro que oferece o serviço e o cliente aceita. Neste caso, como posso representar a entrada do processo com a informação da abordagem de uma empresa parceira e também da iniciativa do próprio cliente? Grata.

  20. Olá Andrea,
    O seu processo continua sendo por um mesmo evento, que é uma comunicação do interesse do cliente, sendo a diferença apenas a origem desta comunicação, que pode ser o cliente ou um parceiro, certo?
    Neste caso, pode seguir modelando um evento único de início do tipo mensagem, e modelar a mensagem vindo de ambas as pools (a do cliente e a do parceiro). Não há problema em representar que a mensgem de início tem duas origens, desde que a mensagem seja a mesma – no caso a comunicação do interesse do cliente.

  21. Olá Kelly, boa tarde.
    Primeiramente gostaria de parabenizar pelo conteúdo do blog, sempre estou acessando como “colinha” e manual no dia a dia.
    Tenho uma dúvida com relação a comunicação/trâmites no meio de um processo.
    Estou realizando uma modelagem onde em um determinado momento um ator (Gerente) poderá cancelar uma ordem de compra e o solicitante deverá ser informado (informação é automática do sistema). Minha dúvida é em como demonstrar na modelagem, é correto eu utilizar um evento de mensagem (catch message) no solicitante descrito, por exemplo, “Cancelamento informado”?

    Obrigado e mande um abraço ao Britto que foi meu professor.

  22. OI Guilherme, acho que a solução que deixaria seu processo mais simples e claro seria após essa atividade do gerente avaliar a ordem de compra, haver um gateway para verificar se ele autorizou ou cancelou, e se cancelar, uma tarefa automática de email para o solicitante.
    Ou esse cancelamento pode acontecer a qualquer momento, mesmo que a tarefa não esteja com o Gerente? Se for esse o caso, acho que será necessário um Subprocesso Eventual iniciado por essa “catch message” do cancelamento, para então enviar o email e finalizar o processo. Isso porque se pode acontecer a qualquer momento do processo, não tem como prever em qual atividade estaria o processo para ocorrer o cancelamento, então seria dificil determinar na borda de qual atividade estaria este “catch messsage”.
    PS. Abraço enviado :]

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>