Histórico da Página
...
Este guia tem o objetivo de apresentar o conceito de DatasetsDataset, suas possíveis parametrizações e sua configuração e importância na plataforma fluigimportância no TOTVS Fluig Plataforma.
Pré-requisitos
...
Para que se tenha uma compreensão completa destas informações, alguns conhecimentos são considerados pré-requisitos, entre eles:
- Visão geral sobre o fluiga plataforma TOTVS Fluig
- Visão geral sobre integração de sistemas
Nota | ||
---|---|---|
|
Datasets
A partir das atualizações 1.6.5 Liquid, 1.7.0 Lake e 1.7.1 Crystal Lake, os select passados por constraint em dataset serão bloqueados pelo serviço. Orientamos a leitura da documentação Datasets acessando banco de dados externo que contém um exemplo da correta utilização do procedimento. |
Datasets
...
A plataforma Fluig O fluig é uma plataforma que permite disponibilizar informações provindas de várias fontes de dados através de formas variadas de apresentação, dependendo da necessidade de cada cliente. Esse recurso é atendido pelo componente Dataset, que padroniza o acesso às informações, independente da origem dos dados. É possível apresentar ou processar informações referentes a:
...
Um Dataset disponibiliza operações que permitem visualizar o seu conteúdo, viabilizam sua consulta como: consultar quais são as colunas disponíveis, quantas quantos registros foram retornados na consulta, os valores de cada campo, e também filtrar os valores de retorno.
O diagrama abaixo apresenta um modelo conceitual sobre os Datasets.
Tipos de Datasets
...
Existem três tipos de Datasets datasets gerenciados pela plataforma: internos, simples e avançados:
Internos: permitem
navegar emacessar dados das entidades do
próprio fluig (TOTVS Fluig Plataforma, como usuários, grupos, processos ou tarefas, por exemplo
) ou em, e também os dados existentes em formulários publicados
no fluig. Acesse aqui para conhecer os datasets internospelos usuários (cada formulário criado via plataforma cria um dataset interno, com a opção de dar o nome para o dataset de formulário).
Painel Confira aqui mais detalhes sobre os datasets internos que acessam dados das entidades da plataforma.
Simples: realizam consulta em dados
de sistemas terceirosprovindos de API, de forma simplificada e sem codificação, por isso podem ser utilizados em uma grande gama de situações, por exemplo:
definição de uma lista de valores fixos (como estados de um país) ouextração de dados de um serviço externo (via WebServices, por exemplo). A plataforma pode gerar a integração sem qualquer tipo de codificação, sendo necessário apenas informar o endereço e o método do Webservice que contém as informações.
Painel Acesse aqui para saber como construir facilmente um dataset simples.
Avançados: é uma forma de customização do
Datasetdataset simples, permitindo navegar nos dados retornados por meio de uma codificação em JavaScript. Por exemplo: definição de uma lista de valores fixos (como estados de um país).
Painel Acesse aqui para saber como codificar um dataset avançado.
Informações |
---|
As nomenclaturas dos tipos simples e avançados foram lançadas adotadas a partir da atualização 1.6.5. Antes disso, os tipos de Datasets datasets eram chamados de gerados ou customizados, respectivamente. |
Ainda que os Datasets possam ter origens distintas, não existe qualquer diferença sob a perspectiva do componente que fará uso deste realizará consultas neste Dataset. Esta característica 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.
...
Uma vez que codificar a lista se torne pouco flexível (devido a alterações frequentes nos dados), é possível trocar o centro de custo para que seja baseado em definição de formulário. Desde definir que a fonte de dados seja baseada em um Dataset 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 mudar o Dataset novamente, 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 camposmantenha a estrutura do Dataset inalterada.
Âncora | ||||
---|---|---|---|---|
|
...
A consulta aos dados retornados pelo Dataset pode ser feita pelo fluig Fluig Studio ou pela própria plataforma (via painel de controle ou widget).
Via
...
title | Atenção |
---|
...
Painel de Controle
...
Pelo fluig 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 avançados.
O exemplo abaixo apresenta um exemplo de Dataset sendo visualizado:
Neste exemplo, é possível visualizar os campos disponíveis (conta, título, 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.
Veja a seguir o vídeo how to que demonstra a consulta de dados de um Dataset interno pelo fluig Studio.
Conector de Widget width 854 url https://www.youtube.com/watch?v=Kux0ohfl1JU&list=PLD-htCoWcvYqIInKALhFy8KaJfXLXcOJ7&index=19 height 480
Via Painel de Controle
A partir da atualização 1.6.2, a plataforma disponibiliza o facilitador de integração, um editor visual que possibilita configurar a consulta em dados de sistemas terceiros sem qualquer tipo de codificação.O administrador do sistema pode consultar o que o Dataset está retornando, acessando Painel de Controle > Datasets, localizando o Dataset desejado, e acionando Mais ações > Consultar. Os dados retornados serão apresentados de forma semelhante à janela abaixo.
Via Widget
Pelo fluig, através Através da widget Listar registros de datasets, é 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. Através desta widget, visualizações de datasets podem ser publicados publicadas em páginas ou comunidades.
Painel | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Via Fluig Studio
Para conhecer a consulta de datasets via Fluig Studio, acesse a página de Visualização de Datasets.
Acessando um Dataset
...
Vários pontos do fluig podem da plataforma podem fazer uso dos Datasets. Dependendo do local onde o Dataset é utilizado, podem ocorrer variações na forma de acessá-lo ou de manuseá-lo. Para saber mais sobre as formas de acesso ao dataset, consulte a documentação Acessando Datasets.
Os Datasets de fontes externas também podem ser sincronizados, para reduzir o número de acessos a serviços de dados fornecidos por produtos externose tráfego de informações. Para saber como funciona a sincronização, consulte Sincronização de Datasets.
Construindo um Dataset Avançado
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 a serviços externos ou apenas criar o Dataset a partir de valores codificados.
...
title | Atenção |
---|
Para que um usuário que não é administrador da empresa possa construir datasets via fluig Studio é necessário que ele possua a permissão "Configurar Datasets". Esta permissão pode ser concedida pelo administrador através do item Permissões disponível no Painel de Controle do fluig.
Importar e Exportar Datasets
...
A plataforma possibilita exportar um dataset do ambiente de teste/homologação para posteriormente importá-lo no servidor de produção. A partir da
atualização 1.6.5,
...
esse recurso está disponível pela tela de Datasets, no Painel de Controle.
...
Nas atualizações anteriores, a importação e exportação de datasets ocorria apenas pelo Fluig Studio.
Conector de Widget | ||
---|---|---|
|
No exemplo abaixo é criado um Dataset cujo os campos e valores estão fixos no código:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
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 ordenação. Cabe ao desenvolvedor utilizar estes valores na lógica de implementação do Dataset avançado. Caso seja desconsiderado algum desdes campos, os filtros não serão aplicados. Os parâmetros "fields" e "sortFields" são arrays de String, que possuem, respectivamente, os nomes dos campos que serão retornados e os nomes dos campos utilizados para ordenação. Já o parâmetro "constraints" é um array de objetos do tipo Constraint, onde cada objeto deste array possui as seguintes propriedades:
...
Valor final para filtro neste campo
...
Tipo do filtro deste campo, podendo ter os valores abaixo:
MUST: O valor informado precisa estar nos resultados
SHOULD: O valor informado pode estar ou não nos resultados
MUST_NOT: O valor informado não pode estar nos resultados
Para acessar estas propriedades e analisar os valores de cada item, pode-se utilizar um laço de repetição, conforme implementação abaixo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function createDataset(fields, constraints, sortFields) {
var company;
var initialDate;
var finalDate;
if (constraints != null) {
for (var i = 0; i < constraints.length; i++) {
if (constraints[i].fieldName == "company") {
company = constraints[i].initialValue;
}
else if (constraints[i].fieldName == "date") {
initialDate = constraints[i].initialValue;
finalDate = constraints[i].finalValue;
}
}
}
.
.
.
} |
...
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("DDD");
dataset.addColumn("Fone");
dataset.addColumn("Nome");
var tempDataset = getDefaultValues(); // consulta a fonte de dados do dataset
if(constraints!=null && constraints.length){ //se tiver constraint filtra
if(constraints[0].constraintType==ConstraintType.MUST) { // implementação somente para o MUST
for(var a=0;a< tempDataset.length;a++){
// se o valor inicial da constraint for igual ao valor do campo na constraint adiciona a linha
if(constraints[0].initialValue==tempDataset[a][constraints[0].fieldName]){
dataset.addRow(new Array(tempDataset[a]["DDD"], tempDataset[a]["Fone"],tempDataset[a]["Nome"]));
}
}
}
} else { // se não tiver constraint adiciona todas as linhas
for(var a=0;a< tempDataset.length;a++){
dataset.addRow(new Array(tempDataset[a]["DDD"], tempDataset[a]["Fone"],tempDataset[a]["Nome"]));
}
}
return dataset;
}
function getDefaultValues(){ // retorna valores default para serem filtrados
return [{
DDD: "47",
Fone: "1111-1111",
Nome: "Marcos"
},
{
DDD: "47",
Fone: "2222-2222",
Nome: "Roberto"
},
{
DDD: "41",
Fone: "3333-3333",
Nome: "Maria"
},
{
DDD: "31",
Fone: "4444-4444",
Nome: "Francisco"
},
{
DDD: "11",
Fone: "5555-5555",
Nome: "Michel"
}];
} |
Consulta da constraint:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
function createDataset(fields, constraints, sortFields) {
var c1 = DatasetFactory.createConstraint("DDD", "47", "47", ConstraintType.MUST);
var dataset = DatasetFactory.getDataset("exemploFiltro", null, new Array(c1), null);
return dataset;
} |
A partir da atualização 1.4.10, também é possível obter o código da empresa e do usuário autenticado através do método getValue(), conforme exemplo abaixo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function createDataset(fields, constraints, sortFields) {
var companyId = getValue("WKCompany");
var currentUser = getValue("WKUser");
.
.
.
} |
Vídeo How To
Veja a seguir o vídeo How To que demonstra a criação de um dataset avançado com dados fixos.
Conector de Widget
|
|
|
|
Utilizando zoom composto em Dataset avançado
Através do uso de Datasets avançados é possível realizar uma série de buscas compostas.
Painel | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Dataset avançado 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 avançado (Exemplo 1), ou ainda um evento de processo ou definição de formulário (Exemplo 2).
Deck of Cards | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||
|
Utilizando um dos modelos 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:
...
Atributo utilizado para nomear cada tabela filha do HTML. Exemplo:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<table border="1" tablename="tabelaPecas" addbuttonlabel="Adicionar Peça">
<!-- Campos Filhos -->
</table> |
...
Código do usuário que será validada a permissão no formulário
Nota | ||
---|---|---|
| ||
Esse parâmetro não será validado na Visualização de Datasets, visto que nessa opção é um exemplo de visualização dos dados. |
|
Para saber mais
...
Page Tree | ||
---|---|---|
|
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.
Resultado final do Dataset do exemplo 1:
Guia de Referência de Datasets
Dataset Factory
...
...
...
Dataset
...
...
...
...
...
...
...
...
...
...
...
...
Informações | ||
---|---|---|
| ||
Veja mais vídeos how to sobre datasets em: Datasets - Consulta, criação e registros. |