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:
A partir do fluig 1.4.9, é possível acompanhar a execução dos eventos pelo novo componente loading. Com este acompanhamento, é possível apresentar mensagens para o usuário tomar conhecimento das rotinas que estão sendo executadas quando a solicitação é encaminhada para a próxima atividade. Essa ferramenta também pode ser muito útil para o desenvolvedor identificar pontos de baixa performance nos desenvolvimentos realizados sob a plataforma.
Para a utilização desta funcionalidade, basta utilizar o trecho loading.setMessage(String message) na implementação do evento, conforme exemplo no trecho de código abaixo:
1 2 3 4 5 6 7 8 9 10 | function validateForm(form){ loading.setMessage( "Validando campos de formulário" ); if (form.getValue( 'nome' ) == null || form.getValue( 'nome' ) == '' ) { throw "Campo nome não está preenchido" ; } loading.setMessage( "" ); } |
Assim, durante a execução deste evento, a mensagem definida na sua implementação será exibida na tela para o usuário acompanhar, conforme imagem abaixo:
Atenção
Por padrão, todos os eventos executados são informados em tela, como por exemplo: "Executando validateForms", "Executando afterStateEntry" ou "Executando createDataset", mesmo se atribuída uma mensagem usando este método.
A partir do fluig 1.5.8, é possível configurar a adição de complementos extras para solicitações workflow. Também é possível definir um evento chamado checkComplementsPermission aonde é 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 } } |
Atenção
Evento disparado após a criação ou modificação nas configurações de um determinado processo.
Importante
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 |
É executada 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; } |
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: