Blog da iProcess - Compartilhando conhecimento em BPM e RPA

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

Este é o segundo artigo de uma série dedicada ao estudo de elementos avançados de BPMN.

No artigo anterior iniciamos o estudo dos marcadores de atividades, vimos que cada marcador tem uma função específica que determina o comportamento de uma atividade durante sua execução. Neste artigo daremos andamento a este estudo finalizando a explicação ao que diz respeito a estes atributos.

Atividades de Múltiplas Instâncias (Multi-Instace Activity)

Representado por um marcador de 3 barras paralelas verticais presente na parte inferior central da atividade, dispara múltiplas instâncias da mesma atividade.

O marcador de múltiplas instâncias pode ser aplicado a uma tarefa como em um subprocesso.

O atributo de múltiplas instâncias permite que uma atividade tenha “N” repetições, podendo ser instanciada em paralelo diversas vezes.

Neste exemplo, o processo demostra o fluxo do processo de “Cadastro de Orçamentos”, no qual há uma tarefa para cadastrar orçamento. Esta tarefa permite que um ou mais orçamentos sejam cadastrados ao mesmo tempo. Quando a tarefa de cadastro dos orçamentos finalizar, o processo enviará estes cadastros para a tarefa que avaliará os orçamentos para escolher o vencedor.

Subprocesso ad-hoc

Um subprocesso ad-hoc indica um conjunto de atividades desempenhadas sem uma sequência pré-definida pois suas tarefas (tasks) não são conectadas pelo fluxo de sequência (sequence flow).

Subprocesso ad-hoc

É importante ressaltar que não existe uma obrigatoriedade na execução de todas as tarefas de um processo ad-hoc.

Estas atividades estão relacionadas, geralmente, a atividades humanas onde a quantidade de vezes e a ordem são definidas pelo executor.

O exemplo acima trata de um subprocesso ad-hoc. Como o subprocesso não possui um fluxo de sequência, suas atividades podem ser executadas sem sequência ou obrigatoriedade.

Tarefa de Compensação (Compensation)

A tarefa de compensação é uma tarefa particular e não faz parte do fluxo normal de um processo. Em alguns momentos na modelagem de processos de negócios, precisamos “desfazer” uma atividade ou processo e em alguns casos, quando desfeito, precisamos gravar esta operação, o que requer uma etapa exclusiva representada por uma tarefa de compensação (compensation).
Este “desfazer” o processo poderia ser representado por um subprocesso, gerando um fluxo muitas vezes complexo. A tarefa de compensação resolve este problema com apenas uma tarefa.

A tarefa de compensação é representada como uma tarefa normal, mas com um pequeno símbolo que se parece com o botão de rebobinamento num leitor de áudio (dois pequenos triângulos apontando para a esquerda).

A tarefa de compensação é utilizada exclusivamente para executar a compensação de uma atividade já realizada no processo.

Sua conexão é realizada através da associação de compensação (compensation association) e ligado ao evento anexado a atividade já realizada. Este evento é conhecido como catch compensation.

No exemplo acima, por uma determinada condição do processo, a atividade “Reservar van”, já realizada, deverá ser compensada, levando ao seu cancelamento.

Subprocesso de Transação (Transiction)

Transação é um tipo de subprocesso que contém um conjunto de atividades, logicamente relacionadas, e pode seguir um protocolo transacional específico. Ele faz com que todas as suas atividades sejam completadas com sucesso ou canceladas (compensadas).

O subprocesso de transação é representado por um retângulo de bordas arredondadas e linha dupla e pode ser representado tanto na forma contraída (collapsed) como na forma expandida (expanded).
A fronteira da atividade será uma linha dupla que indicará que trata-se de uma transação.

Subprocesso de Transação (Transiction)

Para que o subprocesso de transação seja finalizado com sucesso todas as suas atividades devem ser completadas. Veja o exemplo abaixo que demostra a representação do subprocesso de transação.

O exemplo acima demostra que é necessário que a reserva da van e do passeio no parque sejam concluídos para que o processo de reservas seja concluído com sucesso, levando a atividade de faturar comprador. Caso a reserva da van seja concluída e do passeio não, a reserva da van é cancelada (e vice-versa). No caso de cancelamento, um evento intermediário de cancelamento (cancel), mostrará o caminho que o fluxo irá seguir (fracasso), levando a execução da atividade “Avisar da indisponibilidade”. Erro (error): quando isto ocorrer significa que nenhuma conclusão bem sucedida como também nenhuma conclusão fracassada ocorreu. Neste caso usa-se a exceção para mostrar o perigo. Quando um perigo é detectado, a atividade é interrompida (sem compensação) e o fluxo prossegue pelo evento intermediário de exceção (erro).

Obrigado a todos e até nosso próximo artigo!


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

16 respostas

  1. Fabiano, satisfação!

    Conforme o artigo, não há obrigatoriedade de execução das tarefas em Ad-hoc. Como poderei demonstrar, segundo a notação, um conjunto de atividades que necessitam de ser executadas sem que haja uma ordem lógica entre elas?

    1. Paulo, sua questão é bastante interessante. Pesquisamos bastante e constatamos não há na notação visual um elemento ou marcador para este nível de especificidade da representação que você está buscando. Assim, nossa recomendação seria utilizar um subprocesso ad hoc e utilizar os parâmetros do elemento para registrar quais são as atividades obrigatórias. Se é muito importante que isso seja apresentado visualmente, há outros recursos como: associar anotações às tarefas obrigatórias, sinalizando que elas devem ser executadas, ou usar um código de cores diferenciado para estas tarefas.

  2. Ola!, primeiramente parabéns pelo conteúdo, estou aprendendo BPMN e gostaria tirar uma duvida sobre o evento de compensação, tenho uma atividade, analisar cadastro, no meu entendimento, apos realizar a analise, o fluxo seguiria no caso de conformidade, no contrario eu penso em ativar um evento de compensação, cancelar solicitação, baseado na ideia da atividade analisar cadastro já ter sido executada e por algum motivo, não foi possível seguir em frente…

    não sei se ficou claro, muito obrigado pela atenção :)

    1. Olá João. A tarefa de compensação só pode ser utilizada em subprocessos transacionais. O que ela seja acionada é o evento de compensação relacionado à tarefa que foi realizada e precisa ser desfeita (compensada). Mas o evento de compensação só é acionado se houver algum erro durante a transação. Em geral, esse conjunto de elementos em BPMN só é utilizado em processos automatizados onde a transação é controlado pelo sistema.

  3. Primeiramente, gostaria de parabenizá-la pelos seus artigos eles veem me ajudando muito a entender o mundo BPMN.
    Eu tenho uma dúvida sobre múltiplas instancias. Se eu usar esse marcador em uma tarefa isso quer dizer que as outras tarefas que seguem também vão ser repetidas a quantidade de vezes que eu determinei?
    Agradeço desde já!
    Um abraço

    1. Olá Kellyane. O multi instanciamento vale apenas para a atividade que leva o marcador. Se uma atividade tem o marcador de múltiplas instancias, ele executará todas elas antes de dar a atividade como finalizada e passar para a próxima. Se você precisa que as demais atividades também sigam com o multi-instanciamento, há duas opções: colocar o marcador de multi instancia em cada uma (implicando no entendimento que será um lote que andará todo junto de uma atividade para a outra) ou colocá-las em um subprocesso e clocar o sinal de multi instancia no subprocesso (possibilitando que cada instancia do subprocesso possa estar em uma atividade diferente, mas que todas elas terão que ser concluídas para o término do subprocesso e o avanço para as etapas seguintes.

  4. Passei simplesmente para agradecer.
    Essa série de escritos sobre elementos avançados, será de muita valia em minha preparação para o Concurso Dataprev 2016

    1. Olá Nobre! tudo bem?

      Agradecemos seu comentário, é de grande valor.
      Ficamos muito felizes em saber que nosso conteúdo tem ajudado na capacitação e conhecimento de muita gente como você.
      Conte conosco sempre que precisar.
      Abraço.

    1. Olá Thiciara, a melhor forma de representar isso certamente será usando um subprocesso eventual (event subprocess). Nele você pode definir que o evento de início é a condição ou mensagem de solicitação de cancelamento, e a partir daí modelar a atividade de cancelamento.
      O subprocesso eventual não está conectado ao fluxo de sequência, e o que determina a sua execução é justamente a ocorrência de um evento (que pode ou não acontecer, e a qualquer momento do processo).

  5. Primeiramente, parabéns pelas aulas! A minha dúvida é em relação a diferença entre a atividade de Loop e a de Múltipla instância enquanto as duas representam repetições de uma atividade. Quando usar uma ou outra? Obrigado!

    1. Olá André, a diferença entre o loop e a múltipla instância é o método usado para definir quantas vezes a atividade repetirá.
      No standard loop, a atividade repete enquanto uma determinada condição for verdadeira. O critério de avaliação para a continuidade é um booleano; quando ele se tornar falso o fluxo do processo encerra a repetição e segue o andamento do processo.
      Já na múltipla instância, é o tipo (paralelo ou sequencial) e um número. Por exemplo: a repetição pode ser para os N itens de uma lista. Quando paralelo, o processo dispara as N instâncias da atividade em paralelo, e quando todas forem concluídas, a atividade como um todo é dada como finalizada e o processo segue o fluxo. Quando for sequencial, ele faz uma repetição semelhante ao loop, mas o critério de repetição é dado por um contador. Ele vai repetir a atividade para as N vezes previstas e então ela será concluída, dando seguimento ao processo.

      Esperamos reencontrá-lo novamente em nossos próximos cursos!

    1. Olá Natália,
      O fato da atividade ser executado semanalmente não costuma ter relação com o processo de negócio, mas com a rotina da organização. É bom ter cuidado para não confundir processos com rotinas.
      Mas se mesmo assim entendem que o processo estabelece que a atividade é semanal, não há elemento na notação BPMN para isso. Como alternativa, você pode utilizar uma anotação para representar essa informação.

  6. Antes de mais, parabéns pelo excelente conteúdo. Mas surgiu-me uma dúvida: no caso de ter um subprocesso múltipla instância, como devo proceder, por exemplo, no Bizagi Modeler, para poder garantir que o subprocesso, é de facto, executado N vezes?
    Ou seja, que tipo de condição deveria ser incluída para que possa garantir que, de facto, são consideradas as N instâncias?
    Ainda… Devem ser consideradas as durações por instância? Ou para todo o subprocesso?

    Obrigada :)

    1. Olá Rita!
      A notação BPMN não chega a definir isso. Esse controle varia de ferramenta para ferramenta e como se trata de controles sobre a execução do processo, então são feitas nos módulos de automação do processo (não na modelagem).
      No Bizagi Modeler você provavelmente não encontrará formas de incluir esses controles. Se você estiver automatizando o processo com a plataforma Bizagi e o motor de processos implementar algum controle desse tipo, provavelmente será configurado através do Bizagi Studio.

Deixe um comentário

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

MAIS VISTOS

Como transformar as ideias de mudança para um processo TO BE em ações efetivas, controladas... (continuar lendo)
Veja agora as ações que foram realizadas através das doações de todos os participantes deste... (continuar lendo)
Participe deste evento exclusive e gratuIto e se prepare para as transformações que IA irá... (continuar lendo)

Inscreva-se na nossa Newsletter

seers cmp badge