Exemplo de uso do DataSourceExecutor
Introdução
Alguns desenvolvedores tem a necessidade de executar várias consultas SQL no contexto de uma única transação. O motivo disso pode ser para reduzir a quantidade de round-trips ou garantir o isolamento entres as consultas que executam de forma concorrente.
O DataSource só permite a execução de uma consulta por vez, logo para atender a necessidade citada acima foi criada a classe DataSourceExecutor.
Pré-requisitos
O DataSource e o DataSourceExecutor fazem parte da biblioteca UWL, do Framework. Para utilizá-la fora do Framework, você deve incluí-la da seguinte forma:
__includeOnce('ufs:/uwl/all.js');
Fluxo Operacional
Segue abaixo um exemplo do uso do DataSourceExecutor:
var dtse = new DataSourceExecutor();
//Adiciona o primeiro DataSource
dtse.addDataSource(
40108470 /* /products/custom/Testes/paulorogerio/datasource/Exemplo 000.ids */,
[{name: "PED_EMISSAO",value: new Date()}],
[{name: "PED_RECURSO.NOME"}]
);
//Adiciona o segundo DataSource
dtse.addDataSource(
40108470 /* /products/custom/Testes/paulorogerio/datasource/Exemplo 000.ids */,
[{name: "PED_EMISSAO",value: new Date()}],
[{name: "PED_PESSOA.NOME"}]
);
dtse.execute();
var ds1 = dtse.getDataSet(0);
var ds2 = dtse.getDataSet(1);
Segue abaixo um outro exemplo do uso do DataSourceExecutor:
//Neste exemplo passado uma instância de um DataSource para o método addDataSource()
//invés da chave.
var dtse = new DataSourceExecutor();
var dts = new DataSource(40108470 /* /products/custom/.../Exemplo 000.ids */);
dtse.addDataSource(
dts,
[{name: "PED_EMISSAO",value: new Date()}],
[{name: "PED_RECURSO.NOME"}]
);
dtse.addDataSource(
dts,
[{name: "PED_EMISSAO",value: new Date()}],
[{name: "PED_PESSOA.NOME"}]
);
dtse.execute();
var ds1 = dtse.getDataSet(0);
var ds2 = dtse.getDataSet(1);