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:

 

 

Acompanhamento de eventos

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

 

 

checkComplementsPermission

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

 

 

Eventos

afterReleaseProcessVersion

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();
    log.info(processInfo + "\n");
}

 

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


beforeMovementOptions

É 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
numStatenúmero da atividade atualint


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);
    }
}

 

beforeSendValidate

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
numStatenúmero da atividade atualint
nextStatenúmero da atividade destinoint


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;
 }

 

Liberar nova versão do processo

Quando liberar uma nova versão do processo configurado, o evento executado será:

 

Salvar nova solicitação

Quando iniciar uma solicitação pelo menu Processos, é evento executado será:

Acionando o botão Salvar da solicitação, os eventos executados são: 

 

Criar nova solicitaçã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:

 

Visualizar solicitação

Quando acessar a Central de Tarefas, abrir uma solicitação já iniciada, os eventos executados serão:

 

Salvar solicitação

Quando acionar o botão Salvar a solicitação, os eventos executados serão:

 

Movimentar solicitação

Quando movimentar a solicitação acionando o botão Enviar, os eventos executados serão:

 

Movimentar para subprocesso

Quando movimentar a solicitação para subprocesso acionando o botão Enviar, os eventos executados serão:

 

Finalizar solicitação

Quando finalizar a solicitação acionando o botão Enviar, os eventos executados serão:

 

Cancelar solicitaçã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: