Home

TOTVS | Plataformas e tecnologias

Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
[#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 três blocos. O primeiro bloco cria as condições que serão utilizadas para filtrar os dados do Dataset. No segundo bloco, é invocado o método getDataset para retornar os dados do Dataset de ofertas, segundo as condições passadas como parâmetro em array ([c1, c2]). No terceiro e último bloco, como o exemplo abaixo, os dados do Dataset são percorridos e apresentados numa tabela HTML.

Uma particularidade da utilização dos datasets em sites, é referente ao acesso aos atributos definidos na PK do objeto retornado pelo dataset. Nessa situação, não é necessário informar o objeto PK. Basta apenas referenciar diretamente o atributo desejado, pois os atributos da PK são incorporados ao objeto retornado quando instanciados para um site. Exemplo:

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

 

Via Web Services

O TOTVS | ECM disponibiliza um conjunto de WebServices que permitem integrar aplicações de terceiros ao produto. Dentre os serviços disponibilizados, o serviço DatasetService permite fazer o acesso a um Dataset. Para verificar a lista de serviços disponíveis 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 aplicação cliente. Consulte a documentação da tecnologia escolhida pra obter detalhes sobre como acessar Web Services.

 

Construindo um Dataset Customizado

 

Um Dataset pode ser 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.

Bloco de código
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á','Belém',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 estão fixos no código. Para criar um novo Dataset, é utilizado o método DatasetBuilder.newDataset(). A partir deste objeto é possível criar as colunas desejadas (addColumn) bem como adicionar linhas (addRow).

Note que o código JavaScript que cria o Dataset recebe como parâmetros os campos, as constraints e a ordem dos campos. Cabe ao código que implementa um JavaScript customizado utilizar estes valores na sua lógica. Caso o script desconsidere algum destes campos, o engine que gerencia os Datasets não fará o filtro.

 

Dataset customizado de fichário "pai-filho"

Para acessar informações de um fichário “pai-filho” pode ser utilizado o WebService “DatasetService”, um Dataset customizado (Exemplo 1), ou ainda um evento do fichário ou workflow (Exemplo 2).

Bloco de código
function createDataset(fields, constraints, sortFields) { // Cria as colunas var newDataset = DatasetBuilder.newDataset(); newDataset.addColumn("Peça"); 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, número da ficha e versão (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; }

Exemplo 1


Bloco de código
function beforeTaskSave(colleagueId,nextSequenceId,userList) { //Cria as constraints para buscar as fichas ativas var cst1 = DatasetFactory.createConstraint("metadata#active", "true", "true", ConstraintType.MUST); // É obrigatório informar a constraint X para indicar o usuario que sera validada a permissão 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, número da ficha e versão (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); // É obrigatório informar a constraint X para indicar o usuario que sera validada a permissão 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")); } } }

Exemplo 2

 

Utilizando um dos modelos de Dataset acima, é possível recuperar os valores “filhos” das fichas ativas, 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:

tablename: Atributo utilizado para nomear cada table filha do HTML. Ex:

Bloco de código
<table border="1" tablename="tabela_filhos" addbuttonlabel="Adicionar acessório">
.
. Campos Filhos.
.
</table>

metadata#id: Número do documento que representa a ficha.Ex: 228.

metadata#version: Número da versão da ficha. Ex: 6000.

userSecurityId: Matricula do usuário que será validada a permissão nas fichas.

Informações
titleObservação:

Esse parâmetro não será validado na Visualização de Datasets (Painel de Controle > Dataset), 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.

Resultado final do exemplo 1:

Image Added


Guia de Referência de Datasets


DatasetFactory

Image Added


Dataset

Image Added


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.