Os eventos de um processo são um conjunto de scripts carregados pela API de workflow. Tais scripts são desenvolvidos com o uso da linguagem JavaScript e chamados ao longo da execução do processo em momentos predeterminados, como por exemplo a criação da solicitação do processo ou a entrada em uma nova atividade.
A implementação dos eventos do processo é realizada pelo fluig Studio, sendo necessário já existir um projeto fluig com pelo menos um diagrama de processo.
Para criar um novo evento do processo, clicar com o botão direito do mouse no projeto, acessar a opção New e, em seguida, a opção Other. No assistente aberto, selecionar a opção "Script evento workflow", presente na pasta fluig, e clicar no botão Next. Na nova tela, selecionar qual o evento que será criado e relacionar ele a um processo já existente. Para finalizar, clicar no botão Finish:
Evento disparado após a criação ou modificação nas configurações de um determinado processo.
Caso o processo possua o evento "afterReleaseVersion" implementado, este evento global será desconsiderado na liberação de novas versões do processo em questão |
Abaixo segue um exemplo de como implementar esse evento:
1 2 3 4 5 6 7 8 9 | function afterReleaseProcessVersion(processXML){ var pdv = getValue( "ProcessDefinitionVersionDto" ); var processInfo = "\n### Nova versão de processo liberada: ###" ; processInfo += "\n User: " + getValue( "WKUser" ); processInfo += "\n processDescription: " + pdv.getProcessDescription(); processInfo += "\n processId: " + pdv.getProcessId(); processInfo += "\n version: " + pdv.getVersion(); } |
São disponibilizadas algumas propriedades referentes ao processo que esta sendo liberado, porém somente para consulta através do método getValue.
Propriedade | Descrição | Tipo |
WKCompany | Código da empresa | long |
WKUser | Usuário logado | String |
ProcessDefinitionVersion | Objeto com propriedades da versão do processo alterada | ProcessDefinitionVersionDto |
É executado quando o usuário pressiona o botão Movimentar antes de serem exibidas as opções de movimentação do processo.
Parâmetros da função
Propriedade | Descrição | Tipo |
---|---|---|
numState | número da atividade atual | int |
Exemplo de implementação
var beforeMovementOptions = function (numState){ console.log( "-beforeMovementOptions-" ); console.log( "numState: " + numState); console.log( "valor campo Email: " +document.formulario.email.value); if (document.cad01.nome.value === 'false' ){ return false ; } if (document.cad01.nome.value !== '' ){ throw ( "Erro " + document.formulario.nome.value); } } |
Ocorre antes da solicitação ser movimentada, após já ter sido selecionada a atividade destino, o usuário e demais informações necessárias à solicitação.
Parâmetros da função
Propriedade | Descrição | Tipo |
---|---|---|
numState | número da atividade atual | int |
nextState | número da atividade destino | int |
Exemplos de implementação
var beforeSendValidate = function(numState,nextState){ console.log("-beforeSendValidate-"); console.log("numState: " + numState); console.log("nextState: " + nextState); throw("Erro Xyz"); } |
var beforeSendValidate = function (numState,nextState){ console.log( "-beforeSendValidate-" ); console.log( "numState: " + numState); console.log( "nextState: " + nextState); var isOk = confirm( "Deseja realmente enviar o processo ?" ); return isOk; } |
Ocorre após a liberação de uma versão do processo.
Parâmetro:
Descrição | Tipo |
---|---|
XML com a definição do processo | string |
Ocorre antes da entrada em uma nova atividade.
Utilize este evento para realizar validações que ocasionalmente possam resultar no bloqueio da movimentação do processo. Para suspender a movimentação e exibir uma mensagem de alerta para o usuário, utilize o comando 'throw', conforme exemplo abaixo: throw "Erro ao movimentar solicitação"; |
Parâmetro:
Descrição | Tipo |
---|---|
Sequência da atividade | Integer |
Ocorre antes que o usuário receba uma tarefa.
Parâmetro:
Descrição | Tipo |
---|---|
Matrícula do usuário | string |
Ocorre após o usuário receber uma tarefa.
Parâmetro:
Descrição | Tipo |
---|---|
Matrícula do usuário | string |
Ocorre após a entrada em uma nova atividade.
Este evento não retorna erros para a tela naturalmente. Caso ocorra um erro durante a execução do afterStateEntry, ele será ignorado. Se o mesmo erro resultar no encerramento da transação (por exemplo, causando o timeout de transação ou uma exceção que force Rollback) a mensagem de transação abortada será apresentada em tela ao invés do erro esperado. |
Parâmetro:
Descrição | Tipo |
---|---|
Sequência da atividade | Integer |
É o último evento a ser executado. Possui integração com Analytics, podendo enviar dados específicos de processos Workflow.
Para maiores detalhes sobre a utilização desse evento, acesse Guia de Implementação Fluig Analytics.
Ocorre após montada a lista de tarefas disponíveis para o usuário a partir da tarefa atual.
Exemplo:
function validateAvailableStates(iCurrentState, stateList) { // Código: 1 - Descrição: Atividade inicial // Código: 2 - Descrição: Atividade ordem 3 // Código: 3 - Descrição: Atividade ordem 2 // Código: 4 - Descrição: Atividade ordem 1 // stateList atual: [2,3,4] var stateArray = new Array(); if (iCurrentState == 1) { stateList.clear(); stateArray.push(4,3,2); } stateArray.forEach(function(code) { stateList.add(new java.lang.Integer(code)); }); // stateList reordenado: [4,3,2] return stateList; } |
Parâmetro:
Tipo | Descrição | Tipo |
---|---|---|
iCurrentState | Sequência da atividade atual | Integer |
stateList | Lista das sequências dapublishWorkflowAttachments atividades | List<Integer> |
Ocorre antes de salvar as informações selecionadas pelo usuário.
Parâmetros:
Descrição | Tipo |
---|---|
Usuário corrente | string |
Sequência da próxima atividade | Integer |
Lista de usuários destino | List<String> |
Ocorre logo após a criação de um novo processo.
Parâmetro:
Descrição | Tipo |
---|---|
Número do novo processo | Integer |
Ocorre antes que o usuário complete uma tarefa, porém as informações de próxima tarefa e usuários destino já foram salvas.
Diferente dos demais eventos do tipo before, este evento não dispara suas validações ao servidor, fazendo com que o sistema não pare a movimentação da atividade quando o mesmo lança uma exceção. |
Parâmetros:
Descrição | Tipo |
---|---|
Usuário corrente | string |
Seqüência da próxima atividade | Integer |
Lista de usuários destino | List<String> |
Ocorre após o usuário completar uma tarefa, porém as informações de próxima tarefa e usuários destino já foram salvas.
Parâmetros:
Descrição | Tipo |
---|---|
Usuário corrente | string |
Seqüência da próxima atividade | Integer |
Lista de usuários destino | List<String> |
Ocorre antes da saída de uma atividade.
Parâmetro:
Descrição | Tipo |
---|---|
Seqüência da atividade | Integer |
Ocorre após a saída de uma atividade.
Parâmetro:
Descrição | Tipo |
---|---|
Seqüência da atividade | Integer |
Ocorre quando um processo é "setado" na API.
A propriedade WKCompletTask não deve ser utilizada neste evento, pois quando ele é executado o produto ainda não tem a informação se atividade foi ou não completada. |
Parâmetro:
Descrição | Tipo |
---|---|
Número do processo | Integer |
Se refere a um evento global que ocorre após a movimentação da solicitação e antes de enviar as notificações.
Para mais detalhes consulte a página Desenvolvimento de eventos - On Notify.
Através dele é possível determinar se o usuário corrente do processo poderá ou não adicionar complementos mesmo com permissionamento ligado na modelagem do processo. Este evento possui acesso a todas as propriedades dos processos workflow (quando disponíveis) bem como acesso a hAPI, FLUIG e seus métodos.
O exemplo abaixo irá procurar o usuário corrente no dataset de colleagueGroups. Caso o usuário não esteja neste grupo não será possível para este usuário adicionar complementos extras.
function checkComplementsPermission() { var user = getValue("WKUser"); var company = getValue("WKCompany"); var group = "Auditoras"; var Id = DatasetFactory.createConstraint('colleagueGroupPK.colleagueId', user, user, ConstraintType.MUST); var group = DatasetFactory.createConstraint('colleagueGroupPK.groupId', group, group, ConstraintType.MUST); var company = DatasetFactory.createConstraint('colleagueGroupPK.companyId', company, company, ConstraintType.MUST); var colleagueGroup = DatasetFactory.getDataset('colleagueGroup', null, new Array(Id, group, company), null); if (colleagueGroup != null && colleagueGroup.getRowsCount() == 1) { return true; } else { return false } } |
|
Ocorre quando um sub-processo é criado.
Parâmetro:
Descrição | Tipo |
---|---|
Número do sub-processo | Integer |
Ocorre após finalizada a solicitação.
Parâmetro:
Descrição | Tipo |
---|---|
Número do processo | Integer |
Ocorre antes do cancelamento da solicitação.
Parâmetros:
Descrição | Tipo |
---|---|
Usuário corrente | string |
Número do processo | Integer |
Ocorre após o cancelamento da solicitação. É recomendado não disparar exceções neste método, pois o cancelamento já foi realizado.
Parâmetros:
Descrição | Tipo |
---|---|
Usuário corrente | string |
Número do processo | Integer |
Quando liberar uma nova versão do processo configurado, o evento executado será:
Quando iniciar uma solicitação pelo menu Processos, é evento executado será:
Acionando o botão Salvar da solicitação, os eventos executados são:
Quando iniciar uma solicitação pelo menu Processos, é evento executado será:
Após criada a solicitação e acionado o botão Enviar, os eventos executados serão:
Quando acessar a Central de Tarefas, abrir uma solicitação já iniciada, os eventos executados serão:
Quando acionar o botão Salvar a solicitação, os eventos executados serão:
Quando movimentar a solicitação acionando o botão Enviar, os eventos executados serão:
Quando movimentar a solicitação para subprocesso acionando o botão Enviar, os eventos executados serão:
Quando finalizar a solicitação acionando o botão Enviar, os eventos executados serão:
Quando usuário acessar solicitação já iniciada na Central de Tarefas para Cancelamento, os eventos executados serão:
Quando acionar o botão Cancelar Solicitação, os eventos executados serão: