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);