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 atributo de múltiplas instâncias permite que uma atividade tenha “N” repetições, podendo ser instanciada em paralelo diversas vezes.
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).
É 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.
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).
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.
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.
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.
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:
- BPMN: Modelando processos de negócio com elementos avançados (Parte I): Marcadores de Atividades
- BPMN: Modelando processos de negócio com elementos avançados (Parte II): Continuação Marcadores de Atividades (você está aqui)
- BPMN: Modelando processos de negócio com elementos avançados (Parte III): Gateways
- BPMN: Modelando processos de negócio com elementos avançados (Parte IV): Subprocesso de eventos
16 Responses
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?
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.
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 :)
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.
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
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.
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
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.
Boa noite. Tenho uma tarefa de cancelamento num processo que pode ocorrer a qualquer momento do processo. Como represento isso?
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).
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!
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!
Oi, tenho uma dúvida.
Quando em um mapeamento de setor, uma atividade realizada é feita semanalmente, como posso demonstrar isso?
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.
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 :)
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.