Atividades
Atividades de processos BPM
- Manuais
- Automáticas
- Gateway
- Subprocesso
- Atribuições de atividades
- Usuário/Papel indicado na variável
- Modal de confirmação
Manuais
Atividades manuais, são aquelas em que o usuário logado em seu portal terá a interação. Apenas essas atividade aparecerão para ele, é onde é configurado todos os formulários / JEX / PEX para o usuário interagir preenchendo grade, selecionando botões, escolhendo valores de uma FK, etc.
Estes campos, por sua vez, repassam informações de atividade a atividade, ao decorrer do processo. O motivo da utilização de cada tipo de Atividade se dá principalmente pela necessidade do processo, porém um fator importante que também deve ser levado em consideração é a Ordem de Execução de eventos e desvios nos processos BPM.
É ela que define, por exemplo, em qual momento deve ser utilizado um desvio normal ou um gateway. Por exemplo, se você tem um evento ao sair da atividade definindo o valor de uma variável, e essa mesma variável for utilizada na configuração de desvios lógicos da atividade, esse desvio deve ser configurado por um Gateway, pois na ordem de execução os eventos são executados após a definição dos desvios lógicos.
No desenho do fluxograma, as atividades manuais terão um pequeno ícone de usuário, informando que aquela atividade é manual, onde o usuário irá interagir com os formulários.
A seguir está descrita a ordem de execução dos processos para melhor entendimento:
Ordem de execução dos processos
Os processos BPM obedecem uma ordem de execução padrão para eventos e desvios sempre que iniciados, essa ordem será descrita abaixo:
- Ao entrar: ao entrar na atividade, são executados os seguintes eventos:
- Eventos padrão cujo Momento da Execução esteja definido como Ao entrar na atividade;
- Eventos PEX / JEX ao entrar na atividade;
- Após isso, são carregados os formulários.
- Ao sair: ao sair da atividade, são executados os seguintes eventos e desvios de processo:
- Define os caminhos/desvios configurados;
- Eventos PEX / JEX ao sair da atividade;
- Eventos padrão cujo Momento da Execução esteja definido como Ao sair da atividade.
Aba "Opções de colaboração"
A partir da versão 17.3 +, na aba "Opções de colaboração", ao clicar no botão "Mais opções" o seguinte campo é apresentado:
- Filial associada: Com este campo, os anexos incluídos no processo serão inseridos na GED_ARQUIVO com a filial configurada, tendo as seguintes possibilidades:
- Do usuário logado: Inclui a filial do usuário executor da atividade. Caso não exista nenhuma filial vinculada no cadastro de colaborador, será buscado a filial publica.
- Fixa: Inclui sempre uma filial padrão.
- Nenhuma: Nenhuma filial é vinculada ao anexo, deixando o campo zerado.
Para consultar a filial de um arquivo (além de acessar a tabela), basta acessar o GED no portal, clicar sobre o documento e em "Editar propriedades".
Automáticas
Atividades automáticas, diferentemente das atividade manuais, não possuem interação do usuário e são utilizadas apenas para execução de eventos. Como forma de boa prática, identificamos no fluxo dos processos as atividades automáticas com a cor Cinza, dessa forma o fluxograma é facilmente identificável.
Como pode ser utilizada?
Bom, em sua maioria aconselhamos que seja utilizado quando serão feito as execuções e eventos padrão do sistema. Por exemplo.
Atividade manual 1 > Atividade automática 2
Na atividade manual 1, o usuário colocaria as informações para um cadastro de colaborador por exemplo, e na atividade automática 2 estariam os eventos responsáveis por gravar essas informações na tabela, enviar e-mail para um gestor, etc.
Dessa forma, separamos as funções por atividade, facilitando no entendimento do processo e sua manutenção.
Lembrando que, atividade automáticas não executam eventos ao sair PEX / JEX. Essas funcionam apenas em atividade manuais.
Gateway
Gateways são atividades configuradas para realizar a verificação de desvios lógicos baseados em condições repassadas pelo modelador do processo.
Por exemplo, temos um processo de solicitação de compra. Caso a compra seja superior a 200 reais, uma atividade gateway é configurada para DESVIAR o usuário para outras telas. Neste caso, se for superior à 200, o desvio irá para a atividade "Aprovação do financeiro". Caso a compra seja inferior à 200, o desvio (gateway) irá para a atividade 'Realizar a compra'.
Entendemos a necessidade do desvio?
Poderia ser criado apenas uma atividade com o desvio padrão, e feito uma estrutura condicional simples, poderíamos também tornar campos visíveis dependendo do valor da compra. Porém, criando duas atividades "Aprovação do financeiro" e "Realizar compra" deixamos o fluxo mais "limpo". É também como uma boa prática, pois em cada atividade haverá eventos distintos, formulários diferentes e papeis funções diferentes.
Subprocesso
Atividades definidas como Sub processo iniciam um processo já existente na base de dados. É utilizada comumente em casos onde um processo utiliza de procedimentos comuns entre os setores.
Ex: Você está criando um processo de Agendamento de Viagem, e após configurar campos solicitando dados como destino e data da viagem, precisa solicitar os dados da reserva do carro, porém já existe um processo para isso, e você não quer criar os mesmos campos de formulário uma segunda vez.
Para casos como esse, a atividade pode ser definida como um sub processo que irá iniciar o processo de Reserva de Carro já trazendo algumas informações do processo de Agendamento de Viagem.
Após a execução do processo "Reserva de carro" o fluxo original será executado normalmente, até que o processo seja finalizado e o agendamento realizado.
Qual a diferença da atividade para o evento "Iniciar novo processo"?
A atividade de subprocesso irá criar uma instância de um novo procedimento. Enquanto essa nova instância está sendo criada, a atividade atual, onde foi configurado a atividade "Subprocesso", irá ficar parado "aguardando" a finalização
Atribuições de atividades
Agora, ao criar a atividade e ir na aba "Atribuições", há as seguintes opções disponíveis.
Utilizar permissões configuradas no processo
Poderá executar a atividade qualquer pessoa enquadrada nas permissões iniciais do procedimento
Acesso público
Usuários eventuais (não cadastrados e autenticados) poderão colaborar com a atividade mediante um link;
Para link dos processos públicos: clique aqui
Para iniciar instância de processo por URL: clique aqui
Qualquer usuário cadastrado
Qualquer usuário cadastrado, ativo e autenticado poderá executar a atividade;
Usuário que iniciou o processo
Somente o usuário que iniciou o processo poderá executar a atividade. Cenário de exemplo: No processo de "Conferência" o usuário NICOLLY iniciou o processo. Na segunda atividade, utilizando essa configuração, somente o usuário NICOLLY pode colaborar com ela.
Usuário executor da atividade
Somente usuário que executou uma determinada atividade poderá executar esta atividade. Neste caso, é necessário infornar qual atividade anterior.
Usuários indicados na variável
Somente o(s) usuário(s) indicado(s) na variável selecionada poderá(ão) executar esta atividade. Essa variável deve conter um ou mais códigos de usuários (referenciando a tabela USUARIO.IDUSUARIO) separados por vírgula. Para ver um exemplo deste uso, clique aqui.
Papel que iniciou o processo
Somente usuários do papel que iniciou o processo poderão executar a atividade. Cenário de exemplo: Na atribuição do processo foi configurado o papel função "Aprovador de investimento". Se for colocado nas próximas atividades a atribuição "Papel que iniciou o processo" apenas quem tiver o papel "Aprovador de investimento" pode colaborar com as atividades em questão.
Papeis selecionados
Permite selecionar os papéis que poderão executar a atividade pelo botão assistente, assim como nas permissões do procedimento.
Papéis indicados na variável
Somente usuário(s) do(s) papel(is) indicado(s) na variável selecionada poderão executar esta atividade. Essa variável deve ser do tipo inteiro e conter um ou mais códigos de papel função (referenciando a FUNCAO.IDBPMFUNCAO) separados por virgula; Bem semelhante ao definir "Usuários indicados na variável".
Exemplo de uso: Clique aqui.
Papel superior ao executor da atividade
Somente usuários que cumprem um papel-função superior ao papel principal do usuário que executou determinada atividade anterior poderão executar a atividade.
Papel superior do usuário indicado na variável
Somente usuários que cumprem o papel superior do papel principal do usuário indicado poderão executar a atividade.
Cenário de exemplo: No processo de "Solicitação de compra" o usuário DANIEL foi indicado em uma variável para acessar a atividade 2 e colaborar com ela.
O papel principal do DANIEL é "Financeiro". Utilizando essa atribuição, apenas quem tiver o papel superior do papel "Financeiro" pode colaborar com a atividade 3.
Usuário/Papel indicado na variável
Neste exemplo vamos falar sobre dois tipos de atribuição de processo que podem ser utilizadas no exemplo a seguir:
Em ambas atribuições este fórum pode ser utilizado, porém vamos fazer um exemplo com a atribuição "Usuário indicado na variável". Imagine o seguinte cenário:
No seu portal, há um processo de compra de itens e dependendo do valor total dessa compra, é necessário que seja direcionado a colaboração do processo para duas pessoas diferentes, de setores e papeis funções diferentes.
Para não ter que criar, por exemplo, duas atividades exatamente iguais e fazer um desvio para cada uma, vamos atribuir para a variável /*USUARIOCOLABORACAO*/ o código de determinado usuário (tabela USUARIO, coluna IDUSUARIO) que poderá colaborar com a próxima atividade, e que irá aprovar a compra ou não.
Para a atribuição do papel função na variável é referenciado a tabela FUNCAO e coluna IDBPMFUNCAO.
Crie um procedimento com a permissão "qualquer usuário cadastrado", pois todos terão acesso a este processo no portal. Na primeira atividade (Insira dados) pode-se manter a atribuição "Utilizar permissões configuradas no processo" ou "Usuário que iniciou o processo".
ATIVIDADE 1: "Insira dados"
Crie uma grade de dados com a variável /*ITENS*/ (Tipo - Grade de dados) com as seguintes colunas:
- DESCRICAO (Tipo - Texto)
- QUANTIDADE (Tipo - Inteiro)
- VALOR (Tipo - Valor)
- VALORTOTAL (Tipo - Valor)
Configure o tamanho dos campos como achar melhor.
Na coluna VALOR, crie um PEX ao sair que multiplique QUANTIDADE * VALOR e insira no campo VALORTOTAL o resultado desta conta.
Agora, na aba "Eventos" da primeira atividade, siga conforme a ordem apresentada:
Conforme já foi dito em outros conteúdos do fórum, para que o sistema interprete e salve os valores de VARIAS linhas da grade é necessário um evento que carregue todas as linhas com um "conjunto de dados".
- [Estrutura condicional - Inicio]
Crie este evento de estrutura condicional - Inicio, com o campo "Origem" do tipo "Conjunto de dados" e informando a variável da grade /*ITENS*/
- [Estrutura condicional - Retorna valor]
Em seguida, um evento de estrutura de repetição - Retorna valor, para que o sistema entenda que o valor do campo da grade VALORTOTAL, está sendo atribuído para a variável /*VALOR1*/
- [Variáveis - Operações matemáticas]
Agora, um evento de Variáveis - Operações matemáticas, para calcular o valor total da grade de dados. Crie a variável /*VALORTOTAL*/ pelo assistente
- [Estrutura condicional - Inicio]
Campo "Origem" do tipo "Condicional".
Aqui vamos fazer a condição onde o valor total das compras for maior que 100, utilizando a variável que está preenchida com o valor de toda a grade /*VALORTOTAL*/
- [Variáveis - Definir valor variável]
Este é o evento em questão, onde definimos o valor da variável /*USUARIOCOLABORACAO*/ (crie a variável do tipo Inteiro).
Como citamos lá no começo, temos que definir o valor dela de acordo com o ID do usuário que desejamos. Isto é visto na coluna IDUSUARIO da tabela USUARIO. No nosso caso, queremos que o valor da variável seja atribuído ao usuário NICOLLY, que tem o idusuario de número 4.
Pode-se atribuir um ou mais código, separados por virgulas.
- [Estrutura condicional - Fim]
Agora, vamos fazer essa mesma estrutura de eventos (Inicio, definir valor variável, fim) só que com o detalhe que, se o valor da variável /*VALORTOTAL*/ for MENOR que 100, /*USUARIOCOLABORACAO*/ seja definido para o DANIEL com o IDUSUARIO 7.
Depois de ser feito essa estrutura:
- [Estrutura condicional - Fim]
Por fim, vamos fechar a estrutura condicional do primeiro evento criado.
Estrutura final de eventos:
ATIVIDADE 2: "Aprovação da compra"
Na aba atribuição:
- Quem será o responsável por executar essa atividade? Usuários indicados na variável
- Variável: /*USUARIOCOLABORACAO*/
A primeira coisa que é validada ao ser iniciado um processo é se atribuição dele coincide com o usuário que está iniciando
Faça dois formulários:
- Aprovar compra? (Objetiva - Botões) com respostas de Sim ou Não (/*APROVACAO*/ Tipo: Inteiro)
- Justificativa (Dissertativa) (/*JUSTIFICATIVA*/ Tipo: texto longo)
Com esses passos realizados, LIBERE A VERSÃO do processo e teste no portal, se aparece para os usuários que você atribuiu.
É importante liberar a versão do processo pois quando você clica com o botão direito e em “Testar” o sistema desconsidera papéis funções.
Modal de confirmação
Na versão 18.3.0.628 foi disponibilizado um recurso no DOX Portal que permitia ao usuário responder um modal ao clicar em 'Próximo' para ir para a próxima atividade.
Para entender melhor esta melhoria, deve-se acessar o DOX estúdio e ao editar um processo:
- Aba 'Opções de colaboração' da atividade
- Parâmetro 'Habilitar modal de confirmação ao finalizar esta atividade'
Marcando o parâmetro destacado na imagem, o botão 'Configurações' estará visível. Ao acessar, o sistema irá permitir ao usuário que configure o modal de confirmação informando:
- Mensagem
- Variável motivo
- Variável retorno
No portal, ao clicar em 'Próximo' na atividade configurada, antes de mudar para a próxima atividade do procedimento, o modal de confirmação será exibido, salvando o que for descrito no campo texto na variável de MOTIVO, e a opção Sim/Não na variável de RETORNO
No log:
Observação: Ao clicar em X e não informar nada no modal, a mensagem não será exibida em log e nem as variáveis serão atualizadas para qualquer valor, mantendo o padrão vazio.