Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

ermite definir o fluxo de saída de uma atividade de forma automática, onde:

  • numAtiv: número da atividade destino;
  • listaColab: lista (do tipo String) dos usuários que receberão a tarefa;
    • Deve ser passada a matricula dos usuários que receberão a tarefa.
    • Se a atividade destino for automática ou um evento intermediário que não possui usuário, deve ser informado "System:Auto" no lugar da matrícula.
  • obs: observação da tarefa;

     

    function beforeStateEntry(sequenceId){
        if(sequenceId == 4){
            var users = new java.util.ArrayList();
             
            //Caso a próxima atividade seja uma automática utilizar users.add("System:Auto");
            users.add("adm");
            hAPI.setAutomaticDecision(7, users, "Decisao tomada automaticamente pelo Fluig");
             
        }
    }
    Método
    Especificação
    getCardValue("nomeCampo")

    Permite acessar o valor de um campo do formulário do processo, onde:

    • nomeCampo: nome do campo do formulário. 

     

    Dica
    titleDica

    6666

    setCardValue("nomeCampo", "valor")

    Permite definir o valor de um campo do formulário do processo, onde:

    • nomeCampo: nome do campo do formulário;
    • valor: valor a ser definido para o campo do formulário.
    setAutomaticDecision(numAtiv, listaColab, "obs") 
    getActiveStates()Retorna uma lista das atividades ativas do processo.
    getActualThread(numEmpresa, numProcesso, numAtiv)

    Retorna a thread da atividade que está ativa, lembrando que em caso de atividades paralelas, retorna 0, 1, 2 e assim sucessivamente.

    • numEmpresa: número da empresa;
    • numProcesso: número da solicitação;
    • numAtiv: número da atividade.
    Exemplo de uso para esta função:

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function afterTaskCreate(colleagueId) {
     
        var nrProxAtividade = getValue("WKNextState");
        if (nrProxAtividade == "5"){ //atividade entre paralelas
     
            var data = new Date();
            var numEmpresa = getValue("WKCompany");
         
            //seta o dia, mês (Janeiro é 0) e ano
            data.setDate(20);
            data.setMonth(10);
            data.setFullYear(2010);
            
            // Recupera o numero da solicitação
            var numProcesso = getValue("WKNumProces");
         
            // Seta o prazo para as 14:00
            hAPI.setDueDate(numProcesso, hAPI.getActualThread(numEmpresa, numProcesso, nrProxAtividade), colleagueId, data, 50400);
        }
    }
    setDueDate(numProcesso, numThread, "userId", dataConclusao, tempoSeg)

    Permite alterar o prazo de conclusão para uma determinada atividade do processo, onde:

    • numProcesso: número da solicitação;
    • numThread: número da thread (normalmente 0, quando não se utiliza atividades paralelas);
    • userId: o usuário responsável pela tarefa;
    • dataConclusao: a nova data de conclusão;
    • tempoSeg: tempo que representa a nova hora de conclusão, calculado em segundos após a meia-noite.

     

    Recomendamos a utilização deste método no evento afterTaskCreate, pois será executado logo após a criação da tarefa. Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function afterTaskCreate(colleagueId) {
        var atividade = getValue('WKCurrentState');
        // Atividade de sequência 5 é a da tarefa criada e que vou alterar o prazo de conclusão
        if (atividade == 5) {
            // Recuperando a data informada no campo do formulário
            var prazoFormulario = hAPI.getCardValue('prazoConclusao');
            if (prazoFormulario != undefined && prazoFormulario != '') {
                var numeroDaSolicitacao = getValue('WKNumProces');
                var threadDaSolicitacao = 0; // Normalmente 0, quando não for atividade paralela
                var responsavelPelaTarefa = colleagueId;
                 
                /* Nesse caso o formato da data salva pelo formulário no exemplo é DD/MM/AAAA, mas isso pode variar de acordo com a formatação utilizada, 
                   mudando assim as posições das informações dentro do array */
                 
                /* Extrai os dados da data do formulário para um array, para posteriormente transformar em data do Javascript */
                var arrayPrazoConclusao = prazoFormulario.split("/");
                var dia = arrayPrazoConclusao[0]; // Posição 0 do array é o dia
                var mes = arrayPrazoConclusao[1] - 1; // Posição 1 do array é o mês (Subtraímos 1 porque na data do Javascript o mês vai de 0 a 11)
                var ano = arrayPrazoConclusao[2]; // Posição 2 do array é o ano
                 
                var horaDoPrazo = (24*60*60) - 1; /* A hora é em milisegundos, e esse cálculo tem resultado de 23:59:59, ou seja, 
                o prazo de conclusão vai ser até o último segundo do dia informado no formulário */
                 
                // Cria a data no Javascript
                var dataDoPrazo = new Date();
                dataDoPrazo.setDate(dia);
                dataDoPrazo.setMonth(mes);
                dataDoPrazo.setFullYear(ano);
                 
                // Altera o prazo de conclusão
                hAPI.setDueDate(numeroDaSolicitacao, threadDaSolicitacao, responsavelPelaTarefa, dataDoPrazo, horaDoPrazo);
            }
        }  
    }
    transferTask(transferUsers, "obs", int numThread)

    Transfere uma tarefa de um usuário para outro(s) usuário(s).

    • transferUsers: lista (do tipo String) de usuários;
    • obs: a observação;
    • numThread: sequência da thread, em caso de atividades paralelas.
    transferTask(transferUsers, "obs")

    Transfere uma tarefa de um usuário para outro(s) usuário(s). Este método não pode ser usado em processos com atividades paralelas:

    • transferUsers: lista (do tipo String) de usuários;
    • obs: a observação.
    startProcess(processId, ativDest, listaColab, "obs", completarTarefa, valoresForm, modoGestor)

    Inicia uma solicitação workflow, onde:

    • processId: código do processo;
    • ativDest: código da atividade de destino;
    • listaColab: lista (do tipo String) de usuários;
    • obs: texto da observação;
    • completarTarefa: indica se deve completar a tarefa (true) ou apenas salvar (false);
    • valoresForm: um Mapa com os valores do formulário do processo;
    • modoGestor: indica que o usuário iniciará a solicitação como gestor (true) ou que o usuário iniciará a solicitação apenas como solicitante (false).

    Retorna um mapa com informações da solicitação criada. Entre elas, o iProcess que é o número da solicitação criada.

    setColleagueReplacement(userId)

    Seta um usuário substituto, onde:

    • userId: código do usuário substituto.
    setTaskComments("userId", numProcesso,  numThread, "obs")

    Define uma observação para uma determinada tarefa do processo, onde:

    • userId: usuário responsável pela tarefa;
    • numProcesso: número da solicitação de processo;
    • numThread: é o número da thread (normalmente 0, quando não se utiliza atividades paralelas);
    • obs: a observação.

    Atenção

     

    É recomendado utilizar em eventos do tipo 'after', pois o comentário será criado no histórico da solicitação, então é necessário que já exista uma movimentação do processo para atribuir este comentário.

    getCardData(numProcesso)

    Retorna um Mapa com todos os campos e valores do formulário da solicitação.

    • numProcesso: número da solicitação de processo.

     

     

    Para formulários pai e filho, os campos são identificados da seguinte forma: campo1___1, sendo campo1 o nome atribuído ao campo através da tag name do campo HTML + ___ (3 underlines) + número sequencial do registro.

     

    Por exemplo, em um formulário de nota fiscal com os seguintes campos:

    • Formulário pai:
      • Número da Nota - numNota;
    • Formulário filho:
      • Código do item - codItem;
      • Descrição do item - desItem;
      • Quantidade do item - qtdItem;

    O retorno do Mapa seria:

    • numNota = 99999
    • codItem___1 = 91
    • desItem___1 = Caneta
    • qtdItem___1 = 100
    • codItem___2 = 92
    • desItem___2 = Lápis
    • qtdItem___2 = 200
    • codItem___3 = 93
    • desItem___3 = Borracha
    • qtdItem___3 = 150
    getAdvancedProperty("propriedade")

    Retorna o valor da propriedade avançada de um processo.

    • propriedade: nome da propriedade avançada. 
    calculateDeadLineHours(data, segundos, prazo, periodId)

    Calcula um prazo a partir de uma data com base no expediente e feriados cadastrados no produto passando o prazo em horas:

    • data: data inicial (tipo Date);
    • segundos: quantidade de segundos após a meia noite;
    • prazo: prazo que será aplicado em horas (tipo int);
    • periodId: código de expediente.  

    Retorno: Array de Objeto, onde a primeira posição do array é a data e a segunda a hora.

    Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function afterTaskCreate(colleagueId) {
        var data = new Date();
     
        //Calcula o prazo
        var obj = hAPI.calculateDeadLineHours(data, 50000, 2, "Default");
        var dt = obj[0];
        var segundos = obj[1];
     
        //Recupera o numero da solicitação
        var processo = getValue("WKNumProces");
     
        //Altera o prazo do processo
        hAPI.setDueDate(processo,0,colleagueId, dt, segundos);
    }
    calculateDeadLineTime(data, segundos, prazo, periodId)

    Calcula um prazo a partir de uma data com base no expediente e feriados cadastrados no produto passando o prazo em minutos:

    • data: data inicial (tipo Date);
    • segundos: quantidade de segundos após a meia noite;
    • prazo: prazo que será aplicado em minutos (tipo int);
    • periodId: código de expediente.

    Retorno: Array de Objeto, onde a primeira posição do array é a data e a segunda a hora.

     Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function afterTaskCreate(colleagueId) {
        var data = new Date();
        //Calcula o prazo
        var obj = hAPI.calculateDeadLineTime(data, 50000, 120, "Default");
        var dt = obj[0];
        var segundos = obj[1];
     
        //Recupera o numero da solicitação
        var processo = getValue("WKNumProces");
     
        // Altera o prazo do processo
        hAPI.setDueDate(processo,0,colleagueId, dt, segundos);
    }
    getUserTaskLink(numAtiv)

    Permite buscar o link para movimentação de uma determinada atividade, e utilizá-lo para enviar um e-mail com template personalizado, por exemplo.

    • numAtiv: número da atividade
    Retorno: link para movimentação da solicitação.

     

    Atenção

     

    Este método não retorna link para atividades que ainda não foram criadas, ou seja, não pode ser utilizado em eventos como afterTaskComplete(colleagueId,nextSequenceId,userList) para obter o link da atividade com "nextSequenceId".

    Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function afterTaskCreate(colleagueId) {
        var sequenceId = getValue("WKCurrentState");
        if (sequenceId == 2) {
            var destinatarios = new java.util.ArrayList();
            destinatarios.add(colleagueId);
     
            var parametros = new java.util.HashMap();
            parametros.put("WDK_CompanyId", getValue("WKCompany"));
            parametros.put("WDK_TaskLink", hAPI.getUserTaskLink(sequenceId));
     
            notifier.notify(getValue("WKUser"), "tplCustomizado", parametros, destinatarios, "text/html");   
        }
    }
    createAdHocTasks(workflowProcessInstanceId, sequenceId, assunto, detalhamento, listatvidadesAhoc)

    Permite a criação de atividades adhoc dentro dos eventos do fluig

    • workflowProcessInstanceId: número da solicitação workflow no qual se deseja criar as tarefas;
    • sequenceId: código de sequencia da atividade de SubprocessoAdhoc;
    • Assunto: assunto da listagem das tarefas que será repassado ao formulário de atividade ad-hoc;
    • Detalhe: texto com o detalhamento das atividades em questão. Esse texto também será repassado para o formulário da atividade ad-hoc;
    • listaAtividadesAdhoc: é a lista de atividades contento o que, quando e quem executará as tarefas ad-hoc.

    Atenção

     

    Certifique-se que o sequenceId é a sequência da atividade ad-hoc. Normalmente esta atividade contém o símbolo do sub-processo comum acompanhado do identificador "~", conforme exemplo abaixo :

    A sequência pode ser consultada a partir do plugin fluig Designer verificando o campo código ao visualizar as propriedades da atividade de subprocesso ad-hoc.

     

    Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function beforeStateEntry(sequenceId){
        //lista das tarefas
        var adHocTasks = new Array();
        // variavel com o código da solicitação do processo.
        var process = getValue("WKNumProces");
         
        //criando uma tarefa
        var task = { name:"nome da tarefas", responsible:"adm", dueDate:"10/10/2014"};
        //adicionando a tarefa criada para a lista de tarefas
        adHocTasks.push(task);
         
         
        // process    = numero da solicitacao
        // sequenceId = codigo processstate da atividade que tem o processo ad-hoc
        // meeting    = nome do assunto em questao
        // detalhe    = detalhamento do assunto
        // adHocTasks   lista te tarefas
        
        hAPI.createAdHocTasks(process, sequenceId, "Assunto das tarefas""Detalhamento do assunto ", adHocTasks);
          
         
    }
    listAttachments()

    Retorna a lista de anexos do processo.

    DocumentDto[ ]

    Veja aqui os paramêtros do objeto DocumentDto.

    Atenção

     

    O formulário do processo não é retornado, apenas anexos do tipo GED e Workflow.

     

    Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function beforeTaskSave(colleagueId, nextSequenceId, userList) {
        var attachments = hAPI.listAttachments();
        var hasAttachment = false;
     
        for (var i = 0; i < attachments.size(); i++) {
            var attachment = attachments.get(i);
            if (attachment.getDocumentDescription() == "fluig.pdf") {
                hasAttachment = true;
            }
        }
     
        if (!hasAttachment) {
            throw "Attachment not found!";
        }
    }
    publishWorkflowAttachment(documento)

    Permite publicar anexos workflow da solicitação no GED do fluig, onde:

    • documento: anexo workflow a ser publicado no GED.

    Atenção

     

    É obrigatório informar o id da pasta destino do documento através do método setParentDocumentId, conforme o exemplo abaixo.

     

    Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function beforeStateEntry(sequenceId){
        if (sequenceId == 4) {
            var calendar = java.util.Calendar.getInstance().getTime();
            var docs = hAPI.listAttachments();
            for (var i = 0; i < docs.size(); i++) {
                var doc = docs.get(i);
                 
                if (doc.getDocumentType() != "7") {
                    continue;
                }
                 
                doc.setParentDocumentId(27);
                doc.setVersionDescription("Processo: " + getValue("WKNumProces"));
                doc.setExpires(false);
                doc.setCreateDate(calendar);
                doc.setInheritSecurity(true);
                doc.setTopicId(1);
                doc.setUserNotify(false);
                doc.setValidationStartDate(calendar);
                doc.setVersionOption("0");
                doc.setUpdateIsoProperties(true);
                 
                hAPI.publishWorkflowAttachment(doc);
            }
        }
    }

    attachDocument(documentId)

     

    Permite anexar documentos do GED a solicitação workflow, onde:

    • documentId: código do documento a ser anexado a solicitação.

    Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function beforeStateEntry(sequenceId) {
        var docList = [44, 46, 135];
         
        if (sequenceId == 2) {
            for (var i = 0; i < docList.length; i++) {
                var docId = docList[i];
                hAPI.attachDocument(docId);
            }; 
        }
    }

    getAvailableStatesDetail(companyId, userId, processId, processInstanceId, threadSequence)

    Retorna detalhes das atividades disponíveis para seleção.

    Parâmetros:

    • companyId: código da empresa;
    • userId: id do usuário;
    • processId: código do processo;
    • processInstanceId: número da solicitação;
    • threadSequence: indica se existe atividade paralela no processo. Se não existir o valor é 0 (zero), caso exista, este valor pode ser de 1 a infinito, dependendo da quantidade de atividade paralelas existentes no processo.

    Retorno: ProcessStateDto[].

    getChildrenInstances(processInstanceId)

    Retorna uma lista com os números das solicitações filhas, onde:

    • processInstanceId: número da solicitação pai.

    Exemplo:

     

    function beforeStateEntry(sequenceId){
    if (sequenceId == 5) {
        var numProcess = getValue("WKNumProces");
     
        // Busca a Lista com o número da solicitação dos filhos
        var childrenProcess = hAPI.getChildrenInstances(numProcess);
     
        for (var i = 0; i < childrenProcess.size(); i++) {
            // Busca os dados do formulário da solicitação filha
            var childCardData = hAPI.getCardData(childrenProcess.get(i));
     
            // Replica um dado do formulário da solicitação filha para o formulário da solicitação pai
            var obs = childCardData.get("obs");
            hAPI.setCardValue("obs", obs );
            }
        }
    }

     

     

    getParentInstance(processInstanceId)

    Retorna o número da solicitação pai, onde:

    • processInstanceId: número da solicitação filha.

    Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function beforeStateEntry(sequenceId) {
        if (sequenceId == 2) {
            var numProcess = getValue("WKNumProces");
        
            // Busca o número da solicitação pai
            var parentProcess = hAPI.getParentInstance(numProcess);
      
            // Busca os dados do formulário da solicitação pai
            var parentCardData = hAPI.getCardData(parentProcess);
      
            // Replica um dado do formulário da solicitação pai para o formulário da solicitação filha
            var cnpj = parentCardData.get("cnpj");
            hAPI.setCardValue("cnpj", cnpj);
        }
    }
    addCardChild(tableName, cardData)

    Adiciona um filho no formulário pai e filho do processo, onde:

    • tableName: nome da tabela filha onde será criado o filho;
    • cardData: mapa com os campos do filho e seus valores.

    Exemplo:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    function beforeStateEntry(sequenceId) {
        if (sequenceId == 4) {
            var childData = new java.util.HashMap();
            childData.put("matricula""0041");
            childData.put("nome""João Silva");
            childData.put("cpf""44455889987");
            hAPI.addCardChild("funcionarios", childData);
        }
    }

    ...