Histórico da Página
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
package com.fluig.examples; import javax.xml.ws.BindingProvider; import net.java.dev.jaxb.array.StringArray; import com.totvs.technology.ecm.dataservice.ws.DatasetDto; import com.totvs.technology.ecm.dataservice.ws.DatasetService; import com.totvs.technology.ecm.dataservice.ws.ECMDatasetServiceService; import com.totvs.technology.ecm.dataservice.ws.SearchConstraintDtoArray; import com.totvs.technology.ecm.dataservice.ws.ValuesDto; /* * Classe para invocar serviço DatasetService */ public class ECMDatasetServiceClient { //Instancia DatasetServiceService. private ECMDatasetServiceService ecmDatasetServiceService = new ECMDatasetServiceService(); private DatasetService service = ecmDatasetServiceService.getDatasetServicePort(); //Inicia execução da classe public static void main(String[] args) { ECMDatasetServiceClient client = new ECMDatasetServiceClient(); //Configura acesso ao WebServices. BindingProvider bp = (BindingProvider) client.service; bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8080/webdesk/ECMDatasetService"); try { client.getDataset(); } catch (Exception e) { e.printStackTrace(); } } public void getDataset() throws Exception { //Cria os parâmetros utilizados na chamada int companyId = 1; String username = "adm"; String password = "adm"; String name = "colleague"; StringArray fields = new StringArray(); SearchConstraintDtoArray constraints = new SearchConstraintDtoArray(); StringArray order = new StringArray(); //Invoca o serviço de dataset DatasetDto result = service.getDataset( companyId, username, password, name, fields, constraints, order); //Apresenta o cabeçalho for (String columnName : result.getColumns()) { System.out.print(columnName + "\t"); } System.out.println(); //Apresenta as linhas do dataset for (ValuesDto row : result.getValues()) { for (Object value : row.getValue()) { System.out.print(value + "\t"); } System.out.println(); } } } |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
/* Parte I - Invocar o WebService */ DEFINE VARIABLE hWebService AS HANDLE NO-UNDO. DEFINE VARIABLE hDatasetService AS HANDLE NO-UNDO. DEFINE VARIABLE cFields AS CHARACTER EXTENT 0 NO-UNDO. DEFINE VARIABLE cOrder AS CHARACTER EXTENT 0 NO-UNDO. DEFINE VARIABLE cDataset AS LONGCHAR NO-UNDO. DEFINE TEMP-TABLE item NO-UNDO NAMESPACE-URI "" FIELD contraintType AS CHARACTER FIELD fieldName AS CHARACTER FIELD finalValue AS CHARACTER FIELD initialValue AS CHARACTER. DEFINE DATASET dConstraints NAMESPACE-URI "http://ws.dataservice.ecm.technology.totvs.com/" FOR item. CREATE SERVER hWebService. hWebService:CONNECT("-WSDL 'http://localhost:8080/webdesk/ECMDatasetService?wsdl'"). RUN DatasetService SET hDatasetService ON hWebService. RUN getDataset IN hDatasetService(INPUT 1, INPUT "adm", INPUT "adm", INPUT "colleague", INPUT cFields, INPUT DATASET dConstraints, INPUT cOrder, OUTPUT cDataset). DELETE OBJECT hDatasetService. hWebService:DISCONNECT(). DELETE OBJECT hWebService. /* Parte II - Faz o parser do XML e criar um arquivo texto separado por tabulacao */ DEFINE VARIABLE iCount AS INTEGER NO-UNDO. DEFINE VARIABLE iCount2 AS INTEGER NO-UNDO. DEFINE VARIABLE hDoc AS HANDLE NO-UNDO. DEFINE VARIABLE hRoot AS HANDLE NO-UNDO. DEFINE VARIABLE hValues AS HANDLE NO-UNDO. DEFINE VARIABLE hEntry AS HANDLE NO-UNDO. DEFINE VARIABLE hText AS HANDLE NO-UNDO. DEFINE VARIABLE cValue AS CHARACTER NO-UNDO. OUTPUT TO c:\dataset.txt. CREATE X-DOCUMENT hDoc. CREATE X-NODEREF hRoot. CREATE X-NODEREF hEntry. CREATE X-NODEREF hText. CREATE X-NODEREF hValues. hDoc:LOAD("longchar", cDataset, FALSE). hDoc:GET-DOCUMENT-ELEMENT(hRoot). /* Percorre as colunas <columns> */ DO iCount = 1 TO hRoot:NUM-CHILDREN WITH 20 DOWN: hRoot:GET-CHILD(hEntry, iCount). IF hEntry:NAME <> "columns" THEN NEXT. hEntry:GET-CHILD(hText, 1). PUT UNFORMATTED hText:NODE-VALUE "~t". DOWN. END. PUT UNFORMATTED SKIP. /* Percorre os registros <values> */ DO iCount = 1 TO hRoot:NUM-CHILDREN WITH 20 DOWN: hRoot:GET-CHILD(hValues, iCount). IF hValues:NAME <> "values" THEN NEXT. /* Percorre os campos <value> */ DO iCount2 = 1 TO hValues:NUM-CHILDREN: hValues:GET-CHILD(hEntry, iCount2). IF hEntry:NUM-CHILDREN = 0 THEN cValue = "". ELSE DO: hEntry:GET-CHILD(hText, 1). cValue = hText:NODE-VALUE. END. PUT UNFORMATTED cValue "~t". END. PUT UNFORMATTED SKIP. END. OUTPUT CLOSE. DELETE OBJECT hValues. DELETE OBJECT hText. DELETE OBJECT hEntry. DELETE OBJECT hRoot. DELETE OBJECT hDoc. |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
function createDataset(fields, constraints, sortFields) { //Cria o dataset var dataset = DatasetBuilder.newDataset(); dataset.addColumn("elementName"); // Conecta o servico e busca os livros var periodicService = ServiceManager.getService('PeriodicTable'); var serviceHelper = periodicService.getBean(); var serviceLocator = serviceHelper.instantiate('net.webservicex.Periodictable'); var service = serviceLocator.getPeriodictableSoap(); //Invoca o serviço try { var result = service.getAtoms(); var NewDataSet = new XML(result); for each(element in NewDataSet.Table) { dataset.addRow(new Array(element.ElementName.toString())); } } catch(erro) { dataset.addRow(new Array(erro)); } return dataset; } |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
/************************************************************************** ** Utilitário que disponibiliza procedures para a extração de informações ** sobre centros de custo. **************************************************************************/ DEFINE TEMP-TABLE ttCC NO-UNDO FIELD conta LIKE conta.ct-codigo /* CHARACTER */ FIELD natureza LIKE conta.natureza /* INTEGER */ FIELD tipo LIKE conta.tipo /* INTEGER */ FIELD titulo LIKE conta.titulo. /* CHARACTER */ /*------------------------------------------------------------------- Procedure: readCostCenters Objetivo: Retorna uma temp-table com a lista de centros de custo. ----------------------------------------------------------------------*/ PROCEDURE readCostCenters: DEFINE OUTPUT PARAMETER TABLE FOR ttCC. FOR EACH conta: CREATE ttCC. ASSIGN ttCC.conta = conta.ct-codigo ttCC.natureza = conta.natureza ttCC.tipo = conta.tipo ttCC.titulo = conta.titulo. END. END. /*------------------------------------------------------------------- Procedure: readCostNatureTypes Objetivo: Retorna uma string com as naturezas dos centros de custo, separadas por vírgula. ----------------------------------------------------------------------*/ PROCEDURE readCostNatureTypes: DEFINE OUTPUT PARAMETER cNatureList AS CHARACTER NO-UNDO. cNatureList = {adinc/i01ad047.i 03}. END. /*------------------------------------------------------------------- Procedure: readCostTypes Objetivo: Retorna uma string com os tipos de centro de custo, separados por vírgula. ----------------------------------------------------------------------*/ PROCEDURE readCostTypes: DEFINE OUTPUT PARAMETER cTypeList AS CHARACTER NO-UNDO. cTypeList = {adinc/i02ad047.i 3}. END. |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
/************************************************************************** ** Utilitário que recebe um temp-table com uma lista de usuários e retorna ** outra, apenas com os usuários da lista que existam na base de dados. **************************************************************************/ DEFINE TEMP-TABLE ttUsers FIELD cod_usuar AS CHARACTER FIELD nom_usuario AS CHARACTER INDEX principal IS PRIMARY UNIQUE cod_usuar. DEFINE TEMP-TABLE ttOutUsers LIKE ttUsers. DEFINE INPUT PARAMETER TABLE FOR ttUsers. DEFINE OUTPUT PARAMETER TABLE FOR ttOutUsers. FOR EACH ttUsers: IF CAN-FIND(usuar_mestre WHERE usuar_mestre.cod_usuar = ttUsers.cod_usuar) THEN DO: CREATE ttOutUsers. BUFFER-COPY ttUsers TO ttOutUsers. END. END. |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
function createDataset(fields, constraints, sortFields) { //Passo 1 - Cria o dataset var dataset = DatasetBuilder.newDataset(); dataset.addColumn("id"); dataset.addColumn("descricao"); //Passo 2 - Invoca o serviço cadastrado no Fluig var servico = ServiceManager.getService("EMS2"); //Passo 3 - Carrega o objeto utilitário para integração com Progress var serviceHelper = servico.getBean(); //Passo 4 - Carrega a procedure persistente CostCenterUtils.p var remoteObj = serviceHelper.createManagedObject("CostCenterUtils"); //Passo 5 - Invoca a procedure que retorna uma string com os tipos de CC var types = serviceHelper.createStringHolder(); remoteObj.readCostTypes(types); //Passo 6 - Quebra a string em um array com cada um dos tipos var typeArray = types.getStringValue().split(","); //Passo 7 - Adiciona cada tipo retornado for(var pos = 0; pos < typeArray.length; pos++) { dataset.addRow(new Array(pos + 1, typeArray[pos])); } return dataset; } |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
function createDataset(fields, constraints, sortFields) { var dataset = DatasetBuilder.newDataset(); dataset.addColumn("id"); dataset.addColumn("descricao"); var servico = ServiceManager.getService("EMS2"); var serviceHelper = servico.getBean(); var remoteObj = serviceHelper.createManagedObject("CostCenterUtils"); var types = serviceHelper.createStringHolder(); remoteObj.readCostNatureTypes(types); var typeArray = types.getStringValue().split(","); for(var pos = 0; pos < typeArray.length; pos++) { dataset.addRow(new Array(pos + 1, typeArray[pos])); } return dataset; } |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
function createDataset(fields, constraints, sortFields) { //Cria a estrutura do Dataset var dataset = DatasetBuilder.newDataset(); dataset.addColumn("conta"); dataset.addColumn("titulo"); dataset.addColumn("natureza"); dataset.addColumn("tipo"); //Recupera o serviço e carrega o objeto remoto var servico = ServiceManager.getService("EMS2"); var serviceHelper = servico.getBean(); var remoteObj = serviceHelper.createManagedObject("CostCenterUtils"); //Lê as contas correntes var holder = serviceHelper.createResultSetHolder(); remoteObj.readCostCenters(holder); //Percorre os registros, carregando o Dataset com os dados var rs = holder.getResultSetValue(); while (rs.next()) { var conta = rs.getObject("conta"); var natureza = rs.getObject("natureza"); var tipo = rs.getObject("tipo"); var titulo = rs.getObject("titulo"); dataset.addRow(new Array(conta, titulo, natureza, tipo)); } return dataset; } |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
function createDataset(fields, constraints, sortFields) { //Cria a estrutura do Dataset var dataset = DatasetBuilder.newDataset(); dataset.addColumn("conta"); dataset.addColumn("titulo"); dataset.addColumn("natureza"); dataset.addColumn("tipo"); //Recupera o serviço e carrega o objeto remoto var servico = ServiceManager.getService("EMS2"); var serviceHelper = servico.getBean(); var remoteObj = serviceHelper.createManagedObject("CostCenterUtils"); //Lê as contas correntes var holder = serviceHelper.createProDataGraphHolder(); remoteObj.readCostCenters(holder); //Percorre os registros, carregando o Dataset com os dados var ttCC = holder.getProDataGraphValue().getProDataObjects("ttCC"); for (var row_index = 0; row_index < ttCC.size(); row_index++) { var row = ttCC.get(row_index); dataset.addRow(new Array(row.get("conta"), row.get("titulo"), row.get("natureza"), row.get("tipo"))); } return dataset; } |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
function createDataset(fields, constraints, sortFields) { //Cria o novo Dataset var dataset = DatasetBuilder.newDataset(); dataset.addColumn("usuario"); dataset.addColumn("nome"); //Recupera os usuários do Fluig var campos = new Array("colleaguePK.colleagueId", "colleagueName"); var colleaguesDataset = DatasetFactory.getDataset("colleague", campos, null, null); //Instancia o servico var servico = ServiceManager.getService("EMS2"); var serviceHelper = servico.getBean(); //Transforma o dataset em um ResultSet (v9) e cria holder para saida var inputTT = colleaguesDataset.toResultSet(); var holder = serviceHelper.createResultSetHolder(); //Invoca a procedure no Progress serviceHelper.getProxy().verifyUsers(inputTT, holder); var rs = holder.getResultSetValue(); while (rs.next()) { dataset.addRow(new Array(rs.getObject("cod_usuar"), rs.getObject("nom_usuario"))); } return dataset; } |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
function createDataset(fields, constraints, sortFields) { //Cria o novo Dataset var dataset = DatasetBuilder.newDataset(); dataset.addColumn("usuario"); dataset.addColumn("nome"); //Recupera os usuários do Fluig var campos = new Array("colleaguePK.colleagueId", "colleagueName"); var colleaguesDataset = DatasetFactory.getDataset("colleague", campos, null, null); //Instancia o servico var servico = ServiceManager.getService("EMS2"); var serviceHelper = servico.getBean(); //Transforma o dataset em um ProDataGraph (v10) e cria holder para saida var inputTT = serviceHelper.toProDataGraph(colleaguesDataset); var holder = serviceHelper.createProDataGraphHolder(); //Invoca a procedure no Progress serviceHelper.getProxy().verifyUsers(inputTT, holder); var ttCC = holder.getProDataGraphValue().getProDataObjects("ttOutUsers"); for (var row_index = 0; row_index < ttCC.size(); row_index++) { var row = ttCC.get(row_index); dataset.addRow(new Array(row.get("cod_usuar"), row.get("nom_usuario"))); } return dataset; } |
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas