Em que nível devo modelar meu processo?

Uma das principais atividades na transformação de um processo é a sua modelagem. Seja no princípio do projeto, para representar a sua situação atual (AS IS), a criação de modelos para simulação ou comparação de variações, a definição da sua visão de futuro (TO BE) ou o fluxo a ser implementado para automação, a modelagem é importante na representação do processo que está sendo detalhado ou melhorado.

A representação visual do modelo utilizando uma notação gráfica como BPMN é um dos seus aspectos chave da modelagem. O nível de detalhe das atividades no diagrama de processos, entretanto, é frequentemente tema de debate entre os profissionais de Processos.

A notação BPMN, apesar de poderosa e de ter uma gramática bem definida quanto ao uso dos seus elementos, não estabelece qual seria o nível ideal de modelagem do processo. Ela define formalmente que “uma atividade representa um trabalho”. Mas devemos ir por uma abordagem mais alto nível do significado de trabalho (o “trabalho” é aquilo feito por uma área inteira?) ou mais baixo nível (o “trabalho” é cada ação realizada por alguém para atender ao resultado objetivo do processo?).

Não há uma regra para isso, e na verdade cada tipo de modelo pode requerer um nível de detalhe diferente no mapeamento do processo, de acordo com o propósito para que serve aquele modelo.

Por exemplo, em uma reunião no qual estamos buscando um entendimento amplo sobre o processo, com uma visão ponta a ponta em que possamos identificar suas principais etapas, um nível alto seria o mais apropriado.
Mas e quando vamos mapear um processo que será usado como material de treinamento, num manual de processos ou para descrever o trabalho de uma determinada etapa?

Existem alguns critérios que podem ser interessantes de serem questionados pela equipe ao definir o nível de modelagem do processo que estamos criando.

Como oportunidade de reflexão, um de nossos leitores contribuiu recentemente com dois exemplos de processos. Vamos tomar por base então o seguinte exemplo:

1) Nesse fluxo, podemos perceber que o mapeamento está em nível de procedimento, não de trabalho. O trabalho seria, por exemplo, “Avaliar baixa”, que envolve esta sequência de procedimentos: Consultar arrecadações, selecionar arrecadação, …, até confirmar baixa manual. Embora exista uma sequência entre eles, pode ser uma sequência flexível, em que a ordem dos itens pode eventualmente mudar na operação da pessoa no sistema. Esse nível de detalhe é bem comum de ver em processos modelados por profissionais de TI. Cuidado para não confundir o fluxo de trabalho com o fluxo de interação com sistema. Para esse segundo, devemos utilizar UML (Diagrama de sequência ou diagrama de atividades ou até mesmo passos de um Caso de Uso).

2) Pensando no por quê modelamos processos no nível de operação, geralmente fazemos isso para entender o processo e ter um parâmetro para avaliar o seu desempenho, certo? Assim, normalmente as tarefas são utilizadas para determinar o trabalho do processo, onde podemos medir o tempo e custo da sua realização. Neste sentido, será que realmente interessaria para a organização mensurar detalhadamente quanto tempo leva para executar cada um desses passos? Ou é mais importante entender quanto tempo, dentro da dinâmica do processo, um profissional leva para realizar a análise e a baixa, de uma forma consolidada?

3) Geralmente quando mapeamos nesse baixo nível, fica mais difícil representar as exceções. Por exemplo, no caso em que qualquer um desses passos seja possível o ator voltar atrás em alguma ação. Nesse fluxo, teríamos que desenhar também todas as possibilidades de voltar e refazer algum passo. Ou seja, após ele selecionar o ingresso, ele terá que selecionar uma parcela. Mas se ao selecionar a parcela ele se der conta que escolheu o lançamento errado, ele poderia voltar pra selecionar outro lançamento?

4) Um outro fator a considerar é a manutenibilidade do processo. Queremos dizer com isso que qualquer mínima alteração nas ferramentas podem fazer com que você tenha que criar uma nova versão do seu diagrama de processo, tornando a manutenibilidade da documentação mais custosa e também dando mais chance para ela se tornar rapidamente obsoleta.
Se você tem uma tarefa “Avaliar baixa” e nela descreve os procedimentos, e a sua organização mudar do sistema XPTO para o sistema MEGAXPTO, o trabalho feito pela organização continuará sendo o mesmo, que é avaliar a baixa. O processo não mudou, o que mudou foi a ferramenta. Assim, no nível de mapeamento do trabalho, a manutenção fica mais fácil porque não precisará mudar o fluxo, apenas atualizar o procedimento (passos realizados naquela atividade, que podem ser descritivos complementares ao desenho do fluxo).

Se o plano for automatizar o processo, esses critérios podem ser ainda mais relevantes, porque o motor de processos é muito literal na interpretação do modelo. Confira uma outra reflexão semelhante que já fizemos sobre o assunto aqui no Blog da iProcess no artigo: Estudo de Caso: Automatizar o processo (ou não)? Eis a questão!

 

Como representar exceções no fluxo do processo em BPMN?

Com alguns anos de experiência participando de projetos e treinamentos envolvendo processos de negócio, percebemos situações recorrentes quanto à aplicação de exceções na lógica do fluxo do processo de negócio que está sendo desenhado e documentado. A boa modelagem de processos de negócio em BPMN é o resultado do domínio da notação (estudo e compreensão dos elementos), mas para uma modelagem que represente corretamente uma situação de negócio, não basta saber aplicar as regras da notação BPMN, conhecer seus símbolos e o que cada um significa. É preciso também entender os detalhes da lógica do processo de negócio em questão.

Vou aproveitar o tema para repassar as regras da notação BPMN relacionadas à representação de exceções durante a execução de atividades, apresentar algumas ilustrações, de forma a esclarecer algumas dúvidas e confusões comuns quanto à representação da lógica do negócio.  

Como já tratado em outros artigos, atividades retratam o comportamento ou trabalho realizado em um contexto do processo, gerando uma transformação (resultado) ao final deste trabalho. Atividades que podem gerar mais de um resultado normalmente são testadas, pois levam o fluxo por caminhos diferentes (alternativos ou paralelos). Para contextualizar, usarei como exemplo um processo fictício de liberação de crédito, representado abaixo. 

No exemplo, o Processo de Liberação de Crédito realiza dois trabalhos para identificar se o crédito pode ou não ser aprovado. O Processo consiste em analisar se comprador possui restrições de crédito e limite para liberação de crédito.

O processo possui duas tarefas que analisam se o solicitante pode receber o crédito solicitado. A primeira tarefa Consultar situação de crédito (Tarefa de Usuário) analisa se solicitante está em situação de inadimplência ou sem débitos. Caso a tarefa resulte por situação de crédito por inadimplência, o processo é automaticamente finalizado por solicitação reprovada. Se não houver débito(s) o processo segue para verificação do limite. A segunda tarefa Verificar limite de crédito (Tarefa de Serviço) analisa se o solicitante possui limite para liberação de crédito solicitado. Caso o limite de crédito esteja dentro do limite solicitado, o processo é finalizado por solicitação aprovada. Se o limite de crédito estiver abaixo do solicitado, o processo é automaticamente finalizado por solicitação reprovada.

Mapeando exceções nas atividades do fluxo do processo

Descrevi acima um fluxo típico de processo de liberação de crédito, onde a situação de negócio está bem explícita em cada uma de suas tarefas, tanto no que consiste o trabalho realizado, quanto suas saídas (possíveis resultados). Porém algumas situações fora do comum, que não se espera que aconteçam (mas que podem acontecer) foram ignoradas. Estas situações são conhecidas também por exceções. Vejamos algumas situações que deverão ser representadas no fluxo do processo de liberação de crédito.

Situação 1

A tarefa Consultar situação de crédito deve conter um prazo para execução e, caso o prazo seja excedido, uma notificação deverá ser disparada para o responsável.

Situação 2

Caso uma informação de referência da tarefa Consultar situação de crédito estiver incorreta (ex. cpf inválido) e não for possível finalizar a tarefa, deverá ser realizado um tratamento para correção da informação.

Situação 3

Caso o serviço utilizado na tarefa Verificar limite de crédito estiver indisponível ou apresentar erro na sua execução impossibilitando a finalização da tarefa, uma notificação deverá ser disparada para o responsável, finalizando o processo por indisponibilidade no sistema.

Imagine que em nível de negócio todas estas situações devem ser previstas e representadas no fluxo do processo. Como representar estas situações? Qual seria a forma mais adequada de representá-las, levando em conta a lógica do processo e as regras da especificação BPMN 2.0?

Começaremos avaliando, neste artigo, apenas a Situação 1.

Antes de apresentar a solução, mostraremos uma confusão na hora de desenhar esta situação. Um erro bastante comum que presenciamos ao corrigir os exercícios dos alunos nos nossos cursos e por vezes também identificado em processos de melhoria, é a forma como é aplicado o controle de prazos nas tarefas, que geralmente é representado com um evento intermediário diretamente no fluxo do processo, posicionado logo após a tarefa que deveria ser controlada (já vimos casos que o prazo também havia sido posicionado antes da tarefa).

Aqui começa a primeira confusão: o evento que controla o prazo deve ser representado como uma exceção à saída da tarefa. Veremos mais abaixo, nas regras de especificação da notação, que este tipo de situação deve ser representado por um evento anexado a borda da tarefa a ser controlada, e não diretamente no fluxo do processo. Neste caso o evento de tempo deve ser acionado somente se a tarefa não tiver sido executada dentro do prazo e nunca obrigar, como modelado no exemplo abaixo, que o fluxo aguarde sempre por um período de tempo, desta forma paralisando o fluxo. Outro erro, também demonstrado na imagem abaixo, está no gateway que testa a situação de crédito. Veja que foi incluída uma nova saída Em atraso que deverá ser acionada caso a tarefa seja executada após o prazo. Da forma como o fluxo acima foi modelado, a tarefa Consultar situação de crédito não possui, de fato, um controle de tempo. Ela deve ser necessariamente executada para que o fluxo prossiga. Após a conclusão da tarefa é apresentado um controle de tempo contido diretamente no fluxo do processo, que obriga ao processo uma parada no fluxo, por dois (2) dias.

Vejam que o processo acima é válido do ponto de vista da notação BPM. Porém ele não representa corretamente a situação do negócio proposto na situação 1, pois não deveria obrigar a parada do fluxo, e sim controlar o tempo da tarefa Consultar situação de crédito.

Solução proposta para Situação 1:

  1. A tarefa deverá possuir uma condição de tempo associada à sua execução.
  2. A tarefa, mesmo em atraso, poderá ser executada (não deverá ser cancelada).
  3. A tarefa, caindo em atraso, deverá executar um fluxo de exceção para disparo de uma notificação de atraso para o responsável.

Regras da especificação BPMN 2.0:

  • Segundo a especificação oficial da notação BPMN 2.0, quando uma atividade possui prazo para execução, deve ser representado através do elemento Evento Intermediário do tipo Tempo (Timer), conectado à borda da atividade.
  • No momento que a atividade for iniciada, o evento será monitorado e controlado seu tempo.
  • Se o evento for disparado, o fluxo mapeado a partir do evento é executado.
  • A interrupção da tarefa é representada através do desenho da borda do evento. Neste caso, deve conter a borda tracejada, que demonstra que a tarefa, mesmo em atraso, poderá ser executada. A borda contínua representa que, ao ser disparado o evento de tempo, a tarefa seria cancelada.

Levando em conta a lógica desejada para o processo e as regras da especificação BPMN, apresentamos abaixo a solução mais adequada para a situação 1:  O controle do prazo para execução da tarefa está representado corretamente pela exceção – neste caso o evento intermediário de tempo anexado a borda da tarefa. Como já dito, assim que a tarefa é iniciada, o evento passa a controlar seu tempo e caso a tarefa não seja executada e finalizada em até dois (2) dias, o evento de tempo é disparado e o fluxo segue para o próximo ponto onde dispara uma notificação de atraso ao responsável.

Continuaremos em um próximo artigo o assunto, falando a respeito da segunda e terceira situações, bem como as confusões mais comuns na hora de desenhá-las. Fique ligado!