Um dos recursos mais explorados em todo processo de negócio são as decisões. Decisões ou Exclusives no jargão do BPMN, são elementos de modelagem para realizar a transição entre atividades de forma condicional, ou seja, um mecanismo de modelar um fluxo de uma interação onde não é previamente conhecido o caminho que será tomado, várias possibilidades podem estar presentes.
Neste post, irei mostrar três forma diferentes de se trabalhar com decisions no jBPM 4. As três formas possíveis são:- Usando Condições
- Usando Expressões
- Usando Handlers
Vamos começar então com um exemplo de decisions usando condições. Usando condições, é a forma mais simples de se trabalhar com decisions no jBPM 4, pois você coloca toda a lógica de avaliação da condição dentro do processo, em especial, dentro das declaração dos transitions. Desta forma, cada transition é responsável por saber qual caminho tomar, uma estratégia interessante se você tem um número de transições finitas e simples. Considere o seguinte processo de negócio:

A definição do processo usando condições seria assim:
Como segundo exemplo, agora considerando a estratégia de expressões, considere o seguinte processo de negócio:

A definição do processo usando condições seria assim:Finalmente, considere este último processo de negócio, que faz uso do recurso de decisions baseado em handlers customizados:
A definição do processo usando condições seria assim: Neste caso especial, é necessário que você escreve um handler especial para manipular a lógica sobre a decisão. Segue o exemplo criado para o processo descrito acima:
Seja qual opção for, para que as lógicas de decisão funcionem, é necessário enviar para a instância do processo, uma ou mais variáveis de contexto que sinalizam o fluxo a ser seguido. No jBPM 4, a forma mais simples (e recomendável) de se enviar variáveis para o processo é quando sua instância é criada, por exemplo: