BPMN: Modelando processos de negócio com elementos avançados (Parte I)

A notação BPMN (Business Process Model and Notation), atualmente na versão 2.0, reúne um conjunto de elementos intuitivos e robustos, que auxiliam usuários técnicos e de negócio na documentação de seus processos em diferentes níveis de detalhes, de maneira que possam mapear, de maneira padrão, todos os processos de negócios de sua organização.

A lista de elementos gráficos de BPMN apresenta desde elementos essenciais para a modelagem dos processos, utilizados em uma documentação simples, até elementos avançados, requeridos para desenhar modelos de processos complexos.

Dedicaremos os artigos semanais de janeiro para contribuir com o estudo dos elementos avançados, requeridos para a compreensão de uma modelagem complexa.

Marcadores de Atividades

Abordaremos neste primeiro artigo os marcadores de atividades, conhecidos também como atributos especiais.

Os marcadores de atividades ou atributos especiais tem o objetivo de indicar o comportamento específico de uma atividade durante sua execução.

Marcadores de Atividades

Marcadores de Atividades

No artigo “Um guia para iniciar estudos em BPMN”, vimos que atividades (activities) representam um trabalho realizado em uma etapa do processo de negócio e podem ser do tipo “Tarefa” (task) ou “Subprocesso” (subprocess).

Subprocesso

Um subprocesso representa um conjunto de atividades realizadas dentro de um processo de negócio. São representados graficamente de duas formas, contraído ou expandido.

A Imagem acima demostra o subprocesso contraído (collapsed), representado pelo símbolo “+” indicando a existência de outro nível de detalhe, que pode ser expandido (expanded).

Subprocesso contraído

subprocesso contraído

Subprocesso contraído (Busca de informações): No exemplo acima o processo inicia-se com a execução da tarefa de solicitação de reembolso, após sua execução o fluxo segue dando início ao subprocesso que buscará as informações das despesas. Após a análise destas informações, o subprocesso é finalizado voltando ao fluxo do processo principal da solicitação de reembolso e partindo para a tarefa da aprovação do gestor.

Subprocesso Expandido

O mesmo subprocesso pode ser representado de forma expandida (expanded), apresentando o seu conjunto de detalhes no próprio processo “pai”.

Subprocesso Expandido

Exemplo de subprocesso expandido: O mesmo fluxo do subprocesso contraído é executado, porém o subprocesso de busca de informações apresenta o detalhamento de suas atividades visíveis no processo “pai”.

Atenção: O fluxo do processo “pai” não pode atravessar de forma alguma a fronteira do subprocesso.

subprocesso Expandido fronteira atravessada

Uma regra importante no BPMN é que um subprocesso nunca pode ter sua fronteira cruzada pelo fluxo de sequência. O fluxo de sequência apresenta a ordem de execuções das atividades em um processo e nunca entre processos. Os fluxos de sequência de entrada e saída devem ser ligados no limite do subprocesso (sua borda), e não deve iniciar e terminar os eventos no nível de expansão dentro do retângulo arredondado (subprocesso expandido), conforme mostra a figura acima.

Loop – Atividade cíclica

Representado por uma linha circular com seta (conforme imagem abaixo), atributo em atividades que simula a operação “do-while”, uma atividade pode ser executada várias vezes em ciclo.

Utilizada quando o número de repetições não é conhecido;
A atividade de repetição será repetida enquanto a condição do loop for atendida.

Loop

Loop – Atividade cíclica

Uma atividade de loop terá uma expressão booleana que é avaliada para cada ciclo. Se a expressão for verdadeira, então irá continuar. O loop irá avaliar a expressão após a realização da atividade, isto significa que atividade será realizada pelo menos uma vez.

Loop subprocesso

No exemplo acima, o subprocesso “Seleção de Candidato” avalia candidatos a serem selecionados para entrevista. A expressão booleana para este loop poderia ser “O candidato não passou na seleção?” se a resposta for “verdadeira” então a atividade será realizada novamente e se for “falsa” o processo seguirá seu fluxo.

Em nosso próximo artigo:
Continuaremos o estudo sobre os Marcadores de Atividades, iniciado neste primeiro artigo.


Confira todos os artigos deste guia de BPMN: Modelando processos de negócio com elementos avançados:

20 ideias sobre “BPMN: Modelando processos de negócio com elementos avançados (Parte I)

  1. Senhores,

    Tenho achado o material de vocês muito interessante, mas gostaria que me tirassem uma dúvida se possível, geralmente temos conectores de fluxo de uma pagina para outra, mas eu queria saber qual seria o conector para demonstrar que em fluxo de atividade de um processo “Y” que a partir de uma determinada atividade deste processo iremos para o fluxo do Processo “X” e depois virá do Fluxo do processo “X” e continuará e finalizaremos o processo “Y”.

  2. Usando o processo “Contratação de Colaborador” do exemplo acima, vemos um subprocesso expandido “Seleção de Candidato” com o atributo “Repetição em loop” para tratar cada candidato de uma lista de candidatos que enviaram currículo e teste de raciocínio e lógica, ou seja que as tarefas do subprocesso expandido “Seleção de Candidato” serão aplicadas para cada candidato.
    Da forma como está a atividade “Entrevistar candidatos” parece que todos os candidatos selecionados para entrevista participarão juntos numa única entrevista.
    Caso fôssemos ter uma entrevista com cada candidato individualmente, a atividade “Entrevistar candidatos” seria renomeada “Entrevistar candidato” (singular)
    e ela teria o atributo “Repetição em loop” para realizá-la para cada candidato da lista de candidatos selecionados para entrevista, e ao final, no gateway “Resultado da entrevista” seria escolhido um único candidato para ser contratado.
    Meu raciocínio está correto?

    • Olá Alexandre, sim, seu raciocínio está correto.
      No caso modelado, a tarefa de entrevistar é única mas não está detalhado no diagrama como ela é realizada. Se tivéssemos o detalhamento, poderia estar previsto diferentes formas de executá-la, como a) que ele agendaria uma entrevista única com todos os candidatos ou b) que ele agendaria e faria as entrevistas separadamente mas só daria terminada a tarefa quando após realizar todas as entrevistas saísse com algum contratado (ou não, quem roteia isso é o gateway seguinte).
      No caso sugerido por você, teríamos esse cenário de entrevistas separadas com cada candidato mais explícita (oque eu diria que é uma boa prática).

  3. Boa tarde senhores,
    Obrigado mais uma vez por disponibilizar este rico material.

    Gostaria de saber como representar o loop do último exemplo, na qual aparentemente temos uma caixa e dentro dela a um processo.

    Isto está disponível no Bizagi?

    Abs

    • Olá Henrique,
      Sim, para incluir este marcador em qualquer atividade (seja tarefa ou subprocesso) no Bizagi, você deve acionar o menu do elemento (clique sobre ele com o botão direito do mouse) e escolher a opção “Tipo de loop / Padrão”.

  4. Bom dia, Kelly. Parabéns pelos artigos. Tenho uma dúvida sobre comunicação de subprocessos. Se o fragmento do fluxo que eu desejo condensar em um subprocesso possuir uma comunicação com uma outra pool, como fica a representação na forma expandida. Imagino que as setas pontilhadas devem ser apontadas na borda do subprocesso. Mas como represento o ponto do processo que gera esta comunicação? Na falta de um modelo para ter como base, tenho utilizado os eventos de mensagem.

    • Watabe, a especificação oficial não traz muitos exemplos sobre isso, mas entendemos que se você tem o subprocesso expandido, pode sim mapear as mensagens entrando e saindo diretamente nos elementos em que estas mensagens são emitidas ou recebidas. No documento BPMN 2.0 By Examples (documento não normativo criado pelo grupo de trabalho responsável pela notação BPMN 2.0, disponível em http://www.omg.org/cgi-bin/doc?dtc/10-06-02.pdf) há um exemplo na página 36 que exemplifica isto: 12 – Email Voting Example. Veja que as mensagens provenientes das pools black box com a qual ocorre a comunicação no processo são conectadas aos eventos de envio/recebimento de mensagens.
      Se você está fazendo assim, então está fazendo certo =)
      PS – algumas ferramentas (como o Bizagi, por exemplo) não implementam este recurso e a conexão vai so até a borda do subprocesso, independente dele estar contraído ou expandido. Isto também é correto na especificação, mas neste caso não ficam claros os pontos que enviam/recebem cada mensagem dentro do processo subprocesso.

  5. Primeiramente parabéns pelo material, surgiu uma duvida quando estou em um processo e insiro a ferramenta de ‘subprocesso’ e peço para editá-la não aparece os swimlanes no local, isso é normal no Bizagi?

    • Sim, este é o comportamento do BPMN também porque o elemento que você adicionou é um subprocesso incorporado (embedded). Para criar pool e lanes dentro do subprocesso, você precisa transformá-lo em um subprocesso reusável (reusable).
      Para isso: inclua um elemento de subprocesso no diagrama, clique com o botão direito nele para abrir o menu de contexto, e selecione “tipo de subprocesso > Reusable Sub-Process”. Você deve notar que a borda do subprocesso vai mudar e se tornar um pouco mais espessa. Se editá-lo agora, poderá incluir pool e lanes.
      A principal diferença entre estes dois subprocessos é esta: o subprocesso incorporado presume que todas as tarefas dentro dele são de responsabilidade da lane em que o subprocesso está inserido no processo principal. Jà o subprocesso reusável permite definir uma estrutura mais complexa, como um processo inteiro que pode ser chamado por diferentes processos.

  6. Bom dia, Kelly… excelente material. Este e outros aqui postados.
    Tenho uma dúvida. Existe um limite de subprocessos que podemos criar, o visual fica mais clean desta forma, por isto a dúvida.

    • Oi Michele, não há nenhuma regra de limitação. Neste caso vai mais do bom senso de não quebrar demais o processo em múltiplos níveis, o que poderia dificultar a sua leitura ponta a ponta.

  7. Gostaria de saber como diferenciar um subprocesso de loop e um de múltiplas instâncias. Vocês podem ajudar? Não estou conseguindo discernir a diferença entre eles.

    • Olá Camila, segue a dica:
      Esses marcadores servem tanto para subprocessos quanto para tarefas, então vou chamar aqui de “atividade”:
      Atividade com loop (aquele com um símbolo redondo que parece voltar para o mesmo ponto) implica um conceito de “do-while”, ou seja, a atividade (subprocesso ou tarefa) se repete até que uma condição se torne verdadeira. Por exemplo: se repete para uma aprovação, subindo numa escala de aprovadores até que o valor da compra a ser aprovada seja igual ou menor à alçada do aprovador. Neste momento, o ciclo se interrompe e o processo segue o fluxo.
      Atividade com múltiplas instâncias (aquele com símbolo de três tracinhos): a lista que determina quantas instâncias serão executadas já é conhecida quando o subprocesso começa. Por exemplo, em um processo de requisição de materiais que tem compras de diferentes tipos, gerando “N” ordens de compra que precisam, cada uma, ser orçada e aprovada separadamente. É possível criar um subprocesso de ordem de compra do tipo múltiplo, cujo fator de quantas instâncias serão executadas é o número de OCs geradas a partir da requisição. Assim, podemos ter uma requisição que gere apenas 1 Ordem de Compra, enquanto outras requisições podem gerar múltiplas OCs, cada uma executando seu fluxo com o subprocesso de múltipla instância. É importante observar que o marcador de atividade com múltipla instância pode ser três tracinhos verticais ou horizontais. Os traços verticais indicam que as atividades múltiplas serão executadas paralelamente, enquanto os horizontais indicam que serão em sequência (o segundo só começa depois do primeiro terminar e assim por diante).

  8. Olá, tenho duas dúvidas referentes ao subprocesso do tipo loop…

    1ª – Quando inicio um subprocesso desse tipo geralmente utilizo um gateway para decidir se entro ou não no subprocesso, porém vi que este tipo de subprocesso apresenta em suas propriedades uma condição de uso, esta condição pode substituir o gateway de decisão? Se sim, poderia exemplificar?

    2ª – Se eu tenho uma atividade que segue logo após a conclusão de um subprocesso do tipo loop, mas, dependendo do caminho seguido no loop, eu posso seguir para outra atividade… Nesse caso eu deveria utilizar um gateway de decisão após o subprocesso ou eu tenho alguma outra opção utilizada nas propriedades do subprocesso loop.

    • Oi Wandrieli,
      para sua 1a questão: o loop em atividades (pode ser um subprocesso ou uma subtarefa) tem a semântica “repita enquanto uma condição for verdadeira”. Isso quer dizer que ele vai executar aquela atividade uma vez, e ao concluir, antes de ir adiante, vai verificar se a condição de loop é verdadeira e se aquela atividade precisa ser repetida novamente. Portanto, se existe a possibilidade deste seu subprocesso não ser executado nenhuma vez, o melhor é ter um gateway antes.
      para a sua 2a questão: a regra para o loop serve apenas para definir a condição de quantas vezes a tarefa em loop vai se repetir. Se você precisa executar atividades diferentes de acordo com o resultado da atividade, então precisará sim de um gateway para dividir esses fluxos.
      Espero ter ajudado!

  9. Olá Fabiano, primeiramente gostaria de dizer que acompanho o blog e seus posts, parabéns estão me ajudando muito, estou começando na modelagem mas já me ajudaram bastante. Bom, minha dúvida é sobre o uso dos marcadores, se posso utilizar em um mesma representação (atividade) mais de um marcador… tenho necessidade de representar um processo de atendimento ao público onde realizo várias atividades sem sequência definida e que ocorrem diversas vezes ao dia. Pensei em representar com loop e ad hoc, pode? procurei na especificação da OMG mas não entendi nada. Obrigado e se possível gostaria de saber sobre seus cursos de BPMN que foram muito bem recomendados em SP. Valeu fera.

    • Olá Rafael,
      Sim, você pode marcar essa atividade como ad hoc (em que suas tarefas não possuem uma ordem predefinida) e também com loop (repetição do conjunto).
      Estes dois tipos de marcadores não concorrem entre si pois definem atributos diferentes da atividade.
      Em nome de todo o time da iProcess agradeço sua visita e participação!

  10. Gostaria de saber se um subprocesso pode ter dentro dele uma piscina e raias. Estou fazendo um fluxo que preciso definir papeis de participação em tarefas e eventos dentro de um subprocesso. Se houve outra forma de representar isso também estou disposta a saber. Grata desde já.

    • Olá Cíntia,
      Sim, um subprocesso pode ter dentro dele uma piscina e raias, mas para isso você precisará transformar o subprocesso em um subprocesso do tipo Reusável (reusable). Na prática é a mesma coisa que um subprocesso incorporado (embedded), que é o que as ferramentas costumam criar como padrão, com algumas vantagens como a possibilidade de incluir swimlanes e também fazer referência a ele em mais de um ponto do diagrama (repetir a execução desse subprocesso).
      Se você está usando o bizagi, isso é muito simples: coloque um elemento de subprocesso no seu diagrama, clique com o botão direito sobre ele e escolha a opção “Tipo de Subprocesso > Reusable Sub-Process“. Você notará que a borda dele ficará um pouco mais larga. Para editá-lo, você pode fazer como já costuma fazer com seus subprocessos.
      Se estiver utilizando outro editor de BPMN, é preciso verificar como transformar um subprocesso incorporado em reusável.

Deixe uma resposta

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