Cronapp BPM

Cronapp BPM

Modelo de Processo de Negócios e Notação (BPMN - Business Process Model and Notation) fornece um padrão para compreender todo o fluxo de processos (Fluxo de trabalho) de uma empresa em notações gráficas, garantindo o entendimento, participação e adequação de acordo nas necessidades do negócio. Atualmente o BPMN está em sua versão 2.0.2 e é mantido pela organização internacional OMG, ela também é responsável por manter outros padrões, como o UML.

As principais vantagens em utilizar o Cronapp BPM em seu projeto:

  • Seu uso é bem simples e possui rápida curva de aprendizado;

  • Todo o processo pode ser desenvolvido a partir de recursos visuais, com cliques e drag-and-drop (arrastar e soltar);

  • Utiliza um padrão já bem estabelecido no mercado e é suportado por diversos produtos;

  • O BPMN é mantido por uma instituição confiável e conhecida por manter vários outros padrões;

  • Possui um serviço confiável, com diagramas executáveis, fluxo de tarefas manuais, manipulação de eventos e de fácil entendimento por todos;

  • Possui uma aplicação standalone com um painel de gerenciamento onde é possível manipular todos os fluxos.

Figura 1 - Exemplo de modelagem BPMN usando o Editor de Fluxo de trabalho

 

Atualmente o Cronapp só dá suporte para criações através do motor BPM - ou seja, não é possível criar CMMN ou DMN dentro do Cronapp. No entanto, se o projeto possuir esse conteúdo e for importado, funcionará corretamente, desde que ele seja compatível com BPMN 2.0.

Para acessar todos os métodos, formatos e conteúdos esperados acesse a documentação oficial do Camunda.

Adicionar plugin

Siga os passos abaixo para instalar o Plugin Cronapp Workflow (BPM) em seu projeto Cronapp.

Figura 2 - Adicionando plugin Cronapp Workflow (BPM)

 

  1. Acesse no menu do sistema Plugin > Instalar Plugins.

  2. Pesquise por "BPM" no campo de busca.

  3. Selecione Cronapp Workflow (BPM), clique em Avançar e, em seguida, em Finalizar.

 

Se o botão Modo Avançado estiver habilitado, aparecerá a janela "Sumário de alterações no arquivo POM" informando as modificações necessárias para a instalação do plugin, clique em Salvar. Caso o botão esteja desabilitado, a instalação será feita sem a janela de notificação.

Após essa etapa, recomendamos Recompilar e Reabrir o projeto.

 

Recursos do plugin

O conteúdo criado no Cronapp BPM é armazenado em um banco de dados e, após a instalação do plugin, o Cronapp cria automaticamente uma nova conexão de banco de dados H2 com essa estrutura (Figura 2.1). Como o H2 é um banco de dados efémero (temporário), o desenvolvedor deve acessar a funcionalidade de Banco de dados (destaque 1 da figura 2.1), editar a nova conexão (2) e apontar para um banco de dados real (veja mais detalhes em Banco de dados).

Figura 2.1 - Banco de dados criado após a instalação do plugin

 

Também são adicionadas 5 novas categorias de Workflow no editor de Bloco de programação Servidor, permitindo a personalização dos seus fluxos de trabalho (Figura 2.2).

Acesse a documentação oficial do Camunda para obter mais informações sobre a API Workflow e os recursos executados pelos blocos.

Figura 2.2 - Blocos de programação do Workflow

Fluxo de trabalho

Após a instalação do plugin, seu projeto está pronto para criar uma aplicação utilizando o moto do Cronapp BPM.

Criar Fluxo de Trabalho

Siga os passos abaixo para criar um arquivo do tipo Fluxo de trabalho em tempo de desenvolvimento.

Figura 3.1 - Criando novo arquivo BPMN

 

  • Clique com o botão direito na pasta Fluxos de Trabalho (Localização: Fluxo de Trabalho/).

  • Selecione a opção Novo > Fluxo de Trabalho.

  • Informe o nome do arquivo na janela que abrir e clique em OK.

Editor BPMN

O Editor de Fluxo de trabalho cobre todos os elementos do BPMN 2.0 para processos de modelagem. A figura abaixo apresenta as áreas principais do editor.

Figura 3.2 - Área de edição do Fluxo de Trabalho

 

  1. Caixa de ferramentas: possui os elementos, as conexões e as ferramentas para manipulação.

  2. Área de edição: área para construção do diagrama de orquestração.

  3. Painel de propriedades: muda conforme o elemento selecionado, nesse painel é possível visualizar e editar atributos que se aplicam ao elemento atualmente selecionado.

Atalhos dos elementos

Ao selecionar um elemento na área de edição serão exibidos alguns ícones de atalhos para realizar configurações (Figura 3.3), esses ícones podem variar conforme o tipo de elemento selecionado.

Figura 3.3 - Ícones de atalho do elemento evento de início

 

  1. Ícones de elementos: esses ícones representam outros elementos da caixa de seleção e mudam conforme o elemento selecionado, mas sua ação é a mesma - ele cria uma conexão entre o elemento selecionado e o elemento do ícone escolhido.

  2. Adicionar comentário: cria uma caixa flutuante no elemento para que possa ser inserido comentários.

  3. Mudar tipo: abre uma caixa de opções para alterar o tipo do elemento.

  4. Remover: remove o elemento da área de edição.

  5. Conexões: adiciona uma conexão entre o elemento selecionado e outro elemento que esteja presente na área de edição.

Elementos e seus tipos

Abaixo listamos os elementos que compõem o BPMN 2.0.

Piscina

Uma piscina serve para representar um processo ou participante. Uma piscina pode ter raias e o conteúdo dentro dessas raias representam as responsabilidades que um participante ou processo podem ter.

Figura 3.3.1 - Piscina e piscina com raia

Subprocesso

Um subprocesso é um conjunto de atividades de um processo maior, possuindo mais detalhes do que o processo. O elemento que caracteriza um subprocesso é um retângulo com bordas arredondadas e que varia conforme os seus tipos: subprocesso embutido (borda simples), atividade de chamada (bordas em negrito), subprocesso por evento (bordas pontilhadas) e transação (bordas duplas) (Figura 3.3.2).

O elemento subprocesso embutido é o padrão após arrastar um subprocesso, utilize o ícone da ferramenta (destaque 3 da figura 3.3) para alterar para outro tipo de subprocesso.

Figura 3.3.2 - Tipos de subprocesso

 

  • Subprocesso embutido: faz referência a um processo interno.

  • Atividade de chamada: faz referência a um processo externo.

  • Subprocesso por evento: subprocesso que ocorre através da ação de um evento.

  • Transação: agrupa várias atividades para uma transação.

Tarefa

Uma tarefa contém atividades que deverão ser realizadas pelo responsável dentro de um prazo. Essas tarefas podem ter várias definições (Figura 3.3.3) que são alternadas ao utilizar o ícone da ferramenta (destaque 3 da figura 3.3).

Figura 3.3.3 - Tipos de tarefa

 

  • Tarefa: tarefa sem nenhuma definição.

  • Tarefa de enviar mensagem: envia uma mensagem para um participante ou processo através de um bloco de programação, por exemplo.

  • Tarefa de receber mensagem: espera o recebimento de uma mensagem de um participante ou processo - para isso, selecione um ID que corresponda a uma tarefa de enviar mensagem.

  • Tarefa de usuário: espera uma tarefa dentro do fluxo de trabalho ser realizada pelo usuário - podendo ser definido um responsável, um usuário candidato, um grupo candidato, uma data de vencimento, uma data de acompanhamento e a prioridade.

  • Tarefa manual: executa uma tarefa que não utiliza o fluxo de trabalho.

  • Tarefa de regra de negócio: executada automaticamente por uma decisão de negócio, sendo necessário selecionar a forma de implementação na aba geral do painel de propriedade.

  • Tarefa de serviço: invoca serviços através de um bloco de programação, por exemplo.

  • Tarefa de roteiro: executa uma sequência de comandos (script) automaticamente, sendo necessário definir o formato de script e se a execução será interna ou externa.

 

As tarefas Envio, Regra de Negócio e Tarefa de serviço suportam a execução de funções via bloco de programação. Veja mais detalhes no tópico Vincular blocos de programação.

Gateways

Gateways são pontos de desvio em um processo, permitem que decisões sejam tomadas baseando-se em eventos ou dados, além de separações e junções simultâneas. Os gateways possuem símbolos internos que determinam o seu tipo, através do ícone da ferramenta (destaque 3 da figura 3.3) é possível alterá-los.

Figura 3.3.4 - Tipos de gateway

 

  • Gateway exclusivo: define que o processo terá um único caminho através de uma condição previamente imposta.

  • Gateway paralelo: define que o processo ocorre simultaneamente, permitindo que ele seja separado em várias partes ou unido de várias partes em uma só.

  • Gateway inclusivo: combinação do gateway exclusivo com o gateway paralelo, no qual permite que um processo possa ter múltiplos caminhos através das condições previamente impostas.

  • Gateway complexo: controla condições complexas de junções e separações.

  • Gateway baseado em eventos: define que o processo possa fazer desvio baseado nos eventos.

Dados

No BPMN 2.0, os dados a serem manipulados podem vir de objetos ou de banco de dados, seus respectivos ícones são representados na figura abaixo.

Figura 3.3.5 - Tipos de dados

Eventos

Há três tipos básicos de eventos: o início, que possui uma borda simples, o intermediário, com uma borda dupla, e o fim, que possui bordas em negrito. Esses três tipos de eventos podem ter diversos outros eventos atrelados a eles, como tempo, condição, sinais, mensagens e entre outros.

Eventos de início

Indica o início de um processo ou subprocesso. Há cinco tipos de eventos de início: básico, por mensagem, por tempo, por condição e por sinal (Figura 3.3.6). Utilize o ícone da ferramenta (destaque 3 da figura 3.3) para alterar seu tipo.

Figura 3.3.6 - Eventos de início

 

  • Evento de início básico: é iniciado sem a definição de um fato específico que gere o seu início.

  • Evento de início por mensagem: o início do processo ocorre após o recebimento de uma mensagem - para isso, precisa ser selecionado um ID que corresponda a uma tarefa de enviar mensagem na aba geral do painel de propriedade.

  • Evento de início por tempo: define o tempo que dará início ao processo - para isso, precisa ser selecionado o tempo (dias, ciclos ou duração) na aba geral do painel de propriedade.

  • Evento de início por condição: o início do processo ocorre após uma condição lógica.

  • Evento de início por sinal: o início do processo ocorre após o recebimento de um sinal de outro processo.

Eventos intermediários

Os eventos intermediários ocorrem durante o processo. Esses eventos podem aguardar a ocorrência de fatos para que o processo continue ou gerar a ocorrência do fato para dar continuidade ao processo. Utilize o ícone da ferramenta (destaque 3 da figura 3.3) para alterar entre os tipos.

Figura 3.3.7 - Eventos intermediário

 

  • Evento intermediário básico: assim como o evento de início básico, esse evento não é específico, mas indica que será iniciado um evento.

  • Evento intermediário por captura de mensagem: irá aguardar a mensagem apropriada chegar.

  • Evento intermediário por lançamento de mensagem: enviará uma mensagem para um serviço externo.

  • Evento intermediário por captura de tempo: cronometra a execução, iniciando assim que a ocorrência chegar e disparando um alarme assim que o tempo acaba.

  • Evento intermediário por lançamento de escalonamento: envia o escalonamento apropriado que pode ser capturado por outro tipo de evento de escalonamento.

  • Evento intermediário por captura de condição: indica que a execução permanecerá nesse evento enquanto sua condição não estiver em conforme com a que foi definida - caso ela for, sua execução seguirá adiante.

  • Evento intermediário por captura de link: ele recebe o caminho para qual a execução seguirá.

  • Evento intermediário por lançamento de link: ele envia o caminho para qual a execução seguirá.

  • Evento intermediário por lançamento de compensação: usada para acionar uma compensação.

  • Evento intermediário de sinal: irá aguardar enquanto não receber o sinal apropriado.

  • Evento intermediário por lançamento de sinal: envia um evento com o sinal apropriado para um evento de captura.

 

O Eventos intermediários por lançamento de mensagem suporta a execução de funções via bloco de programação. Veja mais detalhes no tópico Vincular blocos de programação.

Eventos de finalização

Indica a finalização do processo ou subprocesso. Os eventos de finalização podem ser por mensagem, por escalonamento, por erro, por compensação, por terminação e por sinal. Utilize o ícone da ferramenta (destaque 3 da figura 3.3) para alterar entre os tipos.

Figura 3.3.8 - Eventos de finalização

 

  • Evento de finalização básica: indicação simples de que o processo foi finalizado.

  • Evento de finalização por erro: indica que finalizou com erro e uma mensagem será enviada para um subprocesso.

  • Evento de finalização por terminação: indica que ao finalizar todas as partes do processo serão encerradas.

  • Evento de finalização por mensagem: indica que ao finalizar enviará uma mensagem para outro participante.

  • Evento de finalização por compensação: indica que ao finalizar será iniciado o tratamento de compensações, no qual será desfeito todas as ações ocorridas no processo.

  • Evento de finalização por escalonamento: indica que ao finalizar enviará uma mensagem de escalonamento para eventos de catch.

  • Evento de finalização por sinal: indica que ao finalizar será enviado um sinal para outros processos.

Painel de propriedades

A área de propriedades (destaque 3 da figura 3.2) pode mudar conforme o elemento selecionado. Algumas propriedades são específicas de um elemento e outras são comuns a todos.

Geral

Na aba geral é apresentado as seguintes propriedades:

Campo

Função

Campo

Função

ID

O identificador do elemento é gerado automaticamente, mas que pode ser editado.

Nome

(Opcional) Campo para adicionar um nome ao elemento.

Versão da tag

(Opcional) Campo para adicionar um nome para ser a versão da tag.

Executável

Ao habilitar, permite que o processo seja executado em outro fluxo.

Prioridade da tarefa

(Opcional) Campo para informar a prioridade (valor numérico) da tarefa, que por padrão tem como valor igual a 0.

Prioridade do processo

(Opcional) Campo para informar a prioridade do processo, que por padrão tem como valor igual a 0.

Grupos de inicialização

(Opcional) Campo para adicionar grupos que podem realizar a inicialização do elemento ou processo.

Usuários candidatos de inicialização

(Opcional) Campo para adicionar usuários que podem realizar a inicialização do elemento ou processo.

Histórico de Time to Live

(Opcional) Campo para informar o tempo de vida do histórico (valor numérico), contado em dias.

Inicializável

(Opcional) Especifica se o processo é iniciável na Lista de Tarefas ou não

Documentação do elemento

(Opcional) Campo para descrever o elemento.

Vincular bloco de programação

Para conseguir selecionar um bloco de programação no BPMN, primeiro é necessário habilitar o bloco em suas configurações e, em seguida, seleciona a função no Fluxo de trabalho.

No editor de Bloco de programação servidor, abra a janela de Propriedades do Bloco de Programação, selecione a propriedade Exibir no Bpmn (destaque 1 da figura 3.4.1) e clique em Salvar. Essa opção só está disponível nos blocos de programação do tipo Servidor.

Figura 3.4.1 - Ativando opção de exibição no Bpmn

 

No fluxo de trabalho, você pode vincular a execução da função do Bloco de programação em alguns elementos específicos, por exemplo, uma tarefa de serviço, como mostrado abaixo.

Figura 3.4.2 - Implementação de Expressão para vincular um Blockly

 

1. Arraste e selecione uma Tarefa, em seguida, clique no ícone da ferramenta.
2. Selecione a opção Tarefa de Serviço.
3. Selecione a opção "Expressão" da propriedade Implementação na aba lateral Geral.

Figura 3.4.3 - Selecionando o bloco a ser vinculado

 

4. Clique no botão Editar da propriedade Expressão na aba lateral Geral
5. Na janela de seleção do bloco de programação, clique no botão "...".
6. Selecione a função do bloco de programação que será executado na tarefa.

 

Após selecionar a opção "Expressão" no campo Implementação (3 da figura 3.4.2), os elementos que permitem a seleção de funções de blocos de programação irão exibir o botão "Editar" no campo Expressão (4 da figura 3.4.3).

Listeners

Adiciona "ouvintes" para o elemento ou o processo. Os listeners podem ser uma classe Java, uma expressão, um script ou uma expressão delegada.

Entrada/saída

Permite criar parâmetros de entrada e saída. Cada parâmetro necessita de um nome, definição de tipo (Texto, Lista, Mapa ou Script) e valor.

Extensões

Nesta aba é possível adicionar novas propriedades, informando a chave e seu valor.

Glossário

Nesse tópico, reveremos algumas palavras chaves e seus conceitos.

  • Instância de Processo: uma instância de processo ocorre durante a inicialização do processo. Caso outro usuário inicialize o mesmo processo, uma nova instância será criada e o processo terá duas instâncias em execução.

  • Chave de negócio: uma forma de identificação para instância de processos, inserida no momento de iniciar uma nova instância de processo.

  • Proprietário, Responsável e Candidato:

    • Proprietário é o usuário que cria o fluxo de trabalho.

    • Responsável é o usuário (ou grupo de usuários) encarregado da tarefa.

    • Candidato é o usuário (ou grupo de usuários) que pode assumir a responsabilidade caso o usuário/grupo responsável atual não seja mais o encarregado.

  • Estado de delegação: Informa o estado atual da tarefa.

  • Variáveis: função básica que mantém os dados durante o processo em execução.

Variáveis

O BPM trabalha com o conceito das variáveis no processo, que tem como função básica adicionar dados ao processo em execução.

Uma variável consiste basicamente em um nome e um valor.

Escopos de variáveis

Todas as entidades que podem ter variáveis e são chamadas de escopos de variáveis. Estas são execuções, que incluem instâncias de processo e tarefas.

Em geral, as variáveis são acessíveis nos seguintes casos:

  • Instanciando processos.

  • Entregando mensagens.

  • Transições do ciclo de vida da tarefa, como conclusão ou resolução.

  • Configurando / obtendo variáveis de fora.

  • Definindo / obtendo variáveis.

  • Expressões no modelo de processo.

  • Scripts no modelo de processo.

  • Consultas variáveis (históricas).

Tipos suportados

O mecanismo do processo suporta os seguintes tipos de valores variáveis (Figura 4).

Figura 4 - Tipos de variáveis aceitos

 

Dependendo do valor real de uma variável, um tipo diferente é atribuído. Entre os tipos disponíveis, existem nove tipos de valores primitivos:

  • boolean: Instâncias de java.lang.Boolean

  • bytes: Instâncias de byte[]

  • short: Instâncias de java.lang.Short

  • integer: Instâncias de java.lang.Integer

  • long: Instâncias de java.lang.Long

  • double: Instâncias de java.lang.Double

  • date: Instâncias de java.util.Date

  • string: Instâncias de java.lang.String

  • nullnull referências

Variável de processo

Uma variável que você pode definir o valor dela ao modelar o processo.

Variável de execução

Variável que é criada na execução, por exemplo, ao executar um bloco o seu resultado irá para uma variável de execução.

Variável de tarefa

Por exemplo, ao criar uma tarefa com uma caixa de entrada para o usuário inserir o número de uma nota fiscal, ao digitar, esse número vira uma variável de tarefa.

Painel de Gerenciamento

Após instalar o plugin Workflow, seu projeto web terá acesso a uma aplicação standalone que contém um painel completo para o gerenciamento do fluxo do BPMN. Essa aplicação permite administrar usuários, gerenciar e executar as tarefas com base no perfil dos usuários, alterar e manipular o fluxo e possui um dashboard das tarefas.

Por ser uma aplicação standalone, você não poderá realizar nenhuma modificação ou personalização na estrutura/layout do Painel de Gerenciamento. Porém, todos os recursos disponíveis nessa aplicação podem ser replicados e adaptados em seu projeto Cronapp através da API Workflow, disponível nos blocos de programação Servidor (Figura 2.2).

Figura 5 - Página inicial da aplicação do BPM

Acesso a aplicação

Para acessar a interface web do Cronapp BPM, insira "/app/" após o domínio da sua aplicação. Vale reforçar que é necessário incluir a "/" ao final do endereço.

Exemplo: https://<meu domínio>/app/

A função de bloco de programação da figura abaixo pode ser utilizada para abrir a aplicação standalone do Cronapp BPM. Utilize o bloco Abrir URL e configure o parâmetro URL de destino concatenando o bloco Obter URL Base mais o texto "/app/".

Figura 5.1 - Exemplo de função para abrir a aplicação BPM

 

Para voltar para a página inicial da aplicação Cronapp, clique no ícone do usuário (1 da Figura 5.2) para abrir a opção Voltar para a aplicação.

Figura 5.2 - Retorno a aplicação cronapp

 

Por padrão, o painel de gerenciamento possui 3 subaplicações: Painel de controle, Lista de tarefas e Administrar (Figura 5.2). O Administrador pode definir quem pode visualizar e/ou acessar as aplicações Painel de controle e Lista de tarefa.

Painel de Controle

Ao acessar o painel de controle, sua interface (Figura 5.3) irá apresentar o número de instâncias de processos em execução, incidentes em aberto, tarefas humanas em aberto, a quantidade total de definições de processo e a quantidade total de implementações. A barra de navegação do painel de controle apresenta as seguintes funcionalidades para o painel de controle: Processos, Tarefas, Implantações e Nova definição de processo.

Figura 5.3 - Painel de Gerenciamento

 

  1. Processos: redireciona para a tela com todos os processos implementados.

  2. Tarefas: redireciona para a tela com o resumo de todas as tarefas existentes.

  3. Implantações: redireciona para a tela que apresenta uma visão geral das implantações.

  4. Nova definição de processo: abre a janela do BPMN.

  5. Nome do usuário: apresenta as opções para voltar ao painel de gerenciamento e para aplicação.