Erro ao acessar atividade

Em 2 atividades do fluxo aparece a mensagem de erro no log:

2018-03-14 11:53:42,519 ERROR [com.datasul.technology.webdesk.customization.CustomizationManager] (default task-33) [Solicitação: 512] - Processo: RD-Melhoria_Processo - versão: 25 - Usuário Executor : 000001 - Gestor : Não - Substituto : Não - Estado atual : 94 - Executando evento : displayFieldsERRO AO EXECUTAR SCRIPT -> NOK - sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.util.NoSuchElementException (<Unknown source>#793) in <Unknown source> at line number 793 2018-03-14 11:53:42,566 ERROR [com.datasul.technology.webdesk.forms.business.CardIndexJSListener] (default task-33) Erro ao executar o evento displayFields não foi implementado para o fichário 44 na versão 22000 mensagem: sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.util.NoSuchElementException (<Unknown source>#793) in <Unknown source> at line number 793.

Nas demais atividades, o fluxo segue normalmente. Logo que vai abrir o formulário, aparece o alerta de problema no displayFields e gera o erro acima no log.

Coincidência ou não, estas 2 atividades possuem o mesmo nome, mas em fluxos diferentes (códigos diferentes no fluxo).

Encontrei algo relacionado ao erro NoSuchElementException, que informava que não haviam itens a seguir para que o iterator pudesse usar o next, mas não consegui encontrar onde poderia estar causando isto, visto que nas demais atividades, o código no fonte é o mesmo e corre tudo ok.

Alguem saberia o que pode estar acontecendo?

    case 94:    
var processoHistory = consult_dataset_process_history(numrd, Now_State)

var movimento = processoHistory.getValue(0,"processHistoryPK.movementSequence");

    var processo = consult_dataset_process(numrd, movimento);            
        var prazoDataset = processo.getValue(0, "deadline");        
        var dataprazo = sdf.format(prazoDataset);
        form.setValue('txprazodp', dataprazo);


            if(gestor == "true"){

                arr = ["txprazodp"];

            }else{

                var arr = ["rbanaldp", "txanaldp" ];

                form.setValue('txrespadp', colaborador.getValue(0, "colleagueName"));
                form.setValue('txdataadp', dataAtual);
                form.setValue('txcodrespadp', getValue('WKUser'));


            }

        var mapaForm = new java.util.HashMap();

mapaForm = form.getCardData();
        var it = mapaForm.keySet().iterator();

        while (it.hasNext()) {

            var key = it.next();

            for (var i = 0; i < arr.length; i++) {

                if (key == arr[i]) {                                        
                    form.setEnabled(key, true);
                    //if(it.hasNext()){

                        var key = it.next(); //***********LINHA 793**********

                    //}
                } else {

                    form.setEnabled(key, false);
                }

            }
        }


        break;
compartilhar
  • O que tem na linha 793?

    Claudio Neto   14 de Mar de 2018
  • Coloquei ali no código, como comentário... var key = it.next(); //*LINHA 793**

    Thiago Silva   14 de Mar de 2018
  • O problema não é só porque está estourando seu objeto? Você colocou seu for dentro do seu while. O While garante que quando não houver mais nenhum campo, ele saia do loop, mas seu for não tem nenhuma validação assim, então está estourando. Esse if que vc tinha não funcionava e impedia isso?

    Claudio Neto   14 de Mar de 2018
  • É que ele estaria verificando junto do array (var arr) a quantidade e comparando os valores...se igual, ativaria o campo. Removendo o for, ele não liberaria nada, pois não entraria no if (key == arr[i])

    Thiago Silva   14 de Mar de 2018
  • Ok, mas o problema é o fato de vc estar dando um .next() dentro do For. Você não precisa dele, pq fora do for você já pegou o valor que precisa. Agora dentro do for apenas compara com o arr[i].

    Acho que se tirar essa linha fora seu código já funciona.

    Claudio Neto   14 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 erro displayfields ou faça a sua própria pergunta.