Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

No exemplo acima, o código JavaScript faz o acesso ao Dataset "group", que é um Dataset interno do sistema, e retorna a quantidade de linhas disponíveis (rowsCount). O objeto DatasetFactory é a "porta de entrada" para o acesso a qualquer Dataset. Além de permitir a carga de um Dataset, ela também permite navegar entre todos os Datasets disponíveis no sistema.

O acesso a um Dataset é feito através do método getDataset do objeto DatasetFactory, onde seus parâmetros são:

  • Nome do Dataset: Nome do Dataset a ser buscado;
  • Campos: Array com os campos do Dataset que serão retornados. Caso seja informado null, retorna todos os campos do Dataset;
  • Constraints: Array com os condições de busca do Dataset. Caso seja informado null, retorna todos os registros do Dataset.
  • Ordem: Array com os campos para ordenação dos registros do Dataset. Caso seja informado null, retorna os registros com a ordenação padrão.

Já para a criação das constraints é utilizado o método createConstraint do objeto DatasetFactory, onde seus parâmetros são:

  • Campo: Nome do campo que será filtrado;
  • Valor Inicial: Valor inicial da faixa de valores do filtro
  • Valor Final: Valor final da faixa de valores do filtro
  • Tipo: Tipo da condição, podendo ser:
    • MUST: indica que todos os registros do Dataset devem satisfazer a esta condição.
    • SHOULD: indica que os registros do Dataset podem ou não atender à condição. Esse tipo é mais comum quando se necessita que um mesmo campo tenha valores A ou B (onde cada um será uma condição de busca com tipo SHOULD).
    • MUST_NOT: indica que nenhum dos registros pode satisfazer a condição.

Exemplo:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
function doTest2() {
	//Monta as constraints para consulta
	var c1 = DatasetFactory.createConstraint("activeVersion", "true", "true", ConstraintType.MUST);
	var c2 = DatasetFactory.createConstraint("publisherId", "adm", "adm", ConstraintType.MUST_NOT);
	var c3 = DatasetFactory.createConstraint("documentType", "1", "1", ConstraintType.SHOULD);
	var c4 = DatasetFactory.createConstraint("documentType", "2", "2", ConstraintType.SHOULD);
	var constraints   = new Array(c1, c2, c3, c4);
	
	//Define os campos para ordenação
	var sortingFields = new Array("documentPK.documentId");
	
	//Busca o dataset
	var dataset = DatasetFactory.getDataset("document", null, constraints, sortingFields);
	
	for(var i = 0; i < dataset.rowsCount; i++) {
		log.info(dataset.getValue(i, "documentPK.documentId"));
	}
}

 

Existe uma constraint em especial que é utilizada para limitar o número de registros na consulta do SQL chamada de sqlLimit. Então é possível definir o número máximo de registros que uma consulta SQL pode retornar, porém o número de registros pode ser menor que o esperado, devido algumas validações que são feitas após o retorno dos dados. Por exemplo: O sqlLimit tem um valor 100 e é feita uma consulta em um serviço de dados de um fichário, esta consulta retornará os 100 registros, porém após isso são executadas validações para verificar se a ficha está ativa e se o usuário corrente tem permissão para visualizar os dados fazendo com que o retorno possa ser menor que 100. Para o sqlLimit é utilizada a seguinte sintaxe:

 

DatasetFactory.createConstraint("sqlLimit", "10", "10", ConstraintType.MUST);

 

Obs.: O valor considerado no sqlLimit é sempre o initialValue, o que for informado no finalValue não será considerado.

Existe outra constraint especial utilizada somente para acesso a dataset de fichários, ela indica se ao buscar o serviço de dados devem ser retornados APENAS os dados das fichas do fichário principal. A constraint é a onlyMainCards e por padrão seu valor é false, ou seja, são retornados os dados das fichas do fichário principal e sub-fichários.

 

DatasetFactory.createConstraint("onlyMainCards", "true", "true", ConstraintType.MUST);

 

Obs.: O valor considerado no onlyMainCards é sempre o initialValue, o que for informado no finalValue não será considerado.

 

ATENÇÃO: As constraints podem ser utilizadas apenas para datasets internos. Datasets customizados não aceitam constraints, pelo fato de os dados serem externos, não sendo possível aplicar o filtro em sua origem. Para datasets customizados o tratamento de filtro deve ser feito no retorno dos dados, manipulando o objeto retornado e retirando as informações desnecessárias.

 

  • Ordenação: Vetor com a lista de campos que será utilizada para ordenação dos registros no Dataset.
Exemplificação de uso de Constraints

Considere os valores da tabela abaixo sendo utilizadas como um serviço de dados a partir de uma definição de formulário para exemplificação dos exemplos:

CódigoNomeCidade
1Javier SpivaSão Paulo
2Cody BallowRio de Janeiro
3Javier NaramoreSão Paulo
4Max NeviusRio de Janeiro
5Noemi RoigerSão Paulo
6Lonnie CadwalladerRio de Janeiro
7Lorrie SpeceBrasília

Verifique os exemplos de retorno de dados abaixo:

Deck of Cards
startHiddenfalse
effectDuration0.5
idconstraintsamples
historyfalse
effectTypefade
Card
defaulttrue
id1
labelExemplo 1

Para retornar somente as linhas que os códigos estejam entre 1 á 4 usar a seguinte constraint:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
var c1 = DatasetFactory.createConstraint("Código", "1", "4", ConstraintType.MUST);

Retorno:

CódigoNomeCidade
1Javier SpivaSão Paulo
2Cody BallowRio de Janeiro
3Javier NaramoreSão Paulo
4Max NeviusRio de Janeiro
Card
id2
labelExemplo 2

Para retornar somente as linhas que os nomes sejam "Noemi Roiger", "Javier Naramore" e "Lonnie Cadwallader" ou que a cidade seja Brasília, usar as seguintes constraints:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
var c1 = DatasetFactory.createConstraint("nome", "Noemi Roiger", "Noemi Roiger", ConstraintType.SHOULD);
var c2 = DatasetFactory.createConstraint("nome", "Javier Naramore", " Javier Naramore", ConstraintType.SHOULD);
var c3 = DatasetFactory.createConstraint("nome", "Lonnie Cadwallader", "Lonnie Cadwallader", ConstraintType.SHOULD);
var c4 = DatasetFactory.createConstraint("cidade", "Brasília", "Brasília", ConstraintType. SHOULD);

Retorno:

CódigoNomeCidade
3Javier NaramoreSão Paulo
5Noemi RoigerSão Paulo
6Lonnie CadwalladerRio de Janeiro
7Lorrie SpeceBrasília
Card
id3
labelExemplo 3

Para retornar todas as linhas exceto onde a cidade seja Brasília, usar a seguinte constraint:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
var c1 = DatasetFactory.createConstraint("cidade", "Brasília", "Brasília", ConstraintType.MUST_NOT);

Retorno:

CódigoNomeCidade
1Javier SpivaSão Paulo
2Cody BallowRio de Janeiro
3Javier NaramoreSão Paulo
4Max NeviusRio de Janeiro
5Noemi RoigerSão Paulo
6Lonnie CadwalladerRio de Janeiro

Via JavaScript em formulário

...