You are on page 1of 21

Customizao de Datasets

Guia de Referncia para


Customizao
Datasets





2

Customizao de Datasets
Copyright 2009 TOTVS S.A. Todos os direitos reservados.
Nenhuma parte deste documento pode ser copiada, reproduzida, traduzida ou transmitida por
qualquer meio eletrnico ou mecnico, na sua totalidade ou em parte, sem a prvia autorizao
escrita da TOTVS S.A., que reserva-se o direito de efetuar alteraes sem aviso prvio. A TOTVS
S.A no assume nenhuma responsabilidade pelas conseqncias de quaisquer erros ou
inexatides que possam aparecer neste documento.
TOTVS S.A.
Av. Santos Dumont, 831, Joinville, SC, Brasil, CEP 89.222-900





3

Customizao de Datasets
ndice
Problema ............................................................................................. 4
Datasets .............................................................................................. 5
Tipos de Datasets .............................................................................. 5
Visualizando Datasets ....................................................................... 6
Acessando um Dataset ...................................................................... 7
Via pontos de customizao .......................................................................... 7
Exemplificao ............................................................................................... 9
Via JavaScript em formulrio ....................................................................... 11
Via Tags no Formulrio ................................................................................ 12
Via Site ......................................................................................................... 12
Via Web Services ......................................................................................... 14
Construindo um Dataset customizado ........................................... 15
Dataset customizado de fichrio "pai-filho" ................................................. 15
Guia de Referncia de Datasets ...................................................... 19
DatasetFactory ............................................................................................. 19
Dataset ......................................................................................................... 19
Third Party Trademarks ................................................................... 21

















4

Customizao de Datasets

Problema
O TOTVS | ECM um produto que permite disponibilizar informaes
provindas de vrias fontes de dados atravs de formas variadas de
apresentao. Dentre estas formas, destacam-se os processos Workflow,
Formulrios e Portais.
comum que, dependendo da necessidade de cada cliente, seja necessrio
apresentar ou processar informaes referentes a dados do prprio aplicativo
(como usurios, grupos, papis tarefas, etc.), dados criados pelo usurio mas
gerenciados pelo produto (dados das fichas), dados externos (como entidades
de um ERP) ou ainda valores fixo (como uma lista de estados ou unidades de
medida).
No Webdesk 2.04, cada componente que faria uso da informao era
responsvel pela sua extrao. Em outras palavras, se os dados de um
determinado fichrio devessem ser apresentados em um portal, cabia ao
portlet responsvel pela formatao a extrao destes dados. Da mesma
forma, se um determinado processo workflow exigisse o uso deste mesmo
fichrio, tambm ele deveria fazer a extrao destes dados. O diagrama
abaixo apresenta um esquema bsico da organizao deste modelo.





5

Customizao de Datasets

Datasets
O TOTVS | ECM introduz um novo conceito de componente Dataset que
permite padronizar o acesso s informaes, independente da origem dos
dados. Isto significa que, uma vez que um Dataset esteja disponvel no
sistema, ele poder ser invocado de qualquer parte do sistema e de forma
consistente, independente da sua origem.
Um Dataset disponibiliza um conjunto de operaes que permite navegar
sobre o seu contedo, como consultar quais so as colunas disponveis,
quantas linhas existem ou o valor de cada campo, em cada coluna.
O diagrama abaixo apresenta um modelo conceitual sobre os Datasets.


Tipos de Datasets
Atualmente existem trs tipos de Datasets gerenciados pelo produto:
Built-in Datasets: Este tipo de Dataset permite navegar em
dados das entidades do prprio produto, como colaboradores,
grupos, processos, tarefas, etc. Os Datasets built-in so pr-
definidos no produto e no podem ser alterados pelo cliente.
CardIndex Datasets: Este tipo de Dataset permite navegar
nos dados existentes nas fichas de um determinado fichrio.




6

Customizao de Datasets

Para que um fichrio seja disponibilizado como Dataset,
preciso configurar o campo nome do servio de dados nas
propriedades do fichrio. O nome definido neste campo ser
utilizado para a busca do Dataset no sistema.
CustomizedDataset: Os Datasets customizados permitem
que o usurio defina manualmente quais as colunas de um
Dataset e os valores de cada um dos registros, atravs da
codificao em JavaScript.. Os Datasets customizados
podem ser utilizados em uma grande gama de situaes,
como para definio de uma lista de valores fixos (como
estados de um pas) ou para extrao de dados de um
servio externo (via WebServices, por exemplo).
Ainda que os Dataset possam ter origens distintas, no existe qualquer
diferena 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 centro de custo, o seu uso ser exatamente o mesmo,
independente deste Dataset ser pr-construdo (o que no o caso), baseado
em fichrio ou customizado.
Esta caracterstica dos Datasets representa um grande benefcio para os
usurios, 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 necessrios para o usurio.
Uma vez que codificar a lista se torne pouco flexvel (devido alteraes
freqentes), possvel trocar o centro de custo para que seja baseado em
fichrio. Desde que se observe o nome dos campos do Dataset, no 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 no 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 painel de controle possvel navegar pelos Datasets disponveis bem
como visualizar o seu contedo. Com isto possvel verificar quais os campos
disponveis, tanto para filtros quanto para acesso, bem como fazer testes
sobre Datasets customizados.
O exemplo abaixo apresenta um exemplo de Dataset sendo visualizado.




7

Customizao de Datasets


Neste exemplo, possvel visualizar os campos disponveis (seq, name e
desc) e os registros retornados pelo Dataset. Note que estas informaes so
essenciais para o uso dos Datasets, principalmente quando h necessidade
de restringir os dados que queremos acessar.

Acessando um Dataset
Vrios pontos do sistema podem fazer uso dos Datasets. Dependendo do
local onde o Dataset utilizado, podem ocorrer variaes na forma de
acess-lo ou de manuse-lo.

Via pontos de customizao
Quando um Dataset acessado via um ponto de customizao, como
eventos de um fichrio ou de um processo, isto feito atravs de chamadas
JavaScript que sero executadas no lado servidor.
O exemplo abaixo apresenta um exemplo simples de chamada a um Dataset.
function doTest1() {
var dataset = DatasetFactory.getDataset("group", null, null, null);
return dataset.rowsCount;
}

A classe DatasetFactory a porta de entrada para o acesso a qualquer
Dataset. Alm de permitir a carga de um Dataset, ela tambm permite
navegar entre todos os Datasets disponveis no sistema.




8

Customizao de Datasets

No exemplo acima, o cdigo JavaScript faz o acesso ao Dataset group, que
um Dataset interno do sistema, e retorna a quantidade de linhas disponveis
(rowsCount).
function doTest2() {
// Monta as constraints para consulta
var c1 = DatasetFactory.createConstraint("documentPK.documentId", null, "675",
ConstraintType.MUST);
var c2 = DatasetFactory.createConstraint("documentTypeId", "", "",
ConstraintType.MUST_NOT);
var c3 = DatasetFactory.createConstraint("colleagueId", "Dir", "Dir",
ConstraintType.SHOULD);
var c4 = DatasetFactory.createConstraint("colleagueId", "TI", "TI",
ConstraintType.SHOULD);
var constraints = new Array(c1, c2, c3, c4);
// Define os campos para ordenao
var sortingFields = new Array("documentPK.documentId");
// Busca o dataset
var dataset = DatasetFactory.getDataset("document", null, constraints,
sortingFields);
if(dataset.rowsCount != expectedValues.length)
return false;
for(i = 0; i < dataset.rowsCount; i++) {
print(dataset.getValue(i, "documentPK.documentId"));
}
}

O exemplo acima invoca o mtodo getDataset passando alguns argumentos
extras como parmetros:
Nome do Dataset: Neste caso, buscando o Dataset de documento
(document).
Campos: Retorna apenas os campos recebidos no array informado. Caso
null, retorna todos os campos.
Constraints: Vetor com as condies de busca do Dataset. Em cada
condio de busca (constraint) deve-se informar o nome do campo que
ser filtrado, a faixa de valores inicial e final, e o tipo de Constraint. Os
tipos podem ser:
o MUST: Indica que todos os registros do Dataset devem satisfazer
a esta condio.
o SHOULD: Indica que os registros do Dataset podem ou no
atender condio. Este tipo mais comum quando se necessita
que um mesmo campo tenha valores A ou B (onde cada um ser
uma constraint SHOULD).
o MUST_NOT: indica que nenhum dos registros pode satisfazer a
condio.
Existe uma constraint em especial que utilizada para limitar o nmero de
registros na consulta do SQL chamada de sqlLimit. Ento possvel definir o
nmero mximo de registros que uma consulta SQL pode retornar, porm o
nmero de registros pode ser menor que o esperado, devido algumas
validaes que so feitas aps o retorno dos dados. Por exemplo: O sqlLimit
tem um valor 100 e feita uma consulta em um servio de dados de um
fichrio, esta consulta retornar os 100 registros, porm aps isso so
executadas validaes para verificar se a ficha est ativa e se o usurio
corrente tem permisso para visualizar os dados fazendo com que o retorno
possa ser menor que 100. Para o sqlLimit utilizada a seguinte sintaxe:





9

Customizao de Datasets

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

Obs.: O valor considerado no sqlLimit sempre o initialValue, o que for
informado no finalValue no ser considerado.
Existe outra constraint especial utilizada somente para acesso a dataset de
fichrios, ela indica se ao buscar o servio de dados devem ser retornados
APENAS os dados das fichas do fichrio principal. A constraint a
onlyMainCards e por padro seu valor false, ou seja, so retornados os
dados das fichas do fichrio principal e sub-fichrios.

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

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

ATENO: As constraints podem ser utilizadas apenas para datasets
internos. Datasets customizados no aceitam constraints, pelo fato de os
dados serem externos, no sendo possvel 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 informaes
desnecessrias.

Ordenao: Vetor com a lista de campos que ser utilizada para
ordenao dos registros no Dataset.


Exemplificao
Considere os valores da tabela abaixo sendo utilizadas como um servio de
dados a partir de um fichrio para exemplificao dos exemplos:
Cdigo Nome Cidade
1 Javier Spiva So Paulo
2 Cody Ballow Rio de Janeiro
3 Javier Naramore So Paulo
4 Max Nevius Rio de Janeiro
5 Noemi Roiger So Paulo
6 Lonnie Cadwallader Rio de Janeiro
7 Lorrie Spece Braslia

Exemplos de retorno de dados
Para retornar as linhas que os cdigos estejam entre 1 4.
var c1 = DatasetFactory.createConstraint("codigo", "1", "4", ConstraintType.MUST);
Ser retornado:




10

Customizao de Datasets

Cdigo Nome Cidade
1 Javier Spiva So Paulo
2 Cody Ballow Rio de Janeiro
3 Javier Naramore So Paulo
4 Max Nevius Rio de Janeiro

Para retornar somente as linhas que os nomes sejam Noemi Roiger,
Javier Naramore e Lonnie Cadwallader ou que a cidade seja Braslia.
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", "Braslia", "Braslia", ConstraintType.
SHOULD);

Ser retornado:
Cdigo Nome Cidade
3 Javier Naramore So Paulo
5 Noemi Roiger So Paulo
6 Lonnie Cadwallader Rio de Janeiro
7 Lorrie Spece Braslia


Para retornar todas as linhas exceto onde a cidade seja Braslia.
var c1 = DatasetFactory.createConstraint("cidade", "Braslia", "Braslia",
ConstraintType.MUST_NOT);
Ser retornado:
Cdigo Nome Cidade
1 Javier Spiva So Paulo
2 Cody Ballow Rio de Janeiro
3 Javier Naramore So Paulo
4 Max Nevius Rio de Janeiro
5 Noemi Roiger So Paulo
6 Lonnie Cadwallader Rio de Janeiro






11

Customizao de Datasets

Via JavaScript em formulrio
O TOTVS | ECM permite acessar os Datasets via cdigo JavaScript no HTML
de um fichrio, desde que esteja importada a biblioteca "ecm_datasets.js".
Para isto, basta incluir a linha abaixo antes da tag body do HTML:
<script src="../ecm_datasets.js"></script>
Diferente o caso acima, este modelo de acesso faz com que o Dataset seja
transportado do servidor para o cliente, ou seja, o browser do usurio. Por
isso, importante observar a quantidade de informaes que ser
manuseada, caso contrrio pode-se ter problemas de consumo excessivo de
banda ou performance.
function showNewDatasetFull() {
var div = document.getElementById("myDiv3");
// Busca o dataset
try {
var dataset = DatasetFactory.getDataset("topic");
var tabela = showDataset(dataset);
div.innerHTML = tabela;
} catch(erro) {
div.innerHTML = erro;
}
}

function showDataset(dataset) {
var tabela = "<TABLE border=1 cellpadding=0 cellspacing=0>";
// monta o cabealho
tabela += "<TR><TD>#</TD>";
for(i = 0; i < dataset.columns.length; i++) {
tabela += "<TH>" + dataset.columns[i] + "</TH>";
}
tabela += "</TR>";
for(r = 0; r < dataset.values.length; r++) {
var record = dataset.values[r];
tabela += "<TR><TD>" + r + "</TD>";
for(i = 0; i < dataset.columns.length; i++) {
var property = "record[\"" + dataset.columns[i] + "\"]";
tabela += "<TD>";
try {
tabela += eval(property);
} catch(erro) {}
tabela += "</TD>";
}
tabela += "</TR>";
}
tabela += "</TABLE>";
return tabela;
}

No exemplo acima, percebe-se que a forma de se invocar um Dataset muito
semelhante ao mtodo apresentado anteriormente, atravs do
DatasetFactory. A funo showDataset apresenta um exemplo de cdigo que
permite apresentar os dados do Dataset.

function showNewDatasetPartial() {
var div = document.getElementById("myDiv4");

var c1 = new SearchConstraint("documentPK.documentId", null, "350,
ConstraintType.MUST);
var c2 = new SearchConstraint("documentType", "1", "1",
ConstraintType.MUST_NOT);
var c3 = new SearchConstraint("documentType", "systool", "systool",
ConstraintType.MUST_NOT);
var c4 = new SearchConstraint("documentType", "sysfolder", "sysfolder",




12

Customizao de Datasets

ConstraintType.MUST_NOT);
var c5 = new SearchConstraint("documentType", "blogarea", "blogarea",
ConstraintType.MUST_NOT);
var c6 = new SearchConstraint("documentDescription", "", "",
ConstraintType.MUST_NOT);
var c7 = new SearchConstraint("activeVersion", "true", "true",
ConstraintType.MUST);
var constraints = new Array(c1, c2, c3, c4, c5, c6, c7);
// Define os campos para ordenao
var sortingFields = new Array("accessCount", "documentDescription");
// Busca o dataset
try {
var dataset = DatasetFactory.getDataset("document", null,
constraints, sortingFields);
showDataset(dataset);
} catch(erro) {
div.innerHTML = erro;
}
}

Assim como no mtodo anterior, quando preciso filtrar um Dataset preciso
criar as constraints que sero utilizadas na busca. Os argumentos utilizados
no mtodo getDataset tambm so os mesmos que apresentados
anteriormente.
OBSERVAO: A biblioteca vcXMLRPC.js era incompatvel com
algumas tecnologias disponveis, como por exemplo o jQuery UI. Para
aperfeioar a customizao de formulrios e possibilitar a utilizao de
bibliotecas Javascript complementares, foi desenvolvida a nova biblioteca de
integrao de datasets ecm_datasets.js. Esta nova biblioteca pode ser
utilizada da mesma forma que a vcXMLRPC.js e dever ser utilizada para
construo de novas customizaes. As customizaes que j utilizam a
antiga biblioteca vcXMLRPC.js continuaro funcionando normalmente,
entretanto esta biblioteca est depreciada.
Via Tags no Formulrio
O TOTVS | ECM permite especificar um Dataset em um campo select
(combo-box). Quando isto feito, as opes do combo so automaticamente
criadas de acordo com os dados existentes no Dataset.
<select name="estado"
dataset="estadosBR"
datasetkey="Sigla"
datasetvalue="Estado">
</select>

No exemplo acima, o campo estado foi configurado para que as opes do
combo sejam criadas a partir do Dataset estadosBR. Como valor do campo
ser utilizado o campo Sigla, embora para o usurio ser apresentado o
campo Estado.

Via Site
Os Datasets tambm podem ser utilizados para permitir gerar contedo
dinmico em pginas de Sites. A sintaxe utilizada para o acesso e navegao
aos fichrios muito similar aos casos anteriormente vistos, embora adaptada
para o uso pelo FreeMarker (engine utilizado pelo Site).





13

Customizao de Datasets

O exemplo abaixo apresenta um caso simples de acesso a um Dataset no
Site.
[#assign myDataset = DatasetFactory.getDataset("tipoOferta", null, null, null)]
<table>
[#list myDataset.getMap() as oferta]
<tr>
<td>${oferta.name}</td>
</tr>
[/#list]
</table>

No exemplo acima, criada uma varivel chamada myDataset, que contm o
Dataset de nome tipoOferta. Em seguida, so percorridos os registros
existentes no Dataset ([#list myDataset.getMap as oferta]) e para cada
registro apresentado o nome da oferta (${oferta.name}).

O exemplo abaixo apresenta uma carga de Dataset que utiliza filtros:
[#assign c1 = DatasetFactory.createConstraint("tipoOferta", P, P,
ConstraintType.MUST)]
[#assign c2 = DatasetFactory.createConstraint("metadata#active", 'true', 'true',
ConstraintType.MUST)]
[#assign ofertas = DatasetFactory.getDataset("ofertas", null, [c1, c2], null)]
<table>
[#list ofertas.getMap() as row]
<tr>
<td>${row.nome_oferta}</td>
<td>${row.texto_oferta}</td>
</tr>
[/#list]
</table>

O exemplo acima pode ser dividido em trs blocos. O primeiro bloco cria as
condies que sero utilizadas para filtrar os dados do Dataset. No segundo
bloco, invocado o mtodo getDataset para retornar os dados do Dataset de
ofertas, segundo as condies passadas como parmetro em array ([c1,
c2]). No terceiro e ltimo bloco, como o exemplo abaixo, os dados do Dataset
so percorridos e apresentados numa tabela HTML.

Uma particularidade da utilizao dos datasets em sites, referente ao
acesso aos atributos definidos na PK do objeto retornado pelo dataset. Nessa
situao, no necessrio informar o objeto PK. Basta apenas referenciar
diretamente o atributo desejado, pois os atributos da PK so incorporados ao
objeto retornado quando instanciados para um site. Exemplo:

[#assign myDataset = DatasetFactory.getDataset("workflowProcess", null, null, null) ]
<table>
[#list myDataset.getMap() as processos]
<tr>
<td>${processos.processInstanceId}</td>
</tr>
[/#list]
</table>





14

Customizao de Datasets

Via Web Services
O TOTVS | ECM disponibiliza um conjunto de WebServices que permitem
integrar aplicaes de terceiros ao produto. Dentre os servios
disponibilizados, o servio DatasetService permite fazer o acesso a um
Dataset. Para verificar a lista de servios disponveis no produto, acesso a url
http://<servidor>:<porta>/webdesk/services.
A forma de uso de um Web Service varia de acordo com a tecnologia utilizada
pela aplicao cliente. Consulte a documentao da tecnologia escolhida pra
obter detalhes sobre como acessar Web Services.




15

Customizao de Datasets

Construindo um Dataset
customizado
Um Dataset pode ser construdo a partir de um cdigo JavaScript. Uma vez
que o prprio Dataset criado a partir de um cdigo JavaScript, possvel
fazer chamadas a outros Datasets, chamadas servios externos ou apenas
criar o Dataset a partir de valores codificados.
function createDataset(fields, constraints, sortFields) {
var newDataset = DatasetBuilder.newDataset();
// Cria as colunas
newDataset.addColumn("Sigla");
newDataset.addColumn("Estado");
newDataset.addColumn("Capital");
newDataset.addColumn("Area");
// Cria os registros
newDataset.addRow(new Array('AM','Amazonas','Manaus',1570746));
newDataset.addRow(new Array('PA','Par','Belm',1247690));
newDataset.addRow(new Array('MT','Mato Grosso','Cuiab',903358));
newDataset.addRow(new Array('TO','Tocantins','Palmas',277621));
newDataset.addRow(new Array('PI','Piau','Teresina',251529));

return newDataset;
}

No exemplo acima criado um Dataset cujo os campos e valores esto fixos
no cdigo. Para criar um novo Dataset, utilizado o mtodo
DatasetBuilder.newDataset(). A partir deste objeto possvel criar as colunas
desejadas (addColumn) bem como adicionar linhas (addRow).
Note que o cdigo JavaScript que cria o Dataset recebe como parmetros os
campos, as constraints e a ordem dos campos. Cabe ao cdigo que
implementa um JavaScript customizado utilizar estes valores na sua lgica.
Caso o script desconsidere algum destes campos, o engine que gerencia os
Datasets no far o filtro.

Dataset customizado de fichrio "pai-filho"

Para acessar informaes de um fichrio pai-filho pode ser utilizado o
WebService DatasetService, um Dataset customizado (Exemplo 1), ou ainda
um evento do fichrio ou workflow (Exemplo 2).





16

Customizao de Datasets


Exemplo 1
function createDataset(fields, constraints, sortFields) {

// Cria as colunas
var newDataset = DatasetBuilder.newDataset();
newDataset.addColumn("Pea");
newDataset.addColumn("ID");
newDataset.addColumn("Quantidade");
newDataset.addColumn("Ficha");

//Cria as constraints para buscar as fichas ativas
var cst = DatasetFactory.createConstraint("metadata#active", "true", "true", ConstraintType.MUST);
var constraints_principal = new Array(cst);

var datasetPadrao = DatasetFactory.getDataset("fichaexemplo ", null, constraints_principal , null);

for(i = 0; i < datasetPadrao.rowsCount; i++) {
//Cria as constraints para buscar os campos filhos, passando o tablename, nmero da ficha e verso (no
caso a ltima).
var c1 = DatasetFactory.createConstraint("tablename", "tabela_filhos" ,"tabela_filhos",
ConstraintType.MUST);
var c2 = DatasetFactory.createConstraint("metadata#id", datasetPadrao.getValue(i, "metadata#id"),
datasetPadrao.getValue(i, "metadata#id"), ConstraintType.MUST);
var c3 = DatasetFactory.createConstraint("metadata#version", datasetPadrao.getValue(i,
"metadata#version"), datasetPadrao.getValue(i, "metadata#version"), ConstraintType.MUST);
var constraints_filhos = new Array(c1, c2, c3);

// Busca o dataset
var datasetFilhos = DatasetFactory.getDataset("fichaexemplo ", null,constraints_filhos , null);

for(j = 0; j < datasetFilhos.rowsCount; j++) {
//Adiciona os valores nas colunas respectivamente.
newDataset.addRow(new Array( datasetFilhos.getValue(j, "peca"), datasetFilhos.getValue(j,
"wdk_sequence_id"), datasetFilhos.getValue(j, "qtde"), datasetPadrao.getValue(i, "metadata#id") ) );
}
}

return newDataset;
}





17

Customizao de Datasets


Exemplo 2

Utilizando um dos modelos de Dataset acima, possvel recuperar os valores
filhos das fichas ativas, ou seja, a ltima verso criada. Existem alguns
parmetros obrigatrios, que devem ser passados atravs de constraints,
onde o valor inicial e final devem ser iguais. A forma de recuperar esses
valores opcional. Segue abaixo a nomenclatura obrigatria de cada
parmetro:
tablename: Atributo utilizado para nomear cada table filha do HTML. Ex:





function beforeTaskSave(colleagueId,nextSequenceId,userList) {

//Cria as constraints para buscar as fichas ativas
var cst1 = DatasetFactory.createConstraint("metadata#active", "true", "true", ConstraintType.MUST);

// obrigatrio informar a constraint X para indicar o usuario que sera validada a permisso nas fichas
var cst2 = DatasetFactory.createConstraint("userSecurityId", getValue("WKUser"), getValue("WKUser"),
ConstraintType.MUST);
var constraints_principal = new Array(cst1, cst2);

var datasetPadrao = DatasetFactory.getDataset("fichaexemplo ", null, constraints_principal , null);

for(i = 0; i < datasetPadrao.rowsCount; i++) {

//Cria as constraints para buscar os campos filhos, passando o tablename, nmero da ficha e verso (no
caso a ltima).
var c1 = DatasetFactory.createConstraint("tablename", "nome_tabela" ,"nome_tabela",
ConstraintType.MUST);
var c2 = DatasetFactory.createConstraint("metadata#id", datasetPadrao.getValue(i, "metadata#id"),
datasetPadrao.getValue(i, "metadata#id"), ConstraintType.MUST);
var c3 = DatasetFactory.createConstraint("metadata#version", datasetPadrao.getValue(i,
"metadata#version"), datasetPadrao.getValue(i, "metadata#version"), ConstraintType.MUST);

// obrigatrio informar a constraint X para indicar o usuario que sera validada a permisso nas
fichas
var c4 = DatasetFactory.createConstraint("userSecurityId", getValue("WKUser"), getValue("WKUser"),
ConstraintType.MUST);

var constraints_filhos = new Array(c1, c2, c3, c4);

// Busca o dataset
var datasetFilhos = DatasetFactory.getDataset("fichaexemplo", null,constraints_filhos , null);

for(j = 0; j < datasetFilhos.rowsCount; j++) {
//Utiliza os campos do Dataset. Exibindo como exemplo.
log.info(" CAMPO 1 " + datasetFilhos.getValue(j, "peca"));
log.info(" CAMPO 2 " + datasetFilhos.getValue(j, "wdk_sequence_id"));
log.info(" CAMPO 3 " + datasetFilhos.getValue(j, "qtde"));
log.info(" CAMPO 4 " + datasetPadrao.getValue(i, "metadata#id"));
}
}
}
<table border="1" tablename="tabela_filhos" addbuttonlabel="Adicionar
acessrio">
.
. Campos Filhos.
.
</table>




18

Customizao de Datasets


metadata#id: Nmero do documento que representa a ficha.Ex: 228.
metadata#version: Nmero da verso da ficha. Ex: 6000.
userSecurityId: Matricula do usurio que ser validada a permisso nas
fichas. OBS: Esse parmetro no ser validado na Visualizao de Datasets
(Painel de Controle > Dataset), visto que nessa opo um exemplo de
visualizao dos dados.

Tambm possvel exibir a ordem dos campos filhos, para isso deve-se
utilizar o campo wdk_sequence_id, sendo que este no poder ser utilizado
como nome de algum campo do formulrio.

Resultado final do exemplo 1:








19

Customizao de Datasets

Guia de Referncia de Datasets


DatasetFactory

Method Summary
public SearchConstraint
createConstraint(String field, String initialValue,
String finalValue, ConstraintType type))
Cria uma nova constraint para a seleo de
registros do Dataset.
java.util.List<String>
getAvailableDatasets()
Retorna lista de datasets.
java.lang.String
getDataset(String name, String[] fields,
SearchConstraint[] constraints, String[] order)
Carrega os dados de um Dataset.

Dataset

Method Summary
protected void
addColumn(java.lang.String colName)
Adiciona uma coluna ao Dataset.
protected void
addRow(java.lang.Object[] values)
Adiciona uma linha ao Dataset.
java.lang.String
getColumnName(int colNum)
Retorna o nome de uma coluna do Dataset.
int
getColumnsCount()
Retorna a quantidade de colunas de um Dataset.
java.lang.String[ ]
getColumnsName()
Retorna um array contendo os nomes das colunas
do Dataset.




20

Customizao de Datasets

java.util.ArrayList<java.util.HashM
ap<java.lang.String,java.lang.Obj
ect>>
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.
int
getRowsCount()
Retorna a quantidade de linhas disponveis no
Dataset.
DefaultDataset
getSubDataset(java.lang.String field,
java.lang.Object value)
Retorna um subconjunto dos dados do Dataset, na
forma de um novo Dataset.
java.lang.Object
getValue(int row, int col)
Retorna o valor Dataset, na linha e coluna
passadas por parmetro
java.lang.Object
getValue(int row, java.lang.String colName)
Retorna o valor armazenado no Dataset, na linha
passada por parmetro e no campo especificado.
java.lang.Object[ ][ ]
getValues()
Retorna um array bidimensional com os dados do
Dataset.
java.sql.ResultSet
toResultSet()
Retorna um ResultSet contendo os dados do
Dataset.





21

Customizao de Datasets

Third Party Trademarks

Adobe, Flash, Flex, Flex Builder, PostScript and Reader are either registered
trademarks or trademarks of Adobe Systems Incorporated in the United States
and/or other countries.

Apache is a trademark of The Apache Software Foundation.

Apple is a trademark of Apple Inc., registered in the U.S. and other countries

Firefox and Mozilla are registered trademarks of the Mozilla Foundation.

Google, Android and Google Chrome are trademarks of the Google Inc.

IOS is a trademark or registered trademark of Cisco in the U.S. and other
countries and is used under license

JavaScript is a trademark of Oracle Corporation.

Liferay, Liferay Portal, and the Liferay logo are trademarks or registered
trademarks of Liferay, Inc., in the United States and other countries.

Linux is the registered trademark of Linus Torvalds in the U.S. and other
countries.

Microsoft, Active Directory, Excel, Internet Explorer, Outlook, PowerPoint, SQL
Server, Windows and Windows Vista are either registered trademarks or
trademarks of Microsoft Corporation in the United States and/or other
countries.

MySQL is a trademark of Oracle Corporation and/or its affiliates.

openDBcopy is an open-source project by Anthony Smith, published under the
terms of the GNU General Public License

OpenLDAP is a registered trademark of the OpenLDAP Foundation

Oracle, Java and OpenOffice.org are registered trademarks of Oracle and/or
its affiliates. Other names may be trademarks of their respective owners.

Progress and OpenEdge are trademarks or registered trademarks of Progress
Software Corporation or one of its subsidiaries or affiliates in the U.S. and
other countries.

Red Hat and JBoss are registered trademarks of Red Hat, Inc. in the United
States and other countries.

This product includes software developed by the Visigoth Software Society
(http://www.visigoths.org/).

Any other third party trademarks are the property of their respective owners.

You might also like