Como Consultar Dataset ao salvar um formulário evento beforeTaskSave ?

Olá a todos,

Estou tentado fazer uma consulta a um dataset quando clico no botão salvar/enviar através do evento beforeTaskSave:

function beforeTaskSave(colleagueId, nextSequenceId, userList) {

    var Codigo = hAPI.getCardValue("CODIGO");

    log.warn("BEFORE-TASK");

    log.info("CODIGO: " + Codigo);

    log.info("NEXT-SEQUENCE-ID" + nextSequenceId);

    log.info("CODIGO-LENGTH" + Codigo.length());

    if (nextSequenceId == 5 && Codigo.length() == 9) {

       log.warn("PASSOU NO IF !!!");

       var c1 = DatasetFactory.createConstraint("CODIGO", "%" + Codigo + "%", "%" + Codigo + "%", ConstraintType.SHOULD);

       var constraints1 = new Array(c1);

       var fields1 = new Array("CODIGO");

       var dataset4 = DatasetFactory.getDataset("SolicitacaoDeVerba", fields1, constraints1, null);

       log.warn(dataset4);

       if (dataset4.values.length() <= 0)
          $("#CODIGO").val(Codigo + "001");
    }

}

Porém o mesmo apresenta erro no momento em que eu tento fazer esse if if (dataset4.values.length() <= 0)

Abaixo segue o erro do log:

(default task-66) [Solicitação: 280] - Processo: SolicitacaodeVerbas - versão: 25 - Usuário Executor : allan.silva - Gestor : Não - Substituto : Não - Estado atual : 4 - Estado destino : 5 - Executando evento : beforeTaskSaveERRO AO EXECUTAR SCRIPT -> NOK - sun.org.mozilla.javascript.internal.EvaluatorException: Java class "[[Ljava.lang.Object;" has no public instance field or method named "__noSuchMethod". (#18) in at line number 18

compartilhar
  • Acredito que o seu erro seja no "$("#CODIGO").val(Codigo + "001");" e não no IF, pois o evento é realizado em back-end e o comando jQuery não irá ser reconhecido. Nessa caso você vai ter que usar o hAPI.setCardValue(). Abraço!

    Kanaãm Luz Romero Rodrigues   21 de Mar de 2018
  • Boa Tarde Kanaãm,

    Alterei o meu IF e deixei dessa forma

    if (dataset4.values.length() <= 0) {

    log.warn("PASSOU NO IF 2 !!!");

    }

    mesmo assim ele ainda continua dando erro na linha do IF.

    Allan Santos   21 de Mar de 2018
  • Ahhh, você está usando .length() como se fosse um método, porém length é um atributo do objeto. Tire os parenteses. Abraço!

    Kanaãm Luz Romero Rodrigues   21 de Mar de 2018
  • Kanaãm, deu certo aqui cara muito obrigado.

    Só fiquei com uma dúvida, o retorno no dataset, é um array, como eu faço pra percorrer ele no beforetaskSave ?

    Allan Santos   21 de Mar de 2018
  • Allan, você também pode usar dataset4.rowsCount para saber o número de registros retornados do dataset. Para percorrer o resultado do dataset você pode usar o método getValue(): for (var i = 0; i < dataset4.rowsCount; i++) { log.info(dataset4.getValue(i, "CODIGO")); }

    Diogo Boegershausen   21 de Mar de 2018
Mostrar todos os 6 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags beforetasksave datasets consultar erro ou faça a sua própria pergunta.