Dataset Sincromizado com Constraints

Ola Amigos,

Desenvolvi um DS sincronizado, mas de forma alguma consigo aplicar o constraints ..já vasculhei a documentação de cima a baixo ... quando eu chamo o DS ele nem passa pelo 'createDataset' .. o que acham que pode estar errado ?


function defineStructure() {

    addColumn("EMPRESA");
    addColumn("COD_CBO");
    addColumn("DESCRICAO");

    setKey(["EMPRESA", "COD_CBO", "DESCRICAO"]);
    addIndex(["COD_CBO"]);
    addIndex(["COD_CBO", "DESCRICAO"]);

}

function onSync(lastSyncDate) {

    var servicoURL = "http://meusrv/FUNCAO_C8Z?cUniEmp=01";
    var myApiConsumer =  oauthUtil.getGenericConsumer("","", "", "");  
    var result = myApiConsumer.get(servicoURL);   

    var ds_cbo = DatasetBuilder.newDataset();

    if(result== null || result.isEmpty()){
        ds_cbo.addOrUpdateRow(["NOK", "Erro ao comunicar ao consultar o BANCOS"]);    
    }else{                        
        try{        
            var objdata = JSON.parse(result);
            for (var obj in objdata){
                 ds_cbo.addOrUpdateRow(["01" ,String(objdata[obj].Cod_Cbo), objdata[obj].Descricao]);
            };
        } catch (e) {
            ds_cbo.addOrUpdateRow(["NOK", e.toString()]);
        }        
    }

    return ds_cbo;    

}


function createDataset(fields, constraints, sortFields) {

    log.info(">>> entrando no ds");

    //Cria as colunas

    var dataset = DatasetBuilder.newDataset();

    dataset.addColumn("EMPRESA");
    dataset.addColumn("COD_CBO");
    dataset.addColumn("DESCRICAO");

    var datasetPrincipal = DatasetFactory.getDataset("ds_get_cbo_jorn", null, null, null);

    for (var i = 0; i < datasetPrincipal.rowsCount; i++) {
        log.info(">>>" + datasetPrincipal.getValue(i, "COD_CBO"));
    }

    return dataset;

}

Quando você sincroniza um dataset ele não executa mais o createDataset, somente o onSync conforme o agendamento configurado. Qual constraint você está tentando executar? Depois de sincronizado a constraint é executada diretamente como um “where” na tabela do dataset sincronizado

Ola Diego, eu preciso passar uma constrain por um campo tipo ‘zoom’ … então minha ideia seria criar um DS jornalizado que seria atualizado toda a noite e aproveitar esse mesmo DS passando um filtro por um campo do tipo ‘zoom’

Neste caso Diego, eu teria que criar um DS jornalizado e depois criar um DS normal com as constraints que eu preciso mas apontando para este DS jornalizado ? essa seria a lógica ?

vc pode trazer todos os dados sem constraint, depois quando vc chama o dataset vc passa a constraint como se fosse um dataset interno

Ola Robson, exatamente isso que tinha imaginado … vou precisar criar um DS jornalizado para ele espelhar os dados nas tabelas do fluig, e a partir dai criar um outro DS ‘normal’ apontando para esse DS jornalizado e ai aplicando os filtro, é correto isso ?!

vc pode criar um dataset sincronizado trazendo todos os registros. depois na sua função que chama o dataset vc pode usar esse mesmo dataset sincronizado. vc nao precisa criar constraints dentro do dataset sincronizado, pois ele funciona da mesma forma que um dataset interno do fluig, ou seja, todos os campos viram constraints de forma automatica, ou seja, vc pode fazer filtros no dataset sincronizado em qualquer campo desejado, sem necessidade de criar um segundo dataset igual vc comentou

Ola Robson, muito obrigado … com seu esclarecimento consegui fazer o filtro funcionar …