Árvore de páginas

Versões comparadas

Chave

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

...

Índice
outlinetrue
stylenone
exclude.*ndice

Datasets

O Fluig é um produto que permite disponibilizar informações provindas de várias fontes de dados através de formas variadas de apresentação. É comum que, dependendo da necessidade de cada cliente, seja necessário apresentar ou processar informações referentes a dados do próprio produto (como usuários, grupos, papéis, tarefas, etc.), dados criados pelo usuário mas gerenciados pelo produto (dados de formulários), dados externos (como entidades de um ERP) ou ainda valores fixo (como uma lista de estados ou unidades de medida).

O Fluig possui o componente Dataset que permite padronizar o acesso às informações, independente da origem dos dados, ou seja, é possível acessar informações provenientes de vários locais, como aplicativos externos, banco de dados ou mesmo das próprias funcionalidades do Fluig através de um mesmo componente. Isto significa que, uma vez que um Dataset esteja disponível no sistema, ele poderá ser invocado de qualquer parte do sistema e de forma consistente, independente da sua origem.

Um Dataset disponibiliza operações que permitem visualizar o seu conteúdo, como consultar quais são as colunas disponíveis, quantas linhas existem ou o valor de cada campo, em cada coluna, e também filtrar os valores de retorno.

O diagrama abaixo apresenta um modelo conceitual sobre os Datasets.

 

Tipos de Datasets

Atualmente existem três tipos de Datasets gerenciados pelo produto:

  • Built-in Datasets: Este tipo de Dataset permite navegar em dados das entidades do próprio Fluig, como usuários, grupos, processos ou tarefas por exemplo. Esses datasets são pré-definidos no produto e não podem ser alterados pelo usuário;
  • CardIndex Datasets: Este tipo de Dataset permite navegar nos dados existentes em formulários de uma determinada definição de formulário publicada no Fluig. Para que uma definição de formulário seja disponibilizada como Dataset, é necessário preencher o campo Nome Dataset na publicação da definição de formulário. O valor informado será utilizado para a busca do Dataset no Fluig;
  • Customized Dataset: Este tipo de Dataset permite navegar nos dados retornados por uma customização onde é possível definir as colunas do Dataset e os valores de cada um dos registros, através da codificação em JavaScript. Os Datasets customizados podem ser utilizados em uma grande gama de situações, como para definição de uma lista de valores fixos (como estados de um país) ou para extração de dados de um serviço externo (via WebServices, por exemplo).

Ainda que os Dataset possam ter origens distintas, não existe qualquer diferença sob a perspectiva do componente que fará uso deste Dataset. Isto significa, por exemplo, que se um determinado componente fizer uso de um Dataset chamado "centroCusto", o seu uso será exatamente o mesmo, independente deste Dataset ser pré-construído, baseado em definição de formulário ou customizado.

Esta característica dos Datasets representa um grande benefício para os usuários, uma vez que a fonte dos Datasets pode ser alterada sem que isto represente retrabalho nos pontos onde ele é utilizado.

Por exemplo, considere um processo workflow que precise trabalhar com uma lista de centros de custo. Em um primeiro momento, pode-se trabalhar com um Dataset customizado que monte, de forma fixa, os registros referentes a cada um dos centros de custo necessários para o usuário.

Uma vez que codificar a lista se torne pouco flexível (devido à alterações freqüentes), é possível trocar o centro de custo para que seja baseado em definição de formulário. Desde que se observe o nome dos campos do Dataset, não haverá qualquer impacto sobre o processo workflow.

Em um terceiro momento, pode-se optar por migrar o Dataset novamente para o tipo customizado, mas desta vez extraindo os centros de custo do ERP do cliente. Novamente não haverá impacto para o processo workflow (ou para os demais pontos que utilizem o Dataset), desde que se observe o nome dos campos.

Visualizando Datasets

Pelo Studio, através da visão Visualização de Dataset, é possível consultar os Datasets disponíveis bem como visualizar o seu conteúdo. Com isto é possível verificar quais os campos disponíveis, tanto para filtros quanto para acesso, bem como fazer testes sobre Datasets customizados.

O exemplo abaixo apresenta um exemplo de Dataset sendo visualizado:

Neste exemplo, é possível visualizar os campos disponíveis (conta, titulo, natureza e tipo) e os registros retornados pelo Dataset. Note que estas informações são essenciais para o uso dos Datasets, principalmente quando há necessidade de restringir os dados que queremos acessar.

...

Via pontos de customização

Quando um Dataset é acessado via um ponto de customização como eventos globais, eventos de processos, eventos de definição de formulário ou mesmo em outros Datasets, isto é feito através de chamadas JavaScript que serão executadas no lado servidor.

O exemplo abaixo apresenta um exemplo simples de chamada a um Dataset:

...

Construindo um Dataset Customizado

Um Dataset é construído a partir de um código JavaScript. Uma vez que o próprio Dataset é criado a partir de um código JavaScript, é possível fazer chamadas a outros Datasets, chamadas à serviços externos ou apenas criar o Dataset a partir de valores codificados.

No exemplo Abaixo é criado um Dataset cujo os campos e valores estão fixos no código:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
 function createDataset(fields, constraints, sortFields) {
	var dataset = DatasetBuilder.newDataset();
	  
	//Cria as colunas
	dataset.addColumn("Sigla");
	dataset.addColumn("Estado");
	dataset.addColumn("Capital");
	dataset.addColumn("Area");
	 
	//Cria os registros
	dataset.addRow(new Array("AM", "Amazonas", "Manaus", 1570746));
	dataset.addRow(new Array("PA", "Pará", "Belém", 1247690));
	dataset.addRow(new Array("MT", "Mato Grosso", "Cuiabá", 903358));
	dataset.addRow(new Array("TO", "Tocantins", "Palmas", 277621));
	dataset.addRow(new Array("PI", "Piauí", "Teresina", 251529));
	
	return dataset;
}

Para criar um novo Dataset, é utilizado o método DatasetBuilder.newDataset(). A partir do objeto criado é possível adicionar as colunas desejadas (método addColumn) bem como adicionar linhas (método addRow).

Note que a função JavaScript createDataset, que cria o Dataset, recebe como parâmetros os campos, as constraints e a ordem dos campos. Cabe ao desenvolvedor utilizar estes valores na lógica de implementação do Dataset Customizado. Caso seja desconsiderado algum destes campos, o engine que gerencia os Datasets não fará os filtros.

 

Dataset customizado de definição de formulário "pai-filho"

Para acessar informações de um "pai-filho" de uma definição de formulário pode ser utilizado o WebService "ECMDatasetService" (do próprio Fluig), um Dataset customizado (Exemplo 1), ou ainda um evento de processo ou definição de formulário (Exemplo 2). 

Bloco de código
themeEclipse
languagejavascript
titleExemplo 1
firstline1
linenumberstrue
 function()
Bloco de código
themeEclipse
languagejavascript
titleExemplo 2
firstline1
linenumberstrue
 function()

 

Utilizando um dos modelos de Dataset acima, é possível recuperar os valores "filhos" dos formulários ativos, ou seja, a última versão criada. Existem alguns parâmetros obrigatórios que devem ser passados através de constraints, onde o valor inicial e final devem ser iguais. A forma de recuperar esses valores é opcional. Segue abaixo a nomenclatura obrigatória de cada parâmetro:

ParâmetroDescrição
tablename

Atributo utilizado para nomear cada tabela filha do HTML. Exemplo:

Bloco de código
themeEclipse
languagehtml/xml
firstline1
linenumberstrue
<table border="1" tablename="tabelaProduto" addbuttonlabel="Adicionar Produto">
	<!-- Campos Filhos -->
</table>
metadata#idNúmero do formulário.
metadata#versionNúmero da versão do formulário
userSecurityId

Código do usuário que será validada a permissão no formulário

Nota

Observação: Esse parâmetro não será validado na Visualização de Datasets, visto que nessa opção é um exemplo de visualização dos dados.

Também é possível exibir a ordem dos campos filhos, para isso deve-se utilizar o campo wdk_sequence_id, sendo que este não poderá ser utilizado como nome de algum campo do formulário.

Guia de Referência de Datasets

...

RetornoMétodo e Descrição
voidaddColumn(java.lang.String colName) 
Adiciona uma coluna ao Dataset.
voidaddRow(java.lang.Object[] values) 
Adiciona uma linha ao Dataset.
java.lang.StringgetColumnName(int colNum) 
Retorna o nome de uma coluna do Dataset.
java.lang.String[]getColumnsName() 
Retorna um array com os nomes das colunas do Dataset.
intgetColumnsCount() 
Retorna a quantidade de colunas de um Dataset.
java.util.ArrayList<java.util.HashMap<java.lang.String,java.lang.Object>>getMap() 
Retorna os valores do Dataset na forma de uma lista contendo mapas, onde cada registro do Dataset corresponde a um mapa com o nome da coluna como chave.
intgetRowsCount() 
Retorna a quantidade de linhas disponíveis no Dataset.
DefaultDatasetgetSubDataset(java.lang.String field, java.lang.Object value) 
Retorna um subconjunto dos dados do Dataset, na forma de um novo Dataset.
 java.lang.ObjectgetValue(int row, int col) 
Retornao valor armazenado no Dataset, na linha e coluna passadas por parâmetro.
 java.lang.ObjectgetValue(int row, java.lang.String colName) 
Retorna o valor armazenado no Dataset, na linha passada e campo passados por parâmetro.
 java.lang.Object[][]getValues() 
Retorna todos os valores de um Dataset, na forma de um array bidimensional.
 java.sql.ResultSettoResultSet() 
Retorna um ResultSet contendo os dados do Dataset.

Third Party Trademarks

JavaScript is a trademark of Oracle Corporation.