Versão atual:

[Erro] Consulta a dataset está entrando em loop

Olá, bom dia,

Estou com o seguinte erro:

Criei um dataset que a partir de uma consulta SQL do RM retorna alguns registros; Quando consulto esse dataset através do Eclipse, os registros carregam normalmente, porém, quando realizo a consulta através de um evento do processo, a consulta entra em loop e não carrega nenhum resultado. Vale ressaltar, que já realizei testes não passando nenhum parâmetro no Fields e amarrando o filtro do dataset, e mesmo assim entrou em loop.

Código do dataset:

function createDataset(fields, constraints, sortFields) {

    log.info("INICIO CONSULTA UNIDADE");

    if (fields != null) {
        CODCOLIGADA = fields[0];
        log.info("INTEGRAÇÃO WEBSERVICE rm >>> CODCOLIGADA " + CODCOLIGADA);
        IDPS = fields[1];
        log.info("INTEGRAÇÃO WEBSERVICE rm >>> IDPS " + IDPS);
        NUMEROINSCRICAO = fields[2];
        log.info("INTEGRAÇÃO WEBSERVICE rm >>> NUMEROINSCRICAO " + NUMEROINSCRICAO);
    }
    else {
        CODCOLIGADA = 47;
        IDPS=1;
        NUMEROINSCRICAO=22;
    }

    var INTEGRADOR = "mestre";
    log.info("#1 "+INTEGRADOR);
    var SENHA = "senha";
    //log.info("#2 "+SENHA);
    var NOME_SERVICO = "wsConsultaSQL";
    log.info("#2 "+NOME_SERVICO);
    var CAMINHO_SERVICO = "com.totvs.WsConsultaSQL";
    log.info("#3 "+CAMINHO_SERVICO);

    var PARAMS ="CODCOLIGADA="+CODCOLIGADA+";"+"IDPS="+IDPS+";"+"NUMEROINSCRICAO="+NUMEROINSCRICAO;

    var servico = ServiceManager.getService(NOME_SERVICO);
    log.info("#4 "+servico);
    var instancia = servico.instantiate(CAMINHO_SERVICO);
    log.info("#5 "+instancia);
    var ws = instancia.getRMIwsConsultaSQL();
    log.info("#6 "+ws);
    var serviceHelper = servico.getBean();
    log.info("#7 "+serviceHelper);
    var authService = serviceHelper.getBasicAuthenticatedClient(ws,"com.totvs.IwsConsultaSQL",INTEGRADOR, SENHA);
    log.info("#8 "+authService);
    var result = authService.realizarConsultaSQL("TOTVS.PS.COMPL", 47, "S", PARAMS);
    log.info("#9 "+result);
    var JSONObj = org.json.XML.toJSONObject(result);
    log.info("#10 "+JSONObj);
    var dados = JSONObj.get("NewDataSet").get("Resultado");

    log.info("#11 "+dados);

    var cdUnidade;

    if (dados.isNull(0)) {
        row = dados;
        cdUnidade = row.has("UNIDADE") ? row.get("UNIDADE") : "";
        log.info("#12.1 "+cdUnidade);
    } else {
        for (var i = 0; i < dados.length(); i++) {
            var registro = dados.get(i);
            cdUnidade = registro.get("UNIDADE");
            log.info("#12.2 "+cdUnidade);
        }
    }


    var COLUNAS = new Array("CODUNIDADE", "NOMEUNIDADE"); 

    log.info("#13 "+COLUNAS);
    var dataset = DatasetBuilder.newDataset();
    log.info("#14 "+dataset);

    for (var i=0; i < COLUNAS.length; i++ ) {    
        dataset.addColumn(COLUNAS[i]);
    }

    log.info("#15 DEPOIS DO FOR");

    var PARAMS2 = "CODTABELA=UNIDADES;CODCLIENTE="+cdUnidade;
    //var PARAMS2 = "CODTABELA=UNIDADES;CODCLIENTE=01";

    var result2 = authService.realizarConsultaSQL("TOTVS.PS.UNIDADE", 47, "S", PARAMS2);
    log.info("#16 "+result2);
    var JSONObj2 = org.json.XML.toJSONObject(result2);
    log.info("#17 "+JSONObj2);
    var dados2 = JSONObj2.get("NewDataSet").get("Resultado");

    log.info("#18 "+dados2);

    if (dados2.isNull(0)) {
        row = dados2;
        dataset.addRow(new Array(row.has("CODCLIENTE") ? row.get("CODCLIENTE") : "",
                row.has("DESCRICAO") ? row.get("DESCRICAO") : ""));
    } else {
        for (var i = 0; i < dados2.length(); i++) {
            var registro = dados2.get(i);
            dataset.addRow(new Array(registro.get("CODCLIENTE"), registro.get("DESCRICAO")));
        }
    }

    return dataset;
}

Acompanhando o log, notei que a consulta entra em loop no trecho var result = authService.realizarConsultaSQL("TOTVS.PS.COMPL", 47, "S", PARAMS);

Evento que chama o dataset:

function beforeStateEntry(sequenceId){
    if (sequenceId == 7) {
        var CODUSUARIOPS = hAPI.getCardValue("CODUSUARIOPS");
        var fields = new Array(CODUSUARIOPS);
        var datasetDados = DatasetFactory.getDataset("ds-rm-dados-candidato", fields, null, null);

        if (datasetDados.rowsCount>0) {
            for (var h = 0; h < datasetDados.rowsCount; h++) {
                hAPI.setCardValue("DATANASCIMENTO", datasetDados.getValue(h, "DTNASCIMENTO"));
                hAPI.setCardValue("UF", datasetDados.getValue(h, "ESTADO"));
                hAPI.setCardValue("MUNICIPIO", datasetDados.getValue(h, "CIDADE"));
                hAPI.setCardValue("CPF", datasetDados.getValue(h, "CPF"));
                hAPI.setCardValue("FONE", datasetDados.getValue(h, "TELEFONE1"));
                hAPI.setCardValue("MAIL", datasetDados.getValue(h, "EMAIL"));
            }
        }

        var CPF = hAPI.getCardValue("CPF");
        var NOMECURSO = hAPI.getCardValue("CURSO");
        var fields = new Array(CPF, NOMECURSO);
        var datasetFormacoes = DatasetFactory.getDataset("ds-rm-formacoes-candidato", fields, null, null);

        if (datasetFormacoes != null) {
            hAPI.setCardValue("JACURSOU", 'sim');
        }
        else {
            hAPI.setCardValue("JACURSOU", 'nao');
        }

        hAPI.setCardValue("UNIDADEFORMACAO", 'CAMPINAS');
        var CODCOLIGADA = hAPI.getCardValue("COLIGADA");
        var IDPS = hAPI.getCardValue("IDPS");
        var NUMEROINSCRICAO = hAPI.getCardValue("NUMEROINSCRICAO");
        var fields = new Array(CODCOLIGADA, IDPS, NUMEROINSCRICAO);
        var datasetUnidade = DatasetFactory.getDataset("ds-rm-unidadeformacao-candidato", fields, null, null);

        if (datasetUnidade.rowsCount>0) {
            for (var h = 0; h < datasetUnidade.rowsCount; h++) {
                hAPI.setCardValue("UNIDADEFORMACAO", datasetUnidade.getValue(h, "NOMEUNIDADE"));
            }
        }
    }
}

Att,

Gabriel Firmino

Versão (1):

Ver a versão formatada

[Erro] Consulta a dataset está entrando em loop

Comentário

new question