Cruzar valores entre Dataset's

Boa Tarde,

Gostaria de saber se é posssivel e no caso de como fazer um Dataset com os valores de outros 2 Dataset's.

Exemplo:

Possuo o Código abaixo puxando o valor apenas de um Dataset chamado (PrimeiroDataset) e filtrando atraves de Constraints.


function createDataset(fields, constraints, sortFields) { 
    log.info("##########:"+constraints);
    var dataset = DatasetBuilder.newDataset();    

    dataset.addColumn("Empresa"); 
    dataset.addColumn("Fornecedor"); 
    dataset.addColumn("NotaFiscal"); 
    dataset.addColumn("DataLancamento");
    dataset.addColumn("DataVencimento");
    dataset.addColumn("Lanc Financeiro");
    dataset.addColumn("Nr Solicitacao");


    var returnFields = new Array("drop_emp", "numfornecedor", "numnf", "datalancFiltro","dataFiltro", "nmsolic");
    var datasetInterno = DatasetFactory.getDataset("ds_form_Lancamento_NF", returnFields, constraints, null);

    for (var i = 0; i < datasetInterno.rowsCount; i++){
        dataset.addRow(new Array(datasetInterno.getValue(i, "drop_emp"), datasetInterno.getValue(i, "numfornecedor"), datasetInterno.getValue(i, "numnf"), datasetInterno.getValue(i, "datalancFiltro"),datasetInterno.getValue(i, "dataFiltro"), datasetInterno.getValue(i, "chkboxfinanc"), datasetInterno.getValue(i, "nmsolic"))); }

    return dataset; 

}

Nesse primeiroDataset, possuo uma coluna chamada "documentId", preciso cruzar o resultado dessa coluna "documentId"(primeiroDataset) com outro Dataset (workflowProcess), na qual o valor de "documentId"(primeiroDataset), se encontra na coluna "cardDocumentId"(workflowProcess), mas preciso retornar o valor da coluna "workflowProcessPK.processInstanceId"(workflowProcess).

Espero ter conseguido explicar corretamente.

Att.

Boa tarde Carlos,

vc cruzaria esses dados passando eles nas constraints das consultas:


function createDataset(fields, constraints, sortFields) {
    log.info("##########:"+constraints);
    var dataset = DatasetBuilder.newDataset();    

    dataset.addColumn("Empresa"); 
    dataset.addColumn("Fornecedor"); 
    dataset.addColumn("NotaFiscal"); 
    dataset.addColumn("DataLancamento");
    dataset.addColumn("DataVencimento");
    dataset.addColumn("Lanc Financeiro");
    dataset.addColumn("Nr Solicitacao");


    var returnFields = new Array("drop_emp", "numfornecedor", "numnf", "datalancFiltro","dataFiltro", "documentId");
    var datasetInterno = DatasetFactory.getDataset("ds_form_Lancamento_NF", returnFields, constraints, null);

    for (var i = 0; i < datasetInterno.rowsCount; i++){
        var docId = datasetInterno.getValue(i, "documentId");

        var cdi = DatasetFactory.createConstraint("cardDocumentId", docId, docId, ConstraintType.MUST);
        var wpConstraints   = new Array(cdi);
        var wpReturnFields = new Array("workflowProcessPK.processInstanceId");
        var datasetWP = DatasetFactory.getDataset("workflowProcess", wpReturnFields, wpConstraints, null);

        var processInstanceId = datasetWP.getValue(0, "workflowProcessPK.processInstanceId");
        dataset.addRow(new Array(datasetInterno.getValue(i, "drop_emp"), datasetInterno.getValue(i, "numfornecedor"), datasetInterno.getValue(i, "numnf"), datasetInterno.getValue(i, "datalancFiltro"),datasetInterno.getValue(i, "dataFiltro"), datasetInterno.getValue(i, "chkboxfinanc"), processInstanceId)); 
     }

    return dataset; 
}

Diogo, muito agradecido pela ajuda, funcionou, porém agora dependendo do valor das constraints ele da o erro “TypeError: Cannot read property ‘length’ of undefined”.

Diogo, consegui arrumar aqui. Apenas adicionei um outro laço FOR, assim sendo o código ficou da seguinte maneira.


function createDataset(fields, constraints, sortFields) { 

    var dataset = DatasetBuilder.newDataset();    

    dataset.addColumn("Empresa"); 
    dataset.addColumn("Fornecedor"); 
    dataset.addColumn("NotaFiscal"); 
    dataset.addColumn("DataLancamento");
    dataset.addColumn("DataVencimento");
    dataset.addColumn("Lanc Financeiro");
    dataset.addColumn("Nr Solicitacao");


    var returnFields = new Array("drop_emp","numfornecedor","numnf","datalancFiltro","dataFiltro","chkboxfinanc","documentid");
    var datasetInterno = DatasetFactory.getDataset("ds_form_Lancamento_NF", returnFields, constraints, null);

    for (var i = 0; i < datasetInterno.rowsCount; i++){

        var docId = datasetInterno.getValue(i, "documentid");
        var wpConstraints = new Array(DatasetFactory.createConstraint("cardDocumentId", docId, docId, ConstraintType.MUST));
        var wpReturnFields = new Array("workflowProcessPK.processInstanceId");
        var wpDataset = DatasetFactory.getDataset("workflowProcess", wpReturnFields, wpConstraints, null);
        for (var j = 0; j < wpDataset.rowsCount; j++){

            var processInstanceId = wpDataset.getValue(j, "workflowProcessPK.processInstanceId");

        }
        dataset.addRow(new Array(datasetInterno.getValue(i, "drop_emp"), datasetInterno.getValue(i, "numfornecedor"), datasetInterno.getValue(i, "numnf"), datasetInterno.getValue(i, "datalancFiltro"),datasetInterno.getValue(i, "dataFiltro"), datasetInterno.getValue(i, "chkboxfinanc"), processInstanceId)); 

    }

    return dataset; 

}