listAttachments não está funcionando

Prezados, não consigo pegar o nome do arquivo anexado com o comando listattachments do hAPI, parece que o workflow não identifica o beforeTaskSave.

Usei este exemplo onde não anexo nada no form, ou seja, teria que retornar a mensagem Attachment not found! porem a tarefa é finalizada e nada acontece.

Preciso pegar o nome do arquivo e gravar no campo text de um formulário.



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

@Paulo, coloca um

log.info(hasAttachment);

para ver o que retorna no log.

Gabriel estou começando fluig, já tenho alguns projetos rodando de boa, porem todos que eu fiz não tive problema. Este log eu coloquei no beforeTaskSave tanto no primeiro IF quanto no segundo IF porem não vi a observação que coloquei no mesmo no arquivo de log server.log … é neste arquivo que tenho que procurar?
Neste before eu preciso colocar alguma variável de retorno para receber o conteudo do log.info?

Isso mesmo, verifique esse arquivo serve.log. Dá uma olhada nesse link também: Ferramentas de Análise de Log - TOTVS Fluig - TDN

encontrei isto no log : 2018-02-22 10:24:08,728 WARN [org.apache.activemq.artemis.core.client] (EJB ASYNC - 1308) AMQ212051: Invalid concurrent session usage. Sessions are not supposed to be used by more than one thread concurrently.: java.lang.Exception: trace

Coloque o evento assim:


function beforeTaskSave(colleagueId, nextSequenceId, userList) {
    log.info("#### TESTE BEFORE TASK SAVE ####");
    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;
        }
    }
    log.info("#### hasAttachment ####");
    log.info(hasAttachment);

    if (!hasAttachment) {
        throw "Attachment not found!";
    }
}

E depois de executar procure isso no log: #### TESTE BEFORE TASK SAVE ####

Gabriel estou o erro na tela : FLUIG INFO
Versão Fluig: fluig 1.6.1-EP5
Sistema Operacional: Windows Server 2008 R2 - 6.1
Banco de Dados: Oracle - Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
With the Automatic Storage Management option
Agente: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0

WORKFLOW INFO
Ação: Iniciar Solicitação
Usuário: 00054973 (Paulo Gonzo)

STACK DO ERRO
com.fluig.bpm.exception.event.BPMBeforeTaskSaveException: Erro ao executar o evento beforeTaskSave do processo: Attachment not found!

Então deu certo

Sim gravou o log com o retorno “false”, porem anexei ao form o arquivo fluig.pdf e mesmo assim deu false na variável hasAttachment, isso que não entendi?

@Paulo,

Coloque o evento assim:


function beforeTaskSave(colleagueId, nextSequenceId, userList) {
    log.info("#### TESTE BEFORE TASK SAVE ####");
    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;
        }
    }
    log.info("#### hasAttachment ####");
    log.info(hasAttachment);

    if (!hasAttachment) {
        throw "Attachment not found!";
    }
}

E depois de executar procure isso no log: #### TESTE BEFORE TASK SAVE ####

Coloque isso para aparecer no log, pra ver o nome do arquivo que ele está trazendo, antes do IF:

log.info(attachment.getDocumentDescription());

Gabriel obrigado pela ajuda!

Por nada! Deu certo agora?

Deu sim … Valeu mesmo!

Que bom @Paulo! Abraço