Você está na página 1de 110
ADVPL Web Services Protheus - Versao 12 wf ADVPL Web Services O- Todos os direitos autorais reservados pela TOTVS S.A. Proibida a reproducao total ou parcial, bem como a armazenagem em sistema de recuperacao e a transmissao, de qualquer modo ou por qualquer outro meio, seja este eletrnico, mecanico, de fotocépia, de gravac3o, ou outros, sem prévia autorizagao por escrito da proprietiria, 3 O desrespeito a essa proibicdo configura em apropriagao indevida dos direitos autorais e patrimoniais da TOTVS. Conforme artigos 122 e 130 da LEI no. 5.988 de 14 de Dezembro de 1973. / PROTHEUS - VERSAO 12 nif ADVPL Web Services Sumario oLepay 1. Objetivo 2. Introducdo aos WEBSERVICES 2.1, O Que E Um Webservice Wsdl 2.2, Oqueéum Xml... 2.3. OqueéSoap 2.4, Oque éUddi 3. O Servidor Protheus como um servidor WEBSERVICES .. Configurando servidor de WEBSERVICES.... Médulos Web Explicando o INI do WEBSERVICES.. WSINDEX - Indice de Servicos. Processamento de Funcées... Codificando 0 servigo Testando o servi yea Nae 10. Consumo de servicos 11, TWsdiManager.... 12. _Criando um WEBSERVICE de Gravacio, 12.1. Definigao de estrutura 13. Apéndices ....... sn 13.1, Guia De Referéncia Rapida; soe Bese reEfe seate pelo WebServices. io Del 14. Getwscerror- Recuperacé 15. Wscerr000 / wsdl nao eee mais de um servico declarado. 16. Wscerr001 / Nao Ha we lings Para A Geracao Do Servico. 17. Wscerr003 / [Xxx / Y} eration Nao Suportado. 90, 18. Wscerr004 / Nao Implementado (001 / / Wsdltype_Name) 94 3 19. Wscerr006 / Wsdl Invalido Ou Nao Suportado. 94 20. Wscerr007 / Wsdl Invalido Ou Nao Suportado | 91 21. Wscerr008 / Retorno Nullparam Invalido. 91 22. Wecerr009 / Internal Error (X) a 23. Wscerr010/{Struct. TypelEstrutura / Tipo Incompleto 92 5 24, Wecerr011 / Retorno Nullparam Invalido 92 25. Wecerr012 / Internal Error (X) 92 26, Wscerr013 / [Soap_Type] Unexpected Type 93 27. Wscerr014 / Inval 28. Wscerr015 / node [wood] as [yyy] on soap response not found. 93 Nullparam Init 93 5 5 / PROTHEUS - VERSAO 12 nif ADVPL Web Services 29. 30. 31. 32. 33, 34, 35. 36. 37. 38. 39. 40. 41, 42, 43, 44, 45, 46. 47. 48, 49. 50. 51. 52, 53. 54, 55. 56. 57. 58. 59. 60. 61. 62. 63, 64, 65. Wscerr016 / requisicéo https nao suportada neste build. hood .. Wscerr018 / Http[S] Requisi¢ao Retornou [Empty] Wscerr019 / (Xxx) Arquivo Nao Encentrado. Wscerr020 / ( x0% / ferror yyy ) falha de abertura. Wscerr021/[Info] Wsdl Parsing [Parser_Warning] Wscerr022 / [Info] Wsdl Parsing [Parser_Error] Wscerr023/[Xv0d Falha Inesperada Ao Importar Wsdl 95 3 Wscerr024 / [Msg_Info] Message Nao Encontrada. 95 ‘ Wscerr025 / [Bind_Info] Binding Néo Encontrado 95 Wscerr026/Targetnamespace Nao Definido No Wsdl 96 Wscerr027/[Oper_Info] Bind:Operation Nao Encontrado. a 96 Wscerr028/{Port, Info] Porttype Nao Encontrado Em Aport Rau 2 96 Wscerr029/[Port_InfolPorttype Naocontém Operacdes 96 Wscerr031 / [Sctuct_Name] Tipo Sem Namespace S& 97 Wscerr032 / [Short_Ns] Namespace Nio Encontrado..../\°2) 7 Wscerr033/[Long. Ns] Namespace Sem Import Declaradd 7 Wscerr034/Info_Ns] Namespace Sem Location liformado 7 Wscerr035 / [Type] Tipo Indet 7 Wscerr036 / Defi & 98 Wscerr037 / [Type] Estrutura Internallnesperada 98 Wscerr038 / [Param] Wsdl Invslide Ou Naa’Suportado 98 Wscerr039 / Unexpected Dumptype [4]. Wscerr040 / Unexpected Schema Type'[XI.. ‘Wscerr041 / [Notnil_Message] Wscerr042 / Url Location NaoEspecificada Wscerr043 / [Soap_Styl¢} Soapstyle Desconhecido. Wscerr044 / Nao Foi Péssivel Post: Url [Urp_Post] Wscerr045 / Retorno Vazio De Post : Url [Header_Ret] Wscerr046 / Xml Warning [Xml_Warning] ( Post Em ). Wscerr047 / Xml Error [Xml_Error] ( Post Em ) Wscerr048 / Soap Fault [Fault_Code] ( Post Em ): [Fault_Stringl..... Wscerr050 / Soap Response Ref (Rpc) Not Found. Wscerr051 / Soap Response Return (Rpc) Not Found Wscerr052 / Enumeration Failed On [Struct_Type] Wscerr053 / Wsrpcgetnode (Object) Not Found.... Wscerr054 / Binding Soap Nao Localizado No Wsdl Wscerr055 / Invalid Property Type (X) For [Param] (Y). / PROTHEUS - VERSAO 12 nf ADVPL Web Services © 66. 67. 68. 6. 70. 7. 72. 73. 74, 75. 7. 7. 78. 79. 80. at. 82. 83, 84, 85. 86. 86.1. 97. sue 03 Wscerr057 / Invalid Xml-Soap Server Response: Soap-Envelope Empty..... o so 103 Wscerr058 / Invalid Xml-Soap Server Response : Invalid Soap-Envelope [Soap_Env] Object As Valtype [X]104 Wscerr059 / Invalid Xml-Soap Server Response: Soap-Body Not Found. 104 Wscerr060 / Invalid XmI-Soap Server Response: Soap-Body Envelope Empty. 104 Wscerr061 / Invalid Xml-Soap Server Response: Invalid Soap-Body [Body] Object As Valtype [Type]...104 Wscerr062 / Invalid Xml-Soap Server Response: Unable To Determine Soap Prefix Of Envelope [Soap_Env] 105 Wscerr063 / Argument Error : Missing Field [Node] As Type... Wscerr064 / Invalid Content-Type Return (Http_Head) From , Wscerr065 / Empty Content-Type Return (Header) From ... Wscerr066 / Invalid Invalid Wsdl Content-Type (Http_Head) From ¢ Wscerr068 / Not Xml Source From ... : Wscerr069 / Byref [Param] With No Input Argument : Unsupported Webservice Wscerr070 / Requisico Https Nao Suportada Neste Build'[Protheys) Build] Wscerr071 / Invalid Http Header (Httphead) From 2Url> Wscerr072 / Http Request Error (Header) Front’2UFI>.....» Wscerr073 / Build (Build) Xml Internal Error... Nomenclatura dos Servigo$....nnnym Wscerr056 / Invalid Xml-Soap Server Response: Soap-Envelope Not Found... se 05 105 105 106 Nomenclatura de Estruturas Nomenclatura de Dados ( Canipos) Tipos de Dados Basicos. Métodos (Agées) / PROTHEUS - VERSAO 12 wf ADVPL Web Services © 1. Objetivo ‘Ao final do curso, o treinando deverd ter desenvolvido os seguintes conceitos, habilidades e atitudes: A) Conceitos: = estruturas para implementacao aplicagées ADVPL WEBSERVICES = introdugio as técnicas de programacio voltadas a miltiplos servicos baseados na estrutura de programacéo ADVPL = introdugo aos conceitos de inserir, alterar, excluir e apresentacao dos dados via pratocolo SOAP. B) Habilidades e técnicas — desenvolvimento de aplicacées voltadas ao ERP/WEBSERVICES Protheus — _andlise de fontes de média complexidade — desenvolvimento de um servico WebServices e seu Client D) Atitudes a serem desenvolvidas: = adquirir conhecimentos através da andlise das funcionalidades disponfVeis no ERP Protheus; — _estudar a implementacao de fontes com estruturas orientadas a objetos em WEBSERVICES; 2. Introducdo aos WEBSERVICES 2.1. O Que E Um Webservice Wsdl Web service é uma solugao utiizada na integragao de sistemas.e na comunicacao entre aplicacées diferentes. Com esta tecnologia, ¢ possivel que novas aplicagdes”possam.intéragir com aquelas que jé existem e que sistemas desenvolvidos em plataformas diferentes sejamt compativeis. Os Web services so componentes que permitem 3s aplicacdes enviar e receber dados em formate XML. Cada aplicacao pode ter a sua propria "linguagem", que é traduzida para uma linguagem universal, o formato XML. Para as empresas, os Web services poem trazef-agilidade para os processos ¢ eficiéncia na comunicacao entre cadeias de produco ou de logistica. Toda & qualquer’ comunicagio entre sistemas passa a ser dindmica e principalmente segura, pois nao ha intervencao humana. Essencialmente, 0 Web Service faz.¢omn que os recursos da aplicagao do software estejam disponiveis sobre a rede de uma forma normatizada. Outras tecnologias fazem a mesma coisa, como, por exemplo, os browsers da Internet acedem. as paginas Web disponiveis usando por norma as tecnologias da Internet, HTTP e HTML. No entanto, estas tecnologias do sao bem sucedidas na comUnicacao e integraco de aplicagdes. Existe uma grande motivagao sobre a tecnologia Web Service pois possibilita que diferentes aplicacdes comuniquem-se e utilizem recursos diferentes. Utilizando a tecnologia Web Service, uma aplica¢ao pode invocar outra para efetuar tarefas simples ou complexas, mesmo que as duas aplicacées estejam em diferentes sistemas ¢ escritas em linguagens diferentes. Por outras palavras, 0s Web Services fazem com que os seus recursos estejam disponivels para que qualquer aplicacao cliente possa operar e extrair os recursos fornecidos. Os Web Services so identificados por um URI (Uniform Resource Identifier, descritos e definidos usando XML (Extensible Markup Language). Um dos motivos que tornam os Web Services atrativos é o fato deste modelo ser baseado em tecnologias padrao, em particular XML e HTTP (Hypertext Transfer Protocol). Os Web Services so Utilizados para disponibilzar servicos interativos na Web, podendo ser acessados por outras aplicacdes usando, por exemplo, 0 protocolo SOAP (Simple Object Access Protocol) / PROTHEUS - VERSAO 12 wf ADVPL Web Services © © objetivo dos Web Services é a comunicacao de aplicagdes através da Internet. Esta comunicagao é realizada com intuito de facilitar a EAl (Enterprise Application Integration) que significa a integracao das aplicagées de uma empresa, ou seja, interoperabilidade entre a informacao que circula numa organizagao nas diferentes aplicagdes como, por exemplo, 0 comércio electrénico com os seus clientes e seus fornecedores. Esta interacao constitui o sistema de informagao de uma empresa. E, para além da interoperabilidade entre as aplicacées, a EAl permite definir um workflow entre as aplicacées e pode constituir uma alternativa aos ERPs (Enterprise Resource Planning). Com um workflow, é possivel atimizar e controlar processos e tarefas de uma determinada organizagio. Tecnologias As bases para a construgéo de um Web service séo os padrées XML e SOAP. O transporte dos dados ¢ realizado normalmente via protocolo HTTP ou HTTPS para conexdes seguras (0 padréo nao determina o protocolo de transporte). Os dados sao transferidos no formato XML, encapsulados pelo protocolo SOAP. 2.2. O que éum Xml XML (eXtensible Markup Language) é uma recomendaco da W3C para gerar linguagens We marcac3o para necessidades especias. um dos subtipos da SGML (acrénimo de Standard Generalized) Markup’ Language ou Linguagem Padronizada de Marcacao Genérica) capaz de descrever diversos tipos dé \dados.-Seu~propésito principal é a facilidade de compartilhamento de informacées através da internet. Entre linguagens baseadas em XML incluem-se XHTM[ {formato para paginas Web), RDF, SDMX, SMIL, MathML (formato para expresses matematicas), NCL, XBRL, XSIL e SVG (formato grafico vetoria). A principal caracteristica do XML, de criar uma infraestrutura Gnica para diversas linguagens) é que linguagens desconhecidas e de pouco uso também podem ser definidas sem maior trabalho e sem\necessidade de submissao aos comités de padronizacao. Em meados da década de 1990, 0 World Wide Web% Consortium (W3C) comecou a trabalhar em uma linguagem de marcacdo que combinasse a flexibilidade,da SGMb-com a simplicidade da HTML. O principio do projeto era criar uma linguagem que pudesse ser ida por Software, e integrar-se com as demas linguagens. Sua filosofia seria composta por varios principios importantes: = Separago do contetido da formatacao = Simplicidade e legibilidade, tanto para humanos quanto para computadores — Possibilidade de criagio de tags sem limitagio = Criagéo de arquivos para validacio de estrutura (chamados DTDs) — Interligago de bancos de dados distintos Concentracao na estrutura da informagao, e no na sua aparéncia (© XML & um formato para a criagdo de documentos com dados organizados de forma hierarquica, como se vé, frequentemente, em documentos de texto formatados, imagens vetoriais ou bancos de dados. Pela sua portabilidade, j que ¢ um formato que nao depende das plataformas de hardware ou de software, um banco de dados pode, através de uma aplicagdo, escrever em um arquivo XML, e um outro banco distinto pode ler entao estes mesmos dados. \Vantagens e desvantagens Com relag3o aos outros "formatos universais para intercimbio de dados" ja propostos e experimentados, 0 XML apresenta diversas vantagens técnicas, mas so as vantagens ndo-técnicas que 0 tornam um tépico de tio grande importancia: ; / PROTHEUS - VERSAO 12 wf ADVPL Web Services © - um padre “de fato" e formal: em um universo onde cada desenvolvedor e cada fabricante tém a liberdade de ctiar e impor seu préprio formato, a aceitacao do XML tem sido vista como o seu maior trunfo. — Tem sua origem em uma das instituicées de padronizacao mais abertas e dindmicas, o W3C. Se baseia na experiéncia de sucesso do SGML, sendo considerado inclusive 0 "sucessor da SGML", Vantagens técnicas - Ebaseado em texto simples = Com relagio aos formatos néo-texto (bindrios), um debate existe desde os tempos do SGML, mas ainda hoje a comunidade de usudrios e desenvolvedores prefere o texto ao bindrio, e as opcdes do tipo txt.zip (texto comprimido) tais como o OpenDocument sio a saida mais largamente adotada Suporta Unicode, permitindo que a maior parte da informacdo codificada em linguagem humana possa ser comunicada Pode representar as estruturas de dados relevantes da computagao: listas, registros, arvores ~ auto documentado (DTDs e XML Schemas}: 0 proprio formato tescrevéla bua estrutura e nomes de campos, assim como valores validos ~ Asintaxe restrita e requerimentos de parsing tornam, 63-algoritmio’ de andlise mais eficientes e consistentes - Eeeditavel, devido a popularidade do XML nos dias'de hoje, ¢omn‘diferentes niveis de automacao, em qualquer ambiente: = Sem automagao: ediitores txt antigos, tais como vi * Com recurso automético de destaque: 9 maiorparte dos editores txt modernos oferece recursos para destaque de XML (distincao visualentre tag, atfibuto e contetido) © Com recursos de visualizacao e controle (folding) da hierarquia: editores txt mais especializados e editores simples acoplados a navegad6res © Com recursos de validagdo e andlisé sintética: ferramentas um pouco mais sofisticadas, orientadas a programadores, tais como.as IDEs oWorientadas a contetido, tais como editores XHTML, ambos vem se adaptando para lidar com outros fofrhatos XML, interpretando DTD, XSLT ou XML Schema Desvantagens técnicas ‘As desvantagens em geral se(festringem as aplicacdes que nao demandam maior complexidade, tais como vetores, listas associativas (chave-valor) e informacées relativas & configura¢ao, em que o bom senso estabelece a melhor escolha (entre o XML ou um formato menos popular). "XML simples" pode ser substi XML. ido por formatos mais simples, como properties, YAML, JSON e Simple Outline s principais critérios para se avaliar a demanda por um formato mais simples so: — Velocidade: a grande quantidade de informacao repetida prejudicando a veloci de informacao (quando esta é transportada na forma de XML) — _Editabilidade txt: 0 arquivo "XML simples" (como se pode ver nos exemplos acima) pode ser bem pouco intuitive, dificultando sua edic3o com editores txt por pessoas leigas, mais ainda no caso de volume de dados muito grandes, onde o XML pode sequer ser facilmente editavel por pessoas experientes © formato properties, por exemplo, é mals facil de ser editado por leigos, por ser apenas uma lista de itens do tipo chave-valor, € 0 JSON é um exemplo de um formato mais pratico e rapido em contexto Javascript. / PROTHEUS - VERSAO 12 wf ADVPL Web Services © 2.3. O que é Soap SOAP, originado do acrénimo inglés Simple Object Access Protocol, e em portugués Protocolo Simples de Acesso a Objetos, é um protocolo para troca de informacdes estruturadas em uma plataforma descentralizada e distribuida Ele se baseia na Linguagem de Marcacdo Extensivel (XML) para seu formato de mensagem, e normalmente baseia~ ‘se em outros protocolos da Camada de aplicac3o, mais notavelmente em Chamada de Procedimento Remoto (RPC) Protocolo de Transferéncia de Hipertexto (HTTP), para negociacao e transmissao de mensagens. SOAP pode formar a camada base de uma pilha de protocolos de web services, fornecendo um framework de mensagens basico sob 0 qual os servicos podem ser construidos. Este protocolo baseado em XML consiste de trés partes: um envelope, que define o que est na mensagem e como processé-la, um conjunto de regras codificadas para expressar instancias dos tipos de dados definidos na aplicagso, uma convencio para representar chamadas de procedimentos e respostas. Sua especificagao define um framework que prové maneiras para se cofstrui mensagens que podem trafegar através de diversos protocolos e que foi especificado de forma a ser Independente de qualquer modelo de programacao ou outra implementacao especifica. Por ndo se trata de um_protscolo de acesso a objetos, 0 acronimo nao é mais utilizado. Geralmente servidores SOAP sao implementados utilizando:se’ servidores HTTP, embora isto no seja uma restrig3o para funcionamento do protocolo. As mensagens)SOAP. $40 documentos XML que aderem a uma especificacao fornecida pelo érgio W3C. primeiro esforco do desenvolvimento do SOAP fol iinplemerttar RPCs sobre XML. 2.4. OqueéUd UDDI (originado do acrénimo inglés Universal(Description, Discovery and Integration) é um servico de diretério onde empresas podem registrar(publicar) e*bustar (descobrit) por servicos Web (Web Services). UDDI é ainda um framework de plataforma independente para descricao de servicos, descobrindo as empresas, € integrar os servicos de negécios usando-a internet. A comunicagao € realizada através do SOAP e as interfaces web service sio descritas por WSDL Um servico de registro UDDI,6 um Web Service que gerencia informagao sobre provedores, implementagdes e metadados de servicos. Provedores de servicos podem utilizar UDDI para publicar os servicos que eles oferecem. Usuarios de servicos podem usar UDDI para descobrir servicos que Ihes interessem ¢ obter os metadados necessarios para utilizar esses servicos. Aeespecificacao UDDI define: — APls SOAP utilizadas para publicar e obter informagées de um registro UDDI — Esquemas XML do modelo de dados do registro e do formato das mensagens SOAP — Definigdes WSDL das APIs SOAP Definigées de registro UDDI (modelos técnicos - tModels) de diversos sistemas de identificacdo e categorizacao, que podem ser utilizados para identificar e categorizar registros UDDI 5 / PROTHEUS - VERSAO 12 wf ADVPL Web Services © 3. O Servidor Protheus como um servidor WEBSERVICES servidor Protheus pode ser configurado para trabalhar como um servidor WEBSERVICES. © Protheus, a partir da versio AP7, possui ferramentas nativas ¢ integradas com a LIB de Infraestrutura do ERP, para desenvolvimento de aplicagdes ‘Cliente’ e ‘Server’, utilizando a tecnologia dos Web Services. Para melhor compreensio do assunto, os tépicos relacionados a ambos foram didaticamente separados em Aplicacdes Server e Aplicacdes Cliente, respectivamente. Nos t6picos 'Comandos' e ‘Fungées’, s0 abordadas respectivamente as diretivas e funcées da Lib de Infraestrutura do ERP disponibilizadas para o desenvolvimento de ambas as aplicagées, Cliente e Server. No tépico 'Exemplos AdvPL’, so demonstrados os exemplos ‘atémicos' de uso das fungdes e comandos. 4. Configurando servidor de WEBSERVICES Nos servicos HTTP e HTTPS, é possivel especificar as configuracdes padrao, deste protocolo, propriedades g gerais aplicadas a todos os hosts e URLs de acesso utilizadas pelos projetos WEBSERVICES. Anabilitagdo do servico de HTTP é necesséria para a instalacag\dés médulds WebService. Durante a instalacso de um médulo WebService, caso 0 servico de HTTP ndovesteja habilitado, esta operacao ser executada automaticamente. Ao expandir 0 tépico "Servidor HTTP", so mostrados-és itens HTTP, HTTPS e FTP, que permitem a edicso independentemente das configuracdes de cada um destes protocolos. Para cada um deles, sao permitidas as operacies de edico e exclusio da respectiya configuracdo. Neste tdpico iremos abordar somente a eriacdo de’ Servico HTTP e WEBSERVICES Editando a Configuracao HTTP. Para inserir / editar uma configuracdo HTTP: 1. Abra 0 Wizard localizado na pasta Smartclient to / PROTHEUS - VERSAO 12 nf ADVPL Web Services Bie i ae ent us ae cr umiiat Sota won mo Srimiine Goopene. 1 [| Gem Sumi ot ave sat oe anne ane rematou ar sore Olea on - Can ia) Femsece 2. Clique no icone Wizard & 3. No tépico "Servidor HTTP”, ps SS ° cue nas Agdes Relacionadas. aw Ps aezvee Ns 4, Clique em editar e a tela se abriré: / PROTHEUS - VERSAO 12 & é g eo roopatsa epapenatston /// ADVPL Web Services © Assistente de Configuragao HTTP x Configuracdes da Secao ToTvs are aa rmténcia @ Fretocob Hema Path Arquivos Pots de Coneio MTOTVS 12iRcrsigaPROT-EUS DATA 2 ombiete Provessu oe Respusta (renhur) (rent =z Pretinose sa Pretocale (nina) tino ta retool nme) 0 a Path para plone de arcuivos Tine-Out de Sesser WEBEX (em securdos) a Seré apresentada uma tinica janela, contenido as configuracdes padrées atuais para o servigo de http. Protocolo Habilitado Através deste campo ¢ possivel desabilitar 4 utilizagio do protocolo http, sem deletar as configuragées atuais, desta secao. Nome da Instancia Este campo no esta disponivel para edi¢o. Caso esteja preenchido, informa que um médulo Web foi instalado no host “HTTP [default}"; léste caso, nao é possivel alterar as informacdes de path, porta de conexao, ambiente e processo de resposta, Se for necessario alterar as informacdes de configuracéo padrao do protocolo, deve-se utilizar o assistente de edigdo de Médulos Web, editando a instancia que esta utilizando a seco http [default] Path de Arquivos Especifica o diretorio raiz a ser utilizado pelo protocolo, ITP" para 0 acesso a arquivos estéticos e imagens. Deve ser informado com unidade de disco e caminho completo. Porta de Conexdo Informa a porta de conexao utilizada, Para HTTP, a porta padrao é a 80. / PROTHEUS - VERSAO 12 wf ADVPL Web Services © Ambiente Permite selecionar um ambiente (Environment) neste ByYou Application Server para atender as solicitagdes de processamento de links "apr" Processo de Resposta Permite selecionar um proceso WEB/WEBEX configurado neste ByYou Application Server para atender as solicitagdes de processamento de links ".apw'. Instancias de Protocolo (minimo e maximo) Nestas configuragées, & possivel especificar um ntimero minimo e maximo de processos internos referentes 20 servico de HTTP. Estes processos internos séo utilizados para 0 atendimento simultaneo das requisicoes de contetido estatico, arquivos, imagens, e demais arquivos disponiveis a partir da pasta definida em “Path de Arquivos", através deste protocolo (") Path para Upload de Arquivos Caso o host HTTP [default] esteja sendo utilizado com um process de-resposta\gle suporte a funcionalidade de Upload de arquivos via HTTP, através desta chave, é possivel configurar apartir de qual diretério serao gravados 0 arquivos enviados via http (relativo ao diretdrio raiz do ambiente utilizado pelo processo de resposta). Esta configuracao é atualizada, automaticamente, conforma6 médlo Web instalado. Timeout de Sessées WEBEX (em segundos) ‘Ao configurar um ou mais médulos Web que itilizem séssdes de ususrio através de um Processo WEBEX, possivel definir qual ser o tempo de permanéntia em inatividade em meméria das variaveis de sessdes utilizadas pelos usuarios do médulo web, Caso seja nao especificado, o valoF padrao 6 equivalente a 3600 segundos (uma hora). (1 Vale ressaltar que uma thread HTTP ng6 possui, necessariamente, ligacio implicita com uma Thread AdvPL. Um Web Browser, quando solicitacuft arquivo HTML ou uma imagem, estabelece uma conexdo HTTP com 0 ByYou Application Server, para recever o dado solicitado. Quando o browse recebe a informacao desejada, fecha esta conexdo, mantendo a Thread HTTP do Protheus dispontvel para atender a outras requisicBes HTTP, oriundas deste ou de outro Web Browser. / PROTHEUS - VERSAO 12 /// ADvPL Web Services © Assistente de Configuragao HTTP x Oo Configuracdes da Seco TOTVS are aa rmténcia Frerocod Haamiads Path Arquivos Pots do Conexio MTOTVS 12iRcrsigaPROT-EUS DATA 2 ombiete Provessu oe Respusta m2 (rent =z retinoie a Pretocale (nina) tino ta retool nme) 1 10 Path para plone de arcuivos Tine-Out de Sesser WEBEX (em securdos) 000 Para gravar as configuragBes atuals, ee Se ‘Ao confirmar a gravacio, 0 arquivo de conte do ByYou Application Server (appserver. 0 Assistente serd reiniciado, a principal do Wizard. serd atualizado HTP Confirma a aravacéo das Confguracdes ? se) Ee) ‘a / PROTHEUS - VERSAO 12 nf ADVPL Web Services © 5. Médulos Web Neste tépico, € possivel instalar, configurar e excluir as configuracdes € arquivos adicionais pertinentes aos médulos Web disponibilizados pelo Sistema. (Os médulos Web disponibilizados sao: = DW- Data Warehouse = BSC- Balanced Scorecard = GE-Gestio Educacional = TCF - Terminal do Funcionério (RH on-line) = PP- Portal Protheus — WS - Web Services — WPS - WebPrint/WebSpool — MAK - Médulo Webex Makira (ambientes customizados) = GPR- Gestdo de Pesquisas e Resultados = GAC- Gestio de Acervos Instalando um Médulo Web 3 Para instalar um médulo Web: ‘Abra 0 Wizard localizado na pasta smartclient = 5: : = er Sacer Ponca ar Orme 2. Clique no icone Wizard 3. Posicione com o mouse sobre o tépico “Médulos Web" na arvore de t6picos, e clique em "Novo Médulo *, nas Agdes Relacionadas. 4. Clique em editar e a tela se abrirs z / PROTHEUS - VERSAO 12 /// ADVPL Web Services © Agsistente de Canfiguragdo de Médulo Web - Novo médulo x Configuracdes Bésicas do Médulo TOTVS wav [ere asa : essen Z| Dr Data Werlouce Tear do Funcerate (FH OLN SAPS -WwekPrint & sl Médulo Web Selecione o médulo Web que devé'ser'instalada. Para instalacao do médulo PP - Portal Protheus, GPR - Gestao de Pesquisa e Resultado e GAC Gestio deAcervos, é necesséria a instalacao prévia do médulo Web Services. Nome da Instancia Informe 0 nome para identificacad desta configuragéo do médulo Web; nao utilize caracteres acentuados ou espacos. Este nome sera utilizado para individualizar as configuracées das instalages do médulo Web, assim, se a empresa necessita aplicar diferentes configuracdes para um mesmo médulo Web, é possivel instala-lo sob uma ova instancia, Exemplo: Na instalagdo do médulo GE - Educacional, cada unidade educacional pode utilizar um conjunto diferente de imagens para apresentacio do seu site ou, ainda, um environment diferente no Server Protheus da versao correspondente; para isto, seré necessério criar diferentes instancias. Diretério Raiz de Imagens (Web Path) Informe o diretério para instalagao das imagens e dos demais arquivos (. css,jar.htm, etc.) deste médulo, que serdo utlizados para apresentacao no browser. Este diretério sera criado abaixo do diretério raiz (RootPath) do Ambiente (environment) selecionado para a stalagao. / PROTHEUS - VERSAO 12 wf ADVPL Web Services © Para cada instalacdo de médulo Web, deverd ser especificado um diretério diferente, iniciando com o sinal de "\" (barra inversa), Environment Selecione o environment (ambiente) que sera utilizado para execucao do médulo. Séo relacionados todos os ambientes disponiveis no Server ativo. Habilitar processos na inicializagao do Servidor Caso esta configuracao seja selecionada, os processos WEB / WEBEX criados para esta configuracao de médulo sero automaticamente inseridos na configuracdo OnStart do ByYou Application Server. URL do Protheus Web Services Este campo somente exibido na instalacdo do médulo WS - WebServices Proth preenchido com a URL utilizada na instalacao do médulo Web Services, precedido por neste caso, deve ser Agsistente de Canfiguragdo de Médulo Web - Novo médulo x Configuracdes Bésicas do Médulo ToTvs viceto wee 1S - Merosiga Proteus Web Senvces , Ne da tania retina ic das images eh Ft) wens Pe 7 Hie see aa cate ce Seek? 5. Para prosseguir para a segunda tela, clique em "Avangar’ © Assistente ird consistir as informagSes fornecidas e determinar se o ambiente est apto para instalacdo do médulo, Deve-se observar que para instalacao dos médulos Web, é necessério que os pacotes de instalacao dos arquivos Web (. MZP) estejam disponiveis na pasta "SYSTEMLOAD" localizada abaixo do diretério raiz. / PROTHEUS - VERSAO 12 nf ADVPL Web Services © (RootPath) do Ambiente (environment). Caso os pacotes nao sejam localizados, seré apresentada uma janela de adverténci Ainstalacao poderé prosseguir; no entanto, os arquivos Web nao serdo descompactados, sendo apenas atualizada a configuracdo do servidor. Em seguida, serd apresentada a janela “Configuracao de Host x Empresas/Fil Deseja descompaciar 0 pacote de arquivos HTTP na pasta especiticada ? =a xs Assistente de Configuragao de Module Web - Novo médulo ae QO sone TOTVS Hose cP neuro cet wt) Selecone abrevesaial 6. Informe os dados conforme a orientacdo a segui rm ur Host Ratsionamertoe — Host: Informe o endereco Web a partir do qual o médulo sera acessado, por meio de um browser. Exemplos: “www.nomedosite.com.br" (para um ambiente Internet) “nomedoservidor" (para um ambiente Intranet). / PROTHEUS - VERSAO 12 e1'SAlOl nf ADVPL Web Services © Pode-se, adicionaimente, informar um diretério virtual apés 0 Host, separando-os por uma barra “/".Isto permite = que seja instalado, no mesmo host, mais de um médulo Web. 8 Exemplos: jomedoservidor/ws” (para webservices) omedoservidor/pp" (para o Portal) Nao se deve especificar 0 protocolo utilizado (como "HTTP://" ou *HTTPS://") Vale ressaltar que é possivel especificar um nome de host, nao sendo obrigatoriamente o nome da estacdo servidor, desde que o nome especificado esteja registrado em um servidor de DNS (que relaciona um nome de host ao IP do equipamento servidor) e visivel no ambito do parque de maquinas-cliente da aplicagao Web. Selecione as Empresa/Filiais Na drea "Selecao Empresas/Filiais’, selecione a empresa/filial para a qual esta sendo configurado este host. Se a instalacao for referente aos médulos BSC, PP e WPS, estard disponivelapenas a opcao "Todas as Empresas". 7. Apés informar o Host e selecionar um item da drea de "Selegad Empresa/Filiais", clique em “Relacionar’ 3 ‘A.amarragao do host informado com este item serd apresentada,fa jahela-"Relacionamentos". E possivel criar diversos relacionamentos, o Assistente, autonnaticamehte, ita criticar as amarracées, de acordo com as caracteristicas operacionais do médulo em instalac3o. 3 Assistente de Configuracéa de Médula Web - Nove médulo, x 5 OQ senhom TOTVS a ‘Host (Poole nclut 0 dete wrtuct) ‘Soleclen a EireesamFteh 2 7! esserer bene Exemplo: © médulo de WebServices nao permite amarrar um mesmo host a mais de uma empresa/filial; ja para médulo TCF, esta amarracdo é possivel. 8 Se necessario excluir um relacionamento, posicione o cursor sobre este e clique em "Excluir". / PROTHEUS - VERSAO 12 wf ADVPL Web Services © 9. Clique em "Avancar” para prosseguir. Nao é possivel prosseguir para a préxima tela sem que seja informada, no minimo, uma amarracao entre um host e uma Empresa/Filial 10. Informe os dados conforme a orientacao a seguir: Host Virtual Apresenta o host configurado, Empresa/Filial Apresenta a empresa/filial relacionada Minimo Usuarios Informe a expectativa minima de usurios que irdo acessar o site. Maximo Usuarios Informe a expectativa maxima de usudrios que irdo acessar oite) Com base nos campos "Minimo Usudrios" e "Maximo Usuarios”, 0 ssistente ird determinar a quantidade média de processos (working threads) que o site ir ut Exemplo: Minimo: 5 Maximo: 10 Com base nesta configuracio, 6:Protheus ifasdeterminar um nlimero de processos para atender a essa demanda. Considerando que a média de usuarios por'processo é de 10 para 1, neste caso, o Protheus iré configurar o numero minimo de 1 processo e 0 maximo de. A informacao do niimero minimé hao é necesséria; caso omitida, seré considerado 1 processo. A informacao do numero maximo é obrigatériay / PROTHEUS - VERSAO 12 nf ADVPL Web Services © Agsistente de Canfiguragdo de Médulo Web - Novo médulo x DOS 411, Para finalizar a instalagao do le clade sh inatzar. Edigfo de Confguracées, Web Services SERVER (Portal) aterado para [hip/Necalhost61/FP 1 Host [locshost8t/ps] acrescentado, CConfiurecies dos Jobs atteradas, Amarracées des lots alteradas. Doacompactagio do paccte do arquivee HTTP autorizada eseja mnciar a atuatzacdo cas Conrguragies 7 | ‘Ao confirmar a instalacdo, 0 pacote de arquivos do médulo Web seré descompactado no diretério raiz de imagens informado, e 0 arquivo de configuracdes do ByYou Application Server (appserver.ini) sera atualizado com as definicdes pertinentes a0 médulo (Host, Processos WEB/WEBE}). Ao final do processo de atualizagao, o Assistente seré reiniciado para apresentaco da tela inicial do Wizard. Feche o assistente e levante o servico em modo console para verificar o seu funcionamento an / PROTHEUS - VERSAO 12 / / ADVPL Web Services cere SMa eer ce CO ee rr a oe eet Leen a eeu Ce cet eee ce Peet eae ae Pen eee a cerca) ecm asa ce} PERO Meo mca) chee rier) 6. Explicando o INI do WEBSERVICES Um Web Service em AdvPL utiliza-se de Working threads para atender as solicitacdes de processamento através do protocolo HTTP. Para isso, existem duas maneirasde habilitar um Web Service: 1. Através da criagio}da seco [WebService], no arquivo de configuragéo (appserver.ini), do TOTVS | ‘Application Server 2. Configuracéo manual de um ambiente working threads extended (WEBEX), no arquivo de configuracéo (appserver.ini), do TOTVS | Application Server. A diferenga entre ambas é que a segunda opcao permite especificar mais detalhes do ambiente de execucao do servico, configurar os servicos de Web Sites simultaneamente e 0 atendimento diferenciado do processamento para mais de um host e diretérios virtuais. A seguir, observe um exemplo de como configurar 0 servidor TOTVS | Application Server para Web Services, utilizando a secdo [WebServices} PROTHEUS - VERSAO 12 /// ADVPL Web Services © Importante Esta configuracao exige que a secéo [HTTP] nao esteja configurada no TOTVS | a Application Server. J4 que a configuracao ira internamente habilitar o servigo de HTTP configurar 0 processo de resposta para o Web Services. Exercicio [WebServices] Enable=1; (Obrigatério) - Indica se o service esté habilitado (1) ou ndo (0). Environment=PROTHEUS; (Obrigatério) - Indica qual environment do Server que ird atendér 4s reqhisicdes. Conot (Opcional) - Permite a exibicio de informagdes ds, ‘status"internos do servico (padra0=0:desabilitado), Utilizado APENAS para depuracéo, em ‘casos especiticos, pois prejudica significativamente a performance do(s) seryigo(s) (Opcional) - Habilita a gravac3o dewum arquivo dé log (wsstrace.log), contendo as informacdes sobre todas as charhadas e statasido Web Service (padra0=0). Prepareln=01,01; (Obrigatorio) - Permite especificar quala empresa e filial do ERP sero utilizados para a montagem do ambiente de procéssamento as requisicSes. NameSpace-http://localhosti81; (Opcional) - Permite espetificar o nome do namespace'padrao’, utilizado pelo(s) servico(s) compilado(s}sem a definicao de 'NameSpace’. (Padrao-host atualmente utilizado). URLLocation=http://localhost:81; (Opcional) - Permite especificar a URL responsavel pelo atendimento as solicitacées de processamento do(s) servico(s) (padrao=host atualmente utilizado), No entanto, & possivel configurar o Web Service manualmente. Para isso, deve-se inicialmente habilitar 0 servico de HTTP do servidor Protheus, configurar um processo WEBEX apontando para funcdes internas de processamento dos Web Services e configurar um host através do qual as requisicoes de processamento serio, atendidas, / PROTHEUS - VERSAO 12 wf ADVPL Web Services Exercicio HTTP]; Configurago do protocolo HTTP Enable=1 Port=81 Path=F:\Protheus\Protheus12\Protheus_data\WEB [Locathost}; Configuracao do host da estacio local Defaultpage=wsindexapw Responselob=WSTeste [WSTestel; Configuracao do job para atender aos Web Services. Type=WEBEX; (Obrigatério) - Tipo do job para Web Services deve s@t WEBEX. OnStart=_WSSTART; (Obrigatério) - Configuracao fixa para Web Services: OnConnect=_WSCONNECT; (Obrigatério) - Configuracaosixa para Web Services. Environment=ENVTeste; Especifique qual 0 ambiente (Environment) do servidor Protheus que ir atender os Web Services. (Obrigatério) - Indica qual a{quantidade minima (padrdo) e maxima de processos (Threads) que serdo colocados na memérig para atender as solicitacGes de processamento do\s) servigo(s) publicado(s) (Opcional) - Permité-a Exibjes® Ge informacées dos status internos do servico (padrio=O:desabiltado). Utiizado APENAS para depuracao, em casos especificos, pois prejudica significativamente a performance do(s)servicols). Trace=1; (Opcional) - Habilita.a7gravacao de um arquivo de log (wsstrace.log), contendo as informacdes sobre todas as,chamadas e status do Web Service (padrao-0). Preparein=99,01; (Obrigatério) - Permite especificar qual empresa e filial do ERP serdo utilizadas para a montagem do ambjente de processamento das requisigées. NameSpace-http:/Jlocalhost:81/; (Opcional) - Permite especificar 0 nome do. namespace ‘padrao’ utlizado pelo(s) servico(s) compilado(s) sem a definicao de 'NameSpace’. (padréo=host atualmente utilizado). URLLocation=http://localhost:81/; (Opcional) - Permite especificar a URL responsavel pelo atendimento as solicitagdes de processamento dots) servigo(s) (padrao=host atualmente utilizado) / PROTHEUS - VERSAO 12 nf ADVPL Web Services © 7. WSINDEX - indice de Servicos Uma ver habilitada a configuracdo para Web Services, obtemos acesso a uma interface HTTP de consulta a0 indice de servicos publicados. Para tal, basta reiniciar 0 servidor TOTVS | Application Server apés a configuracdo ser realizada, abrir um navegador (por exemplo, Internet Explorer), e acessar 0 link http:///wsindex.apw. No caso do exemplo de configuracio acima, informe o endereco htto://localhost/wsindex.apw e observe a interface de consulta ao indice dos servicos. Exemplo Caso © host configurado para os Web Services seja o host local (localhost), deve-se acessar 0 endereco: http://localhost:90/ws. Se estiver utilizando o sistema Microsiga Protheus, a tela apresentada sera semelhante ao exemplo abaixo: Mle RST Teel Lista de Servigos Ativos “Naat ACS srainec * Serge ta icecagao de parcels eanunee eae ete Saale MsijePrheus EMSECMNTEGRATION SreDIcTIONERY romaLe revRUCHTION GRDETRATO RDFA CRDLOGIN CRDWENDA ‘CRMBELLERCUSTONERCONTAGT Observe que, na janela acima, so apresentados todos os servicos compilados e disponibilizados no repositério de objetos do ambiente configurado, Através dessa janela, € possivel obter mais detalhes de cada um dos servicos compilados. Cada servio ativo é um link para uma pagina que apresentara todos os métodos do servico com um link do servidor TOTVS | Application Server que fornecerd a descrico do servico (WSDL). Observe, a seguir, um exemplo com os detalhes do servico CFGTABLE. / PROTHEUS - VERSAO 12 //{ ADVPL Web Services © @ TOTVS | Web Services ‘urnespace epi abgeronemirosion.com babe ais rs Se ad aerate de Service SDL) CeoEUE sperma, ‘nawertoncias do carga dos Servicos Métodos do Servigo eriABLE Sea Ororvs " Através desta janela, é possivel obter a descric3o do servico WSI licar disponivel em “Descric¢ao do Servico (WSDL)". Ao clicar neste link, uma nova janela “x jindo © documento WSDL do servigo. Além disso, cada método do servico disponibilizado tang ira uma pagina onde so apresentados ‘os exemplos de pacotes SOAP que esse. meoto cid ficame 'spera para recepcao de parametros ¢ modelo de retorno do servico. oN) A stolen} Resposta da Requisic#io SOAP pa / PROTHEUS - VERSAO 12 (9 sopenssess0u94p50 spo) SALOL EP ap=pAHEO%I joLUNDNP AIS (9 sopenseso: snp 30 sopo'SALOL ep apEPaHOA!j LBUNLOP AISA 19S0SOpOL SALOL Ep OpEPHAOpONDUNDOPASg aspensaiso nf ADVPL Web Services © Caso, o fonte-client AdvPL do servico, seja gerado e esteja compilado no repositério atual, a interface de consulta habilita a funcionalidade de teste do Web Services, através da interface HTTP, apresentando no final da tela 0 botao testar. ‘Ao clicar nesse botdo, seré montada uma tela HTML para que os parémetros do servico sejam preenchidos. ‘Apés 0 preencher os parametros solicitados e submeté-los, 0 pacote de retorno do servico e seu respectivo status so retornados no browse. Conforme tela demonstrada abaixo: 7.4. Processamento d¢Fungées A operagao de buscar o hor ual no servidor no necessta de nenhum parmetro para execucéo, tendo um retorno: o horério att formato hh:mm:ss. A especificacao de um WebService permite que um servico seja declarado de modo a nao receber nenhum Pardmetro, mas exige que o Web Service sempre possua um retorno. 8. Codificando o servico Para codificar um servico, deve-se utilizar 0 TOTVS | Development Studio, criar um novo arquivo de programa e rele escrever o servico. A numeracao disposta a esquerda do cédigo fonte é meramente ilustrativa, no devendo ser digitada. Essa numerago ¢ utilizada mais abaixo, para detalhar o cédigo exemplo linha a linha. 1. include "Protheus.ch" 2. include "ApWebSRV.ch’ 3. #include "TbiConn.ch' 4, WSSERVICE SERVERTIME Description "VEJA O HORARIO" / PROTHEUS - VERSAO 12 wf ADVPL Web Services © 5, WSDATA Horario AS String 6. WSDATA Parametro AS String [1String Dado AdvPL do tipo string, 11Date Dado AdvPL do tipo data. [Minteger Dado AdvPL do tipo numérico (apenas nimeros inteiros) [/Float Dado AdvPL do tipo numérico (pode conter ntimeros inteiros fe nao-inteiros. //Boolean_ Dado AdvPL do tipo booleano (Iogico). //Basc64Binary Dado AdvPL do tipo string binaria, accitando todos //os caracteres da tabela ASCII, de CHR(O) 8 CHR(255), 7. WSMETHOD GetServerTime Description "METHOD DE VISUALIZAGAO DO HORARIO" 8 ENDWSSERVICE 9. WSMETHOD GetServerTime WSRECEIVE Parametro WSSEND Horario WSSERVICE SERVERTIME 10. : Horario:= TIME) 11. Return .T. Linha 1 - € especificada a utilizacao do include Totvs.CH ou Prothéus;ch, contendo as definicdes dos comandos AdvPL e demais constantes. Linha 2 - € especificada a include APWebSrv.CH ou Totvswebsri.ch, que contém as definicées de comandos constantes utilizados nas declaracdes de estruturas e métodos do Web Service. Ele € obrigatorio para o desenvolvimento de Web Services tha 3 - £ especificada a utilizacéo do include TBICONN.CH, contendo as definicées dos comandos AdvPL. para conectar ao banco e Protheus desejados. Linha 5 - Com esta instrugio, é d SERVERTIME, ido O\inicio dapelasse do servico principal, @ qual damos 0 nome de tha 6 - Dentro da estrutura deste'servico, € informado que um dos parametros utilizados chama-se horério, e sera do tipo string. Linha 9 - Dentro da estrutura deste/Servico, é informado que um dos métodos do servico chama-se GetServerTime. Linha 10 - Como nao sio nevesSirias mais propriedades ou métodos neste servico, a estrutura do servico fechada com esta instrug30. inha 11 - Aqui é declarado o fonte do método GetServerTime, que receberd parametros, € informado que seu retorno serd o dado Horsrio (declarado na classe do servico como uma propriedade, do tipo string) iha 12 - E atribuido na propriedade ::Horario da classe deste servico, o retorno da fun¢ao AdvPL Time(), que retorna a hora atual no servidor no formato HH:MM:SS. Deve-se utilizar ":" para alimentarmos a propriedade da classe atual inha 13 - 0 método GetServerTime é finalizado nesta linha, retornando .T. (verdadeiro), indicando que 0 servico foi executado com sucesso. Apés compilado o servico, deve-se acessar novamente a pagina de indice de servigos (wsindex.apw) e verificar se 0 novo servico compilado encontra-se Is. oe / PROTHEUS - VERSAO 12 nf ADVPL Web Services © 9. Testando o servico Para efetuar os testes serd necessério criarmos um Qn a: Jo os dados do WSDL como Client, com isso sera vexcveney —— sowsse saoirico Ss a jan nn ws li a a is tale ibs dentate woes nes vce Tomtom ance ne Fiaiebenr cl actecenns seer ioe soacae HapuTAn0 SUARTCTIVSEVEITRO HABLTADD HA "Senco genérico de administragio do SPED. Uamaseoce hepiscainectiony URE teeston fepi/oeainestion/ Seer Seeartine Decesdo do Servigo (WSDL) ‘SERVERTUE pW 7NSDL Métodos do Servigo cETSeRvERTE THETHOD DE VSUALZAGKO DO HORARIO we - oS “Vv necessario entrar no Tds. So < © 2» © tine TOS | Dasrane Stade Reaceronerto {& TOs Expos & ros soK 4. © roms soc ade scart Cio “ED ve ssa Gi nvarereto abel ~ EE Nova Fungo MVE Adv ac Bg rons rose B.S vse sesaarce BS Ninoneuier em B.S orgie / PROTHEUS - VERSAO 12 (9 sopensoos sop 30s0py¢ALOL EP apEPaHAOA! ALBA I (9 Sopen.sesc4a495050p01 SALOL EP aPepaHI0%0 9 oMUNDEP aI {9 Spenesa1son019 505901 SALOLEPapEpaAOX! poWUNDOp a1 nf ADVPL Web Services © Para fazer a cticéo do fonte precisamos Descrigao do Servico (WSDL) mente do caminho do WSDL que é encontrado acionando o link da @ TOTVS | Web Services NomeSpace http:/lecathest:9070/ URL Location hitp:locahest:8070/ss Nome do Sarvico SERVERTIME site Descngie ce Servigo (WSDL) 1 VEIA 0 HORARTO ATUAL Métodos do Servico GETSERVERTIME + METHOD DE VISUALIZAGAO DO HORARIO ATUAL, Ortorvs QX*y ‘Acionando esse lnk rd aparecero dado querer & [ervnannennunmcwnn | 2-6] ‘Pecans soe oss SOUL WSDL ae 1006 ous 700.2127 201708 > “seins mite Mp: schamasamizeap aryl” rethararce~ "ty lca 070)" nnn" aces stsap as md nie kes com wl mine ean” is spe at schemas mop ose encase 070 a rm ara Scns p/m nn rans ames 88> "Srebenainton ips eon 9079" donee au> sing mete ince > SOS names" GETSERVERTINERESULT®iype=satrng maxOcsme"V” miners" sequen “nn ane GESARVERTIMESOAPIN'> pot nme"prametur net SCCISCRVERTINE! > 20 / PROTHEUS - VERSAO 12 (9 spensoso sop 30 sop ¢ALOL Ep ApEPHHAAA!jcHLBUNDOP AN (9 sopenssess0u94p50 spo) SALOL EP ap=pAHEO%I joLUNDNP AIS (9 sopenosa1 Sona 5050p0L SALOLEPapepautox powurDop aI nif ADVPL Web Services © | Preencher com as informacées: Local: Diretério que ira salvar 0 fonte; Nome do fonte: Nome do arquivo PRW que serd criado; 5 Url: Informar a URL do servico que deseja criar o cliente. Z Exemplo: http://localhost:8070/ws/SERVERTIME.apw?WSDL Nova fonie WSDL. Fore wizard é respontavel pela criagio de um fonte WSDL para conexo com WebService Protheus. Local ‘Apostle WS/Exemplos Nomedofonte: [WisServefime ut http://localhest:8070/ws/SERVERTIME.apw WSDL (Cetise arquivo com referénc. Diretovio de Destino: Condluir ‘Ao Clicar em concluir o sistema ird gerar 0 cédigo fonte do client do referido Services informado. nproruzus.cH" -APWEBSRV.CH™ User Function NLLYPOX ; Return // “dunmy" function - Internal Use / PROTHEUS - VERSAO 12 © nf ADVPL Web Services WSCLIENT WSSERVERTINE WSMETHOD NEW WSMETHOD INIT WSMETHOD RESET WSMETHOD CLONE WSMETHOD GSTSERVERTIME, .@ sopensse: sou94950Sop01 SALOL EP aP=PAHBOAE 9 WSDATA WSDATA =: WSDATA _COOKTES WSDATA — GPARMETRO WSDATA cGESERVERTIMERESULT string Array of String Array of String string string xy BBRBE ENDWSCLIENT WSMETHOD NEW WSCLIENT WSSERVERTIME ritnit() TE {FindFunction ("xMLCHTLDEX") Userkxception("0 Cédigo-Fonte Client a [7,00.131227A-20170918 NG) ou superior. novamente utilizands o Suild atual.") EndIf Return self ce fevers & WSMETHOD RESET WSCLIENT W -PARMETRO ::CGHTS#RVSRTIMERESUL? ait() Return osopes251 sovanpsosopOL SALOL Ep epePHdod 9 CUB WSMETHOD CLONE WSCLIENT, Local oClone :~ WSSE] oClone:_URL Clone: 6PAaMETRO oC lone : CGETSERVERTIMERESULT Return oClone cGSTSERVSRTIMERESULT // WSDL Method GETSERVERTIME of Service WSSERVERTIME WSMETHOD GETSERVERTIME WSSEND cPARMETRO WSRECEIVE cGETSERVERTIMERESULT WSCLIENT WSSERVERTIME Local cSoap :- "" , oxmlRet BEGIN WSMETHOD S0S0F01 SALOL Ep opepaIAtOpONDUNDOP 53 Soap t= '" PARMETRO, cPARMETRO , "string", 2. , .P., 0, NIL, / PROTHEUS - VERSAO 12 nf ADVPL Web Services © | oXm1Ret := SveSoapCall( Self, cSoap, + "http: //localhost :8070/GETSERVERTIME", ¢ "DOCUMENT", "http: //Localhost:8070/", ,"1.031217",; “http: //localhost :8070/ws/SERVERTIME apy") WSAdwValue ( GBTSERVERTIMERESPONSE:_GETSERVERTIMERESULT:TEXI", "string", NIL,NIL,NIL,NIL,NIL = END WSMETHOD e oxmIRet := NIL Return 7 Entendendo o Codigo fonte do Client gerado pelo IDE Mes "APWEBSRV.CH" SV & Sinerersnoyae7ame ae ofS es gezado por age asy eo? Yt 1.12070 caso Ss wv 7S User Function NELYPOX ; Return NPaseggePuncsion = Internal Use Ja gerado ni fungdo User Function _NLLYPOX aléatéria pard-esse fonte, cujo nome poderd ser alterado pelo usudrio posteriormente. «a Este cédigo 0 IDE gera, informando. eee para o Client do WebService executar. Foi criada uma S WSMETHOD NEW WSMETHOD INIT WSMETHOD RESET WSMETHOD CLONE WSMETHOD GSTSERVERTIME, WSDATA _URL AS String WSDATA _ZEADOUT AS Array of String WSDATA _COOKTES AS Array of String WSDATA — GPARMETRO AS string WSDATA — cGESERVERTIMERESULT AS string ENDWSCLIENT Essa parte inicializa a criacdo do client do WebService. Podemos notar que o nome do cliente do WebService SERVERTIME é parecido com o nome do Client WSSERVERTIME. / PROTHEUS - VERSAO 12 wf ADVPL Web Services O- ‘Vejamos que foram criados 4 métodos que nao existiam no préprio WebService. WSMETHOD NEW WSMETHOD INTT z WSMETHOD RESET WSMETHOD CLONE (© método criado pelo IDE NEW. Trata-se de um processo de criagdo do objeto WebService para repassar todo 0 contetido do WebService gerado para uma variavel definida pelo usuario. WSMETHOD NEW WSCLIENT WSSERVERTINE prInit() Tf !FindFunction ("xMLC! x" Userfxception ("0 Cédigo-Fonte Clie 1 requer os ex@putaveis do eus 7,00.131227A-20170918 NG] ou superior. Atualize o Prohey€ opgere o Cédigo-Fonte novamente utilizando o Build atual.") EndIf Return Self Pode, analisando o préprio método, chamar outro método gerado pelo DE INIT. Trata-se de um processo de cria¢do do objeto WebSevige para‘disponibilizar a cria¢do ou chamada de outros servicos disponivel no repositério para complementar 0 WebService do cliente. a WSMETHOD NEW WSCLIENT WSSERVERMNE Return Self Analisamos agora o Method RESET. Trata-se de um processo de limpeza de Variayels-tdo WebService para que vocé possa u com as informagSes executadas anteriormehte. lo novamente sem estar WSMETHOD RESET WSCLIENT WSSERVERTIME 1: :CPARMBTRO| -aD GETSERVSRTIMERESULYD~) NIL piTnit() 2 Return / PROTHEUS - VERSAO 12 nf ADVPL Web Services © Analisaremos agora o método CLONE. Tratamento de gerar uma nova variavel com 0 Objeto criado do WebService. Duplica a informacao dos dados do WebService. WSMETHOD CLONE WSCLIENT WSSERVERTIME Local oClone :~ WSSERVERTIME() :New() Clone: URL URL oClone:ePARMETRO PARMETRO oClone:cGETSERVERTIMERESULT :~ : :cGETSERVZRTIMERESULT Return oClone Analisaremos agora o método GETSERVERTIME. Tratamento de executar o service disponivel pelo WebService e retornar 0 processo executado por ele, retornando na variavel cGETSERVERTIMERESULT. WSMETHOD GETSERVERTIME WSSEND cPARMETRO WSRECEIVE cGETSEAVERTINSRESUL? WSCLIENT WiSSERVERTIME Local cSoap := "" , oXmiRet BEGIN WSMETHOD eSoap += ' "TEER LBO>STRING:/ FARIETEO> izose b0ay> Stade seowtepe Resposta da Requisicao SOAP ‘stant verstor="1.0° excosing="uct-8°7 ‘spep:Eovelope salas-naiethtp//mey 9 org/200%/D@Schena-instance”™ SIEIESESAEEG oy one coa cog 200k a Sckons™ Shine ecnpe Beep.) fechanne salezap.org/eamp/encelepe/"> Soeps Boal “SHoRETCS ommAMe/HRRIO> isons B05 fooap:Eovelcpe / PROTHEUS - VERSAO 12 (9 sopensses saya 50sap01 SALOL EP ap=paxG0%1 9 oRRUNDAD A (9 sopensosos sop 50 sope sALOL EP apePaHAaAt 9 HLaUNDOP AISy 19S0SOpOL SALOL Ep OpEPHAOpONDUNDOPASg er sopenosaiso nf ADVPL Web Services © Quando acionar o botdo testar ira abrir uma pagina possibilitando inserir o pardmetro desejado: @TOTVS | Web Services Namespace hetps//locathost=8070/ URL Location Name do Servico Método do Servico Requisic¢éo SOAP /iaea #8_079/2001/2MESchema-instarce” Ea / PROTHEUS - VERSAO 12 249500901 SALOL EP apepandoxt 9 onousonp ag a sopensn: (9 sopensoos sop 30s0py¢ALOL EP apEPaHAOA! ALBA I nf ADVPL Web Services © Para executar isto dentro de um cédigo, a principio, devemos gerar um client de conexéo do WS-Service 10.Consumo de servicos ‘Apés gerar o client,devemos gerar um cédigo fonte “User Function" para capturar a informagao disponivel do nosso WebService. "protheus.ch" User function Xtempo() Local 0B} := nil WWSSERVERTINE () new () O84: 0B} :GETSERVERTIME(' ') RS Else cSvektror 1= GetWSCEeror() // ResuHto do ere & cSoaprcode :~ GetHSCError (2) // Soap Fault csoapFbeser :— Getwscerror(3) // Soap Fault Bos Tf ! empty (cSoapFCode) Ss 1] Gaso a ccorréncia de erro estesa ¢ S preenehido , // @ mesma teve relaco com a chara ttogstos (eSoapFbeser,eSeapFcode) YD Else Ns. // Case a ccorréncia nao tenra@ sap oe preenchido 11 Sia each folacionadn a ue Sts 17 provaveimente local ou (/ eeweeneeet oot ia Endif Endif xO LS © Return () Ae Para fazer a chamada da funcio, -cessério criar um menu, entrando no ambiente do Configurador->Ambiente-> Menus, conforme tela akg’ / PROTHEUS - VERSAO 12 5 nf ADVPL Web Services © TOTVS | Contguasor Se a owen amet pee eens Cackaintk Oana = 5 cramer nee o—— com 2 wee ‘ov ee anne Fern come Som mo Oren ‘oe Demeter Escolha um local para inserir os dados desejados e acione Novo item e preencha com modulo que vocé deseja acionar para executar a funcao 0 Tipo como Fungo de Usuario, Coloque um nome para ser identificado no Menu e caloque 0 nome do fonte sem a extensio, conforme tela abaixo: Pa / PROTHEUS - VERSAO 12 ape nf ADVPL Web Services © TOTVS | Configurator Tater A aman neo (9 sopenssess0u94p50 spo) SALOL EP ap=pAHEO%I joLUNDNP AIS ymunoop 83 , 3 Acionar 0 botio OK e depois acionar o botie Gerar, ons ebm Qe ‘do menu desejado e acionar o botio Gerar, — conforine ela abaior ov 5 TONS tere a © |}: : : 3 ? : : 3 g 5 3 ao / PROTHEUS - VERSAO 12 nf ADVPL Web Services © Ird aparecer uma mensagem solicitando a confirmagdo, conforme tela abalxo: TOTVS | Cenfguador ie ee 2500901 SALOL EP apepandOx! 9 ONDUNEEP asa 3 eterna 10501 SALOL EP apepaudax! 9 onunoop a3 6 sr0840 o sopen0 50 Exercicio 1. Crie um WebService que apresente a data de Hoje pelo sistema. 2. Crie um cliente para ler esse WebService. 3. Crie uma rotina para capturar a data do seu WebService e 0 horério do WebService servertime, «Soper sop S0sop01 SALOL Ep apepaAIOp ODM 53 a / PROTHEUS - VERSAO 12 wf ADVPL Web Services © 11.TWsdIManager A classe TWsdlManager faz o tratamento para arquivos WSDL (Web Services Description Language). Esta classe implementa métodos para identificagao das informacdes de envio e resposta das operacées definidas, além de métodos para envio e recebimento do documento SOAP. A classe trabalha com 2 tipos de dados: os tipos complexos, que sio as secdes do XML, € os tipos simples, que so as tags que recebem valor. Por exemplo, numa operacao de insercao de clientes, a tag “cliente” é um tipo complexo, pois contém os dados do cliente dentro, e as uma tag "nome" é um tipo simples, pois recebe diretamente um valor (no caso, o nome do cliente}, TWsdiManager ird realizar o parse de um WSDL, seja por uma URL ou por arquivo, e ira montar internamente uma lista com os tipos simples e outra com os tipos complexos. A lista de tipos complexos tera somente os tipos complexos que tenham nimero varivel de ocorréncias. Por exemplo, se tiver 2 tipos complexos onde um deles tem minimo de 1 e maximo de 1, € outro com minimo de 1 e maximo 2, s6 0 que tem o valor minimo diferente do valor maximo ira ser listado. Através do método NextComplex € possivel verificar quais sio ess eleméntds de tipo complexo que g necessitam de definicao do ntimero de ocorréncias. Esse métodg-deve ser-chamado em recurso, até no existirem mais elementos retornados (ira retornar Nil). Para_éada’ elemento’ retornado deve-se definir 2 quantidade de vezes que a tag ird aparecer no XML/final (SQAPI) Para isso utlliza-se 0 método SetComplexOccurs. Caso no seja especificado a quantidadesde vezes-que a tag ira aparecer, a classe ira Considerar a quantidade como 0 (zero). Caso seja passado zero no método SetComplexOcciirs, ele ird marcar os elementos simples e complexos dentro da tag para serem ignorados, o que fara com que os elementos complexo internos ndo aparecam no retorne do método NextComplex, e os elementos simples internos nao Serao retornados pelo método Simplelnput. Uma vez definida a quantidade de vezes que os tiBo8.Complexos iro aparecer na mensagem SOAP, podemos chamar 0 método SimpleInput, para’retornar quais so os campos que irdo receber valor. Os tipos simples 3 podem ter seus valores definidos através dos inétodos SetValue (para 1 valor apenas) ou SetValues (para mais, a de 1 valor). Para saber a quantidade de valores aceitos pelo tipo simples € s6 olhar a quantidade minima e maxima informada no método Simipleinput. indices 3 e 4 de cada tag, respectivamente. No Exemplo abaixo iremos criar uit forite prw para ser chamado dentro de um menu criado pelo usuario, nele faremos a chamada do WebService SERVERTIME que criamos anteriormente, porém agora iremos utilizar a funcao TWsdIManager. Exemplo: User Function Tem Local oWsd Local 10k Local a0ps := () g Local aComplex :~ {} Local aSimple := (} /f Cria 0 objeto da classe TWsdlManager oWisdl := TWsdlManager () :New () // Faz o parse de uma URL z lok := oWsdl:ParseURL( " localhost :8070/ws/SERVERTIME.apw?WSDL" ) / PROTHEUS - VERSAO 12 nf ADVPL Web Services if 110K Ms@Stop( oWsdl:cBrror , "ParseURL() BRROR") Return endif /f Lista os Metodos do servico aOps :~ oW’sdl:Listoperations () // Seta a operagac a ser utilizada listada pelo ListOperations nome do método //que ira executar. 10k := oWsdl:SetOperation( "GETSERVERTIME" ) Af Nok MsgStop( oWsdl:cBrror , "SetOperaticn(ConversionRate) ERROR") Return Endif 11 vassien 4 ine on praantso sn vat ae vanco pang Mg Qietsenance aut // s80 08 campos que irdo receber valor Or OE en ger SS? ee eet Sal acomplex :~ olsd aSinple = olisdl Ret := oWsdl:SetValue( 0, "000" } (1 Betbe a mangagen gue sees eninge & conout ( oWsdl:GetSoapMsg() } oO 1 vas a requisigao a0 WebsgQQe ee doe t= omsaresenceaeear Ie ioe SS ws Hosssop( onsansesror Kotoase 6200) AKON Return “ onaiz «d // Recupera os elementos @®retorno, j4 parseados Resp :— olisdl:GetParsesifesponse () \ 1) sonva um actay co) resposta transfomada, consideranco // as quebras de linha ( LP == Chr(10) ) aBlem :~ StrToklrs(eResp, chr (10)) MsgInfo( SubStr(aBlem[2], AT(":",aElem(2] )+1)) Return( NIL ) a / PROTHEUS - VERSAO 12 (9 sopensosos sop 0sope ‘sALOL EP apEPHAOA! yOu AIS, ‘a Sopensse: s0u9s950Sop01 SALOL EP apEPAHIOAE oNDLINDND AI «Soper soy0pSosopoL SALOL Ep opePoLAsdpLoUNOOP 153 nf ADVPL Web Services © Resultado: a 6 oa2231 Z 12.Criando um WEBSERVICE de Gravacao 12.1. Def ico de estrutura 3 A principio, devemos definir uma estrutura adequada para,d elaBoragdodos nossos servicos e métodos a serem disponibilizados no nosso WebService. g Iremos gerar um WebService para a gravacao de Clientes) Para is60, devemos saber quais séo as empresas e filiais — disponiveis e a forma que o Cliente ira nos enviar osdados para Sefém gravados nos bancos de dados da respectiva empresa e filial a Para saber para qual a empresa o cliente enviaré:o3 dados,éle deverd saber qual a empresa e filial que possuimos. Devemos gerar um método de apresentagao de Empresa e Fifa 5 Demonstrar uma estrutura adéquada para‘apresentar as empresas e filiais Demostrar uma estrutura pata receber os dados de Clientes Demostrar uma estrutura pata critica? #informagao enviada pelo Client g Executar a gravacao dos dados Exemplo 01: 1. Gerar um método de-apresentacao de Empresa e Filial. Iremos criar um fonte prw que sera o Service. "Totvawebszv.ch 5 WsService CIT description "Treinamento do WebService para © Curso CTI" Wsdata cCodimpas String 17 cédigo da empresa Wedata aEmpzesa as array of Bstruturaimp // esteutura inteira do sigamat.emp z Wedata cRet as String // Mensagem de Retorne WsMethod LISTAEMPRESA DESCRIPTION "APRESENTA TODOS 03 DADOS DO SIGAMAT.EMP DO CLIENT: EndWsservice (/Montagem da Estrutura do Array EstruturaEmp Wsstruct EstruturaEmp 2 WeData MO_CODIGO As String 3 WsData MO_CODFIL As String as / PROTHEUS - VERSAO 12 nf ADVPL Web Services WeData MO_FILIAL As string WsData MO_NOME As String WeData MO_NOMECOM As String WsData MO_ENDCOB As String WeData MO CIDCOB As String WsData MO_ESTCOB As String WaData MO_CEPCOB As String WsData MO_ENDENT As String WaData MO_CIDENT As String WsData M0_ESTENT As String WsData MO_CEPENT As String WeData MO_CGC As String WsData MO_INSC As String WsData MOTEL As String WsData MO_EQUIPAs String WsData MO_SEQUENC As String WsData MO_DOCSEQ As INTEGER WsData MO_FAX As String WsData MO_PRODRUR As String WsData MO_BAIRCOB As String WsData MO_BAIRENT As String WsData MO_COMPCOB As String WeData MOUCOMPENT As String WeData MOWTPINSC As Intege= WeData MOUCNAE As String WeData MOUFPAS As String WeData MOUACTAAB As String WeData MOUCODMUN As String Wsdata MO-NATJUR As String WeData MO_DTBASE As String WsData MOUNUMPROP As Integer WeData MOUMODEND As String WeData MOUMODINSC As String WeData MOUCAUSAAs String WeData MOUINSCANT As Str: S WsData MOTEL IMP As String © WeData MOFAXIMP As Stringg QS Wsdata MOTEL Po As String WeData MOUFAXUPO As Strin WeData MOWINPLCON As WeData MOWcoDzosE WeData MO_DESZOSE As as as ‘SALOL ED apepoa WsData M0_COD_ATV WsData MO_INS_SUF WsData MO_ENERGEN As String WsData MO_LIBMOD As String WsData M0_TPESTAB As String WaData M0_DTAUTOR As date WsData M0_EMPB2B As String WeData MO CAIXAAs String WsData MO_LICENSA As String WaData MO_CORPKEY As String WsData M0_CHKSUM As Integer WeData MO_DTVLDAs date WsData M0_PSW As String WsData MO CIPSWAs String WsData MO_INTCTRL As String WsData MO_INSCMAs String / PROTHEUS - VERSAO 12 nf ADVPL Web Services WeData MO_NIRE As String WsData MO_DTRE As cate WeData M0_CNES As String WeData MO PSWSTRT As String WsData MO_DSCCNA As String WeData MO_ASSPATI As String WsData MO_ASSPAT2 As String WeData MO_ASSPAT3 As String WeData M0_SIZEFIL As Integer WeData MO_LEIAUTE As String WeData MO_PICTURE As String WsData MO STATUS As String WsData MO_RNTRCAs String WeData MODTRNTRC As date WsData X MENSAGEM As String EndWsstruct (/Chamada do metodo passande o Array afmpresa tovethod 1ISTAEMPAESR Wokecedve cCodbnp WaSend & SGP or Local cBmp := "99 Local cFil noi" Local aTab :~ ("SAI") Tocal Ret 55 Local nDados RocSeeBnv bmp, CF, °FT, nmeenaegh EeeerEsTos © bonco © = exnseen padrao //Inicializagéo de Array azmpresa a eQerance Af cCodmp != 'Abrir? Rez f= "Palavea Chave invalis aad (abmpresa, WsClasstiew ("ERA ainpzesa{1]:M0 CODIGO == "% abmpzesa|1) :M0_CODFIL 1», () aBmpresa[1]:M0_FILIAL x a aEmpzesa(1]:M0_NOME | :- ¥" A@ aanpzesa 1] aBmpresa(1] azmpzesa[1] abmpresa(1] asmpresa[1] abmpzesa(1] azmpzesa(1] aBmpresa(1] “ aBmpresa(1] abmpzesa(1] “ afmpzesa(1] abmpzesa(1] “ aBmpresa[1] : nm abmpresa(1] “ aBmpresa1] :M0_1 aSmpresa(1] :M0_FAX abmpresa[1} abmpresa[1] :M0_ abmpresa [1] :MO_BATRENT atmpresa [1] :M0_CoMPCOR aEmpzesa[1] :MO_CoMPENT aempresa[1] :M0_TPINSC - PROTHEUS - VERSAO 12 sounop 353 g i z & z z i i 5 ® osopes251 soaps sOPOL'SALOL ED apepeo nf ADVPL Web Services abmpresa [1] ampresa(1] aempresa [1] ampresa(1] aBmpzesa(1] aempzesa(1] aempresa [1] aBmpresa(1] : abmpresa[1] ampresa(1] :M0_« afmpresa[1]:MO_INSCANT := ampresa(1] :M0_TEL IMP ampresa(1] :M0_FAX_IMP ampresa(1] :MOTEL_PO :- "" ampresa(1]:M0_FAX_PO := "" ampresa(1] :M0_IMP_CoN aBmpzesa [1] :M0_CODZOSE ampzesa(1] :M0_DESZ0SE afmpresa(1] :M0_COD_ATV ampresa(1] :M0_INS_SUF ampzesa(1] :¥0_EMERGEN ampzesa(1] :M0_LTBMOD afimpresa(1] :N0_TPESTAB .sa1] :M0_DTAUTOR afimpresa [1] :M0_EMPB28 aBmpresa [1] :M0_CATXA afimpresa(1]:MO_LICENSA := aBmpresa(1] :M0_CORPKEY ampresa(1] :M0_CEKSUM aBmpresa(1] :M0_DTVLD afmpresa(1] aBmpresa(1] ampresa(1] abmpresa(1] ampresa(1] aBmpresa(1] afmpresa(1] aBmpresa(1] ampresa(1] abmpresa(1] abmpresa(1] aempresa[1] ampzesa(1] esa(1] resa(1] salt] ampresa(1] sors LO abmpresa(1] :M0_1 r= STOD("") aBmpresa[1]:X MENSAGEM =: ::cRet. Return endif aRet s+ SMO->(GETAREA()) //Mlimentagao do Array aEmpresa com Valores da Filial Logada WHILE SMO-> (180 ()) Dados t= 1 aadd (aEmpresa, WsClassNew("Zstruturasmp") ) ym / PROTHEUS - VERSAO 12 20, ouRDOp a3 osopeso51 sovaNpSosOpEL'SALOL Ep APEPHAOX! 9 LAWL AIS a sopensses 504919 505090 SALOL EP appaNe S0S0F01 SALOL Ep opepaIAtOpONDUNDOP 53 nf ADVPL Web Services aémpzesa[nDados] aBmpresa(nDados] asmpzesa[nDados | almpresa(nDados] abmpzesa[nDados | aampresa(nDados] asmpzesa [nDados] aBmpresa(nDados] : aBmpresa[nDados] :M0_CEPCOB aBmpresa[nDados] :MO_ENDENT aBmpresa[nDados] :M0_CIDENT abmpresa [nDados] :M0_ESTENT aBmpresa[nDados] :M0_CEPENT aBmpresa(nDados] :M0_CGC aBmpresa[nDados] :M0_INSC == aumpresa(nDados] :M0_TEL aBmpresa[nDados] :MO_EQUIP asmpresa(nDados] aBmpresa[nDados] :M0_DOCSEQ asmpresa(nDados] :MO_FAX aZmpresa [nDados] :M0”PRODRUR aEmpzesa [nDados] :M0_BAIRCOB esa [nDados] :MO_BAIRENT sa [nDados] :M0_COMPCOB azmpresa [nDados] :M0_COMPENT asmpresa(nDados] :MO_TPINSC azmpresa[nDados]:M0_CNAE | := asmpresa(nDados] :MO_FPAS aBmpresa[nDados] :M0_ACTRAB asmpresa(nDados] :MO_CODMUN azmpresa [nDados] :M0_NATJUR aampresa(nDados | Mo_coprco MO_CODFIL MO_FILIAL MO_NOME, MO_NOMECOM MO_ENDCOB Mo_cTDCos MO_ESTCOB MO_SEQUENC = swg->M0_coprco SMO->M0_CODFIL, $M0->MO_PILTAL SMO->M0_NOME = SM0=>M0_NoMECOM SM0->M0_ENDCOB = s¥0->M0_CIDCOB SMO->M0_ESTCOB = ¥0->M0_CEECOB SM0->MO_ENDENT = SHO->MO_CIDENT SM0->M0_ESTENT = SMO->MO_CEPENT sMO->M0_CGC sM9->M0_iNSC SHO BED ons PN3voosmo. seauene cy soon Doce wv sudo FRX ~ ‘sMO->M0 Pron «SY SS Sy =e Se SP ‘SMO->!0_BAI = s0->60, sbuntc axe se X Eh SM0->M0. ak ACY M0. 7 UR " MO_DTBASE Cae Ree STBASE Genpseoa ndados) :H0-NUMPRO! 2, MINPROP salads] a lnoadoe} 20-186 aor {Stecose| Dados) atop {Stecese| bade) st SenoTon {Srecose/aaes| to oxen {Stecesa{ bade) st Cosmeet atnbcoasfnbecee!t0-DIvED SEnpcess eden! iw SM0_MODEND 10->60_MODIN. ->M0_CAUSA ‘SMO-3!0_INSCANT ‘SMO~>M0_TEL_IMP ‘SMO->!10_PAX_INP = sw0->M0_TEL_PO SMO->MO~FAX_PO ‘SMO->¥10_TMP_cOW ‘SMO->!10_CODZ0SE 'SMO->¢10_DES5Z055 = sMo->M0_coD_ATV = SMO->M0_INS_SUF ‘SMO->!0_EMBRGEN = si0->M0_ETBMOD ‘SMO->¥0_TPESTAB = SMO->M0_DTAUTOR SM0->M0_EMPB2B SMO->MO_CATXA ‘SMO-3¥0_LICENSA ‘SMO~>!10_CORPKEY sM0->M0_CHKSUM, SMO->MO_DPVLD SMO->M0_Psi SMO->MO_CT?SW PROTHEUS - VERSAO 12 ‘SALOL ED apepoa nf ADVPL Web Services aémpzesa[nDados] aumpresa(nDados] abmpzesa[nDados | almpresa(nDados] abmpzesa [nDados | aBmpzesa(nDados] :MO_PSWSTRT aBmpzesa[nDados] :M0_DSCCNA aBmpresa[nDados] :MO_ASSPATL aémpresa[nDados] :MO_ASSPAT2 aBmpresa(nDados] :MO_ASSPAT3 azmpresa[nDados] :M0_S1ZEFIL aBmpresa(nDados] :MO_LETAUTE asmpresa[nDados] :MO_PICTURE aBmpzesa[nDados] :MO_STATUS admpresa [nDados] :MO_RNTRC aBmpresa(nDados] :MO_DTRNTRC asmpresa [nDados] :X_MENSAGEM SMO~> (DBSK=P()) MQ_INTCTRL MO_INSCH MQ_NIRE MO_DTRE MO_cNES END RESTAREA (aRet) Return .T Com o fonte devidamente criado e compilado iremos fazer, ate = sMO->MO_INTCTRE sM0->M0_INSCM ~ sMQ->M0_NIRE, SMO->M0”DTRE SMO->MO_CNES ‘SMO=>"0_PSWSTRT := SM0~>M0_DSCCNA ‘SMO->¥0_ASSPATL SMO->M0_ASSPAT2 ‘SMO->¥0_ASSPAT3 SMO->M0_SIZEFIL ‘SMO->¢0_LEZAUTS ‘SMO~>¥0_PICTURE sMo->M0_STATUS SMO->MO_RNTRC 'SMO-3¢0_DTRNTRC “sucesso cca) WS Sw SS Ad~ od haa és do link: hi SS Sr dl Sone ~ PROTHEUS - VERSAO 12 :/Nlocalhost:8070/ws/ 95050901 SALOL EP opEPALIO9OnBUNDOP SZ 5 5 5 é juunoopanss 5030001 SALOL EP pepo. 'sepen09050 S0S0F01 SALOL Ep opepaIAtOpONDUNDOP 53 9 sopen2550 nf ADVPL Web Services Quando entrarmos no metodo criado serd aberto a seguinte pagina: / PROTHEUS - VERSAO 12 (9 sopensosos sop 50 sope sALOL EP apePaHAaAt 9 HLaUNDOP AISy (9 sopensses saya 50sap01 SALOL EP ap=paxG0%1 9 oRRUNDAD A (9 sopenosa1 Sona 5050p0L SALOLEPapepautox powurDop aI nf ADVPL Web Services © 2. Criamos 0 WebService Chamado CTT. aN [No primeiro momento, veremos o cédigo da deci do webservice: Meservice CIT description steeinanGQe ao Qeevice para o curse crm Redata cCodmnpas string 4c /7 e6aigo da empresa Wsdata atmpresa as array of ae veep // estrutura inteira do sigamat.emp Ss Wedata cRet as String // Mensagen de Retozno WeMethod LISTAEMPRESA oxaborigy SNtase808 TODOS 0S DADOS DO SIGAMAT.EMP DO CLIENTS" EndWsservice Ao Este cédigo apresenta a cria WebService chamado CTT apresentando a Descricao “Treinamento do WebService para 0 Curso Criagao das varidveis: Wsdata cCodimpas String Jf cédigo da empresa Wedata aEmpresa as array of Estruturaimp // estrutura inteira do sigamat.enp Wedata cRet as String Podemos observar que a varidvel AEMPRESA seré um array com a estrutura definida pelo método wsstruct: WeStruct Estruturaimp WsData MO_CODIGO As String WsData MO_CODFIL As String WsData MO_FILIAL As String WsData MO_NOME As String WsData MO_NOMECOM As String WsData MO_ENDCOB As string WsData MO_CIDCOB As String WsData MO_ESTCOB As String ea / PROTHEUS - VERSAO 12 3 f 3 ensusoop 283 g roopatsa Sop, SALOL ED APEPAUOA! oH 5 nf ADVPL Web Services WeData MO_CEPCOB As String WsData MO_ENDENT As string WeData MO CIDENT As string WsData M0_ESTENT As String WeData MO_CEPENT As String WsData MO_CGC As String WeData MO_INSC As String WsData MOTEL As String WsData MO EQUIP As String WsData MO_SEQUENC As String WsData MO_DOCSEQ As INTEGER WsData MO_FAX As String WsData MO_PRODRUR As String WsData MO_BAIRCOB As String WsData MO BAIRENT As String WsData MO_COMPCOB As String WsData MO COMPENT As String WsData MOTPINSC As Integez a¥3 webaee Nees Mn oD WaData MOUFPAS As String S WaData MO_ACTRAB As String S WaData MO_CODMUN As String xX Wobata MILNATOUR As seeing > oS WoData MO_DTBASE As String WsData MO_NUMPROP As Integer X Wedata MOLMODEND As String IN WaData MOUMODINSC As String WeData MO-CAUSAAS String Wsbata MO-INSCANT As string WeData MOTEL IMP As String WeData MOUFAXIMP As String WeData M0_TEL_FO As String WeData MOUFAX "PO As String ‘SALOL ED apepoa WsData MO_IMP_CON As stri WsData MO_CODZOSE As Str: WeData MO_DESZOSE As String WsData MO_COD_ATV As String WsData MO_INS SUF As String WsData MO_EMERGEN As Str. WsData MO_LIBMOD As Str, WsData MO_TPESTAB WsData MO_DTAUTOR As WsData MO_ENPB25 As String WsData MO_CAIXAAs String WsData MO_LICENSA As String WsData MO_CORPKEY As String WsData MO_CHKSUM As Integer WaData M0_DTVLDAs date WsData MO_PSW As String WaData M0_CTPSWAs String WsData MO_INTCTRL As String WaData MO_INSCMAs String WsData MO_NIRE As String WeData MO_DTRE As date WsData MO_CNES As String WeData MO_PSWSTRT As String WsData MO_DSCCNA As String / PROTHEUS - VERSAO 12 nif ADVPL Web Services © . WeData MO_ASSPAT1 As String WsData MO_ASSPAT2 As String WeData MO_ASSPAT3 As String WsData MO_SIZSFIL As Integer WeData MO _LEIAUTE As String WeData MO_PICTURE As String WaData MO STATUS As String WsData MO_RNTRC As String WaData MO_DTRNTRC As date WeData X_MENSAGEM As String EndWsstract Nesse Método, estao sendo apresentados todos campos do Sigamat.emp. Por fim, sera criado um array e cada vetor desse array seré 0 campo apresentado como varivel na estrutura. Essa estrutura ird montar um XML com 0 nome de cada variavel: STRING STRING STRING STRING STRING STRING STRINGSTRING& /M0_CAUSA> STRING STRING STRINGINTEGER/H0, CuK Sy STRINGSTRINGSTRING, STRING. STRING ‘STRING< /MSCEODFIL> STRING STRING<)M0_CODMUK> STRING ‘ STRING ‘STRING STRING ‘STRING INTEGER STRING DATE STRING DATE DATE<7§0_DTRNTRC> DATE STRING&/M0_SMERGEN> STRING STRING STRING STRING< /M0_EQUIP> STRING / PROTHEUS - VERSAO 12 nf ADVPL Web Services © STRING M0” FAX>STRING ‘STRING ‘EMO FAX_PO>STRING¢//M0_FRX_PO> ‘STRING STRING< /H0_FPAS> STRINGSTRINGSTRINGSTRINGSTRINGE/MO_1NS STRING¢ /M0_i7BMOD> €€0~LICENSA>STRINGC/M0_LICENSA> <STRING¢ /M0_HODEND> <€0_MODINSC>STRING STRINGSTRING STRING ‘240 NOMECOM>STRING INTEGER ‘eM0~PICTURE>STRING STRING STRINGE /NO_PSHS STRINGZ/MO_PSWSTRI> {M0 RNTRC> STRING /M0_RNIRC> ‘<'0_S2QUENC>STRING STRINGSTRING&/M0_TSD>y STRINGE/4O\ "EL. ry STRINGSTRINGE/HD_TPESTAS> INTEGER®/M0_7BENSC> Logo abaixo, foi criado o méfodo de “listar empresa’, um servico que ird ler o sigamat e apresentar quantas empresas temos no sigamatyemp para o cliente WeMethod LISTAEMPRESA DESCRIPTION "APRES ‘LIENTE" NTA TODOS OS DADOS DO SIGAMAT.EMP DO 2.1 Foi criado 0 Método, disponibilizando o servico proposto de apresentar as empresas: //Chamada do metodo passando o Array afmpresa WsMethod LISTAEMPRESA WsReceive cCodimp WsSend aEmpresa WsService CTT Local Local Local Local Local RpcSetEny (cSmp,cPil,,,"FIN'," padrac //Inicializagao do Array aBmpresa com dados em branco Emp = oFil atab aRet Dados istfmpresa',aTab) //abre a conexio com o banco © a empresa / PROTHEUS - VERSAO 12 nif ADVPL Web Services Af eCodzmp |= "Ab rieRet := "Palavra Chave Invalida” aadd (aEmpresa, WsClassNew(" rabmp")) Aapresentacao deste método segue a seguinte regra: — WsReceive cCodEmp: estou recebendo um cédigo — _WsSend aEmpresa: Estou devolvendo um array com dados — WsService CTT: Estou utilizando os métodos e variaveis do WebService CTT ‘Apés validar a informacao da chave "cCodEmp" que definimos, devera ser aberto o sistema que analisa se a palavra est ou nao correta. Caso nao esteja correta, ele entra no IF alimenta a varidvel ::¢Ret com a frase Palavra Chave Invalida. ria o Array aEmpresa com a estrutura definida anteriormente aadd(aEmpresa,WsClassNew("EstruturaEmp")). Apés isso, 0 Array ficara delimitado 2 somente essas colunas,sendo obrigatéria o seu preenchimento. 2.2 Se a palavra chave estiver correta, o sistema abre a tabela de empresa SMQ\-\Sigamat.emp e comeca a fazer um loop correndo todos os registros encontrados nessa tabela. WHILE SMO->(!B0F()) Dados t= 1 aadd (aEmpresa,WsClassNew ("Est aBmpresa(nDados] :MO_CODTGO ODFIL azmpresa [nDados] :M0_¢ :MO_FILIAL aBmpresa(nDados | azmpresa [nDades] aampresa(nDados| aBmpresa[nDades] aBmpresa(nDados] aBmpresa[nDades] asmpresa(nDados] aBmpzesa [nDades] asmpresa(nDados] -sa [nDados] azmpzesa(nDados] # aSmpresa(nDados] aBmpresa[nDados] aBmpresa(nDados] aBmpresa[nDados] aampresa(nDados] aBmpzesa(nDados] aBmpzesa(nDados] aBmpzesa [nDades] aBmpresa(nDados] azmpzesa [nDades] aBmpresa(nDados] abmpresa(nDados] aBmpresa(nDados] abmpresa(nDados] sa [nDados] esa [nDados] : MO_NOME, :MO_NOMECOM MO_ENDCOB M0_CIDCOB :M0_EsT¢o& :M0_CEPCOB :M0_ENDENT MO_CIDENY MO_ESTENT MO_CEPEND Mo_cae MOLINE :MO PEL MO_EQUIP Mo_SEQUENC :M0_DOCSEQ MO_PAX M0_PRODRUR :M0_BAIRCOB MO_BATRENT. Mo_COMPCOB :M0_COMPENT. MO_TPINSC MO_CNAE, MO_FPAS MO_ACTRAB Mo_CODMUN :MO_NATIUR :M0_DTBASE / amp" Wh SMO->MG=G3DTCO 0->y0CODELE SMO-2M0_FIETAL Syo_vost ‘SHO >MOONOMECOM 810-40 “ENDCOB SMQ-SH0_CIDCOB sx0>5u0_Ss7Co8 SWO->40_CEPCOB MO->MO_ENDENT SMO->MO_CTDENT SMO->MO_ESTENT SMO->MO_CEPENT SMO->Mo_cGC sm->M0_iwsc SMO-SMO_TEL sM0->M0_BQUIP ‘SHO-5MO_SEQUENC si0->¥0_DocsEQ SMO->H0_FAX ‘SHO=3M0_PRODRUR SHO->M0_BAIRCOB SMO~>M0_BATRENT ‘SHO->M0_COMPCOB ‘SHO~>M0_COMPENT séo->Mo_TPINsc SM0->H0_CNAE SMO->M0_FPAS SMO-3M0_ACTRAB SMO->M0_CODMUN = S¥O->40_NATIUR SMO->M0_DTBASE PROTHEUS - VERSAO 12 nf ADVPL Web Services abmpzesa[nDados] aumpresa(nDados] aémpzesa([nDados] almpresa(nDados] abmpzesa[nDados | aampresa(nDados] asmpzesa[nDados] aBmpresa(nDados] : atmpzesa [nDados] aimpresa(nDados] aempresa [Dados] aimpresa(nDados] abmpresa[nDados] ainpresa(nDados] abmpresa[nDados] abmpresa[nDados] abmpresa [Dados] abmpresa[nDados] abmpresa [Dados] aampresa[nDados] + azmpzesa(nDados] : asmpresa(nDados] azmpresa(nDados] 1 aumpresa(nDados] azmpresa[nDados] : aBmpresa(nDados] : aémpresa [nDados] : asmpresa(nDados] asmpresa[nDados] : asmpresa(nDados] azmpesa [nDades] asmpresa(nDados | almpzesa [nDados] asmpresa|nDados | almpresa [nDades] asmpresa(nDados] almpresa [nDades] aBmpresa(nDados] aBmpzesa [nDades] aBmpresa(nDados] asmpresa(nDados] aBmpresa(nDados] azmpresa(nDados] SMO~> (DBSK=P()) END MO_SIZEFL xX HENSAGEM vo nomeoP —:~ si0->40_nuMPROP ME-MODEND, 22 Mo" >m0 ODEN MO_MODINSC :~ SMO->M0_MODINSC MO-ERUSA'. = Swo!o40,exUSR MOLINSCANT = SMO-SMO_TNSCAW? MOREE TMP = SMO->MOCEEE IMP MOERICINE = HO-3MOUEAI IM Mineiro: swt‘ fen Po MOEAEO != SMO-SMOMEAK PO MI-EOE-eON + 'SMOSM INE CON inoccopzose | SHo-sH0“coDdoss SHocpestose | Sho-sto“pEstose SnO-Gop-RIY = SHO-SHO“coD_ ATV RO-INs-oUr 2 Sho-sHO~INs SOF SHOCENaRceN = SHO->HO“ENERCEN MI-MIBNOD :~ sMo‘>a0 DIBHOD inocreestas ‘= Sho resstas Micoravton :- suoomorauton cy caer seem Vs MOTEATHA. :- sWO->0_ Chika ay toreteiten © Said eteeusn CSS Mo_CORPKEY ‘SMO->!0_ CORPK: CS MOMGHRSUM. := SMO-DMO_GHKSI as momar oioate (SS MO_pSW = sMo->60 Ps: S movers = Sho-omergahse. ffs MOLINTCTRE | =. Su0-Xpgouvren ICENSCM + Sno ou aN MOLNIRE = (are shocbrme ai oss MOTCNES He wo_psusrar sxe PSWSTRE ito bocca AON engQa mecca Soin aceon 10->¢0_ASSPAT2 MO_ASSPI i MO_ASS| M02 uo_assrata NO’ swo->M0_assrar2 ‘SMO->!0_SIZEFIL ‘SMO~>M0_LETAUTS ‘SMO->!0_PICTURE = sw0->M0_STATUS SMO->M0_RNTRC ‘SMO-3¢0_DTRNTRC "Sucesso "+strzero (nDados, 2) PROTHEUS - VERSAO 12 : i 3 z : i & } 5030001 SALOL EP apepoic nf ADVPL Web Services Os mer crtigntis B= 6] Sep tan ot oes an ee pa Blo | - PROTHEUS - VERSAO 12 (9 sopensosos sop 50 sope sALOL EP apePaHAaAt 9 HLaUNDOP AISy pep SIC Naa CAI (9 sopenosa1 Sona 5050p0L SALOLEPapepautox powurDop aI nf ADVPL Web Services Ei snipes Df Smaps reent-ve zie ar = Ee zeeole. re te Or = (9 "spensoos sop 30a sALOL EP apEPUAOX! 9 OH (9 sopenosa1 Sona 5050p0L SALOLEPapepautox powurDop aI 58 / PROTHEUS - VERSAO 12 nf ADVPL Web Services © Exercicio 1. Crie um WebService Service buscando os dados da tabela de fornecedores com a parametrizagao de quantos registros devem ser apresentados. z & é 3 Iremos fazer a criacao do fonte utilizando © WSDL, com isso iremos acessar a pagina da Descric3o do Servico WSDL e utilizaremos o link hittp://localhost:8070/ws/CTT.apw?WSDL 5 targehamespce= tp lelnos9070/" inn mince mie aon scart epames mnie oroen| em "ects SEEM Mn Spon sep enn oa we pi has aon o> "nea pean micas 8070s mnie. “Scone” genmees am spies amen Spe ype ome "STRUTURAENO> tenn ret ne ‘sALOL ep apep § — man Iremos no TDS para fazer a secios fonte, criando um novo fonte WSDL advpl: g epapepatstoxd 5 i & e so / PROTHEUS - VERSAO 12 nif ADVPL Web Services oLepay Selecionar um assistente Assistente: > & Geal > @ Amaterss > @& Connection Profiles > @& lava > @& Remote System Explorer > @ TOTVS Assstentes > @ TOTVS SDK 4GL 4 @ TOTVS SDK AdvPL @ Assistente de Cédigo El Nova Classe Advpl | Nova Functo Advpl [TG Now Fonte WSDL Adve! "PROTHEUS.CH" "APWEBSRY.CH™ 1.120 eja gerade novanent User Function FSSLMD ; Return // “dunmy" function - Internal Use WSCLIENT WSCTT WSMETHOD NEW WSMETHOD INIT WSMETHOD RESET a / PROTHEUS - VERSAO 12 503090) SALOL nf ADVPL Web Services © WSMETHOD CLONE WSMETHOD LISTAEMPRESA WSDATA _URL AS string WSDATA _ZEADOUT AS Array of String WSDATA _COOKTES AS Array of String WSDATA — GCCODENP. AS string WSDATA oWSLISTAEMPRESARESULT AS. CTT_ARRAYOFESTRUTURAEMP. ENDWSCLIENT WSMETHOD NEW WSCLIENT WSCTT rInit() T£ !FindFunction ("XMLCHILDEX") Usersxception("0 Cédigo-Fonte Client atual requer os executaveis do Protheus Build [7,00.131227A-20170918 NG) ou superior. Atualize o Protheus ou gere 0 Cédigo-Fonte novamente utilizands o Build atual.") Endrf Return Self WSMETHOD INIT WSCLIENT WSCTT WWSLISTASMPRESARESULT :~ CTT omer eg Return WSMETHOD RESET WSCLIENT WSCTT CCODEME NIL WWSLISTAZMPRESARESULT :~ NIL nit () Return & NOWETHOD CLONE WOCLIEWT wECIT. C & Local oClone := WSCTT() :New() . Clone: URE & \ CODEN e Schone seccoDEMP Sclone oN: 1STAEMPRESA 1 OWSLTSTAEMPRESARESULT# ee Return Clone WSLISTAEMPRESARESULT = NIL , NIL // Ws0L Method — Service WSCrT WSMETHOD LISTAEMPRESB~% CCCODEMP WSRECEIVE oWSLISTAEMPRESARESULT WSCLIENT WSCTT Local cSoap :- "" , oXplRet BEGIN WSMETHOD Soap += '" Soap }= WSSoapValue ("CCODEMP", ::cCCODEMP, cCCODEMP , “string Fey Ps) eSoap += "" + cFep 0 NIL, oXmlRet := SveSoapCall( Self, cSoap, + "http: //localhost :8070/LISTAEMPRESA" 7 "DOCUMENT", "http: //localhost:8070/",,"1-031217", “http: //localhost :8070/ws/CTT.apw") nit) / PROTHEUS - VERSAO 12 sounop 353 g i z & z z i i 5 ® osopes251 soaps sOPOL'SALOL ED apepeo nf ADVPL Web Services © : :oW4SLISTAEMPRESARESUL': SoapRecv ( WSAdvVa lus ( oXmLRet,"_LISTAEMPRESARESPONSS: _LISTAEMPRESARESULT" , "ARRAYOFESTRUTURAEMP" , NIL, NIL, NIL,N IL,NIL,NIL) ) END WSMETHOD oxmlRet :- NIL Return .7 // WSDL Data Structure ARRAYOFESTRUTURAEMP WSSTRUCT CTT_ARRAYOFESTRUTURAEMP WSDATA — oWSESTRUTURAEMP AS CTT_ESTRUTURAEMP OPTIONAL WSMETHOD NEW WSMETHOD INIT WSMETHOD CLONE ENDWSSTRUCT nit () S Return seit 3 oF SY WSMETHOD INIT WSCLIENT CT7_ARRAYOFESTRUTURAEHR :OWSESTRUTURAEMP 0) // array Of )6Tt IRAEMP () :New () Return 2, WSMETHOD CLONE WSCLIENT CTT eet WSMETHOD NEW WSCLIENT CTT_ARRAYOFESTRUTURAEMP S$ ‘SALOL ED apepoa Local oClone := CTT_ARRAYOFESTRUTURAEMP () (NEW () clone oSSSHRUTORAEHE = NEL. C ge » oClone: oWSESTRUTURAEM? :— s5val ( ¢:oWSESTRUTURAE lx Endif Return oClone © WSESTRUTURAEMP , x:Clone() } } ) WSMETHOD SOAPRECV WSSEND oR@Sponse WSCLIENT CI'T_ARRAYOFESTRUYURAEMP Local nREleml, oNodes1, .ATElem1 nit () . If oResponse ~ NIL Qe ; Endif oNodes! :~ WSAdvVabua ( oReaponse, "_ESTRUTURAEMP™, "ESTRUTURAEMP", {},NELy .7., BTEleml :~ Len (oNodes1) For nREleni :~ 1 to nTSLent If IWSIsNilNode( cNodes1[nRELem1] } add (::0WSESTRUTURAEMP , CTT_ESTRUTURASMP() :New() ) : :OWSESTRUTURAEMP[ Len :SoapRecv (oNodes1 [aRElem2]) Endif Next Return // WSDL Data Structure ESTRUTURAEMP WSSTRUCT CTT_ESTRUTURAEMP WSDATA — cM0_ACTRAB WSDATA cM0_ASSPAT1 WSDATA —cM0_ASSPAT2. / PROTHEUS - VERSAO 12 nf ADVPL Web Services WSDATA cM0_ASSPAT3 WSDATA —cM0_BATRCOB WSDATA —cM0_BAIRENT WSDATA —cM0_CATXA WSDATA —cM0_CAUSA WSDATA —cM0_CEPCOB WSDATA cM0_CEPENT WSDATA — cM0_cGC WSDATA —ANO_CHKSUN AS integer g WSDATA — cM0_CIDCOB AS string a WSDATA —cM_CIDENT AS string 2 WSDATA eM0_CNAR AS string i WSDATA cMOCNES WSDATA — cM0CoD_ATY WSDATA cN0_CODFIL WSDATA — cl0™cop1G0 WSDATA eN0_CODMUN WSDATA _cH0~coDz0sE WSDATA _cN0_CoMPCOB WSDATA cH0_COMPENT WSDATA cN0_CORPKEY WSDATA —cHO_cTPSW WSDATA _cN0_DESZOSE WSDATA _nHO~DOCSEQ WSDATA —cNOTDSCCNA WSDATA —dl0DTAUTOR WSDATA c0DTBASE WSDATA — dM0_DTRE WSDATA _dMO™DTRNTRC WSDATA — M0_DTVLD WSDATA _cN0EMERGEN WSDATA —cM0_EMPB2B WSDATA _cHOWENDCOB WSDATA cM0_ENDENT WSDATA cHOEQUIP WSDATA cH0~#SICOB WSDATA cHOWESTENT WSDATA cHOWFAX WSDATA cOWFA_IMP WSDATA GHOWFAX_PO | WSDATA —cHOWFILIAL WO WSDATA —cM0_FPAS WSDATA —cH0WIMP_CON WSDATA cM0_INS_SUF WSDATA _cM0~INSE WSDATA eM0_INSCANT WSDATA cHOWINSCH WSDATA eM0_INTCTRL WSDATA —cM0~LBIAUTE WSDATA eN0_LIBMOD WSDATA —cH0ULTCENSA WSDATA eNM0MODEND WSDATA — cH0™MODINSC WSDATA cHO_NATJUR WSDATA — cHOUNTRE WSDATA cMO™NOME WSDATA _cH0_NOMECOM WSDATA _nMO™NUMPROP AS integer ‘sno. / PROTHEUS - VERSAO 12

Você também pode gostar