520 likes | 1.24k Views
Utilize qualquer Web Service a partir do Progress 4GL. Luis B. Campos System Engineer. Agenda. Introdução Web Service Basics WSDL Analyzer Chamando um Web Service a partir do 4GL. Web Service Client. Disponível no OpenEdge ® 10.0A AppServer não é necessário
E N D
Utilize qualquer Web Service a partir do Progress 4GL Luis B. Campos System Engineer
Agenda • Introdução • Web Service Basics • WSDL Analyzer • Chamando um Web Service a partir do 4GL Chame Qualquer Web Service a partir do Progress 4GL
Web Service Client • Disponível no OpenEdge® 10.0A • AppServer não é necessário • Client de uma aplicação diferente Chame Qualquer Web Service a partir do Progress 4GL
Web Services – Por que? • Conectividade heterogênea • Na arquitetura SOA eles tornam os serviços distribuídos possíveis • Denominador comun menor que o EDI ou CORBA Chame Qualquer Web Service a partir do Progress 4GL
Web Services – Por que? • Provedores de Web service disponíveis • Produtos: OpenEdge, Oracle, IBM DB/2, SalesForce.com, etc. • Serviços: Google, e-Bay, Commonwealth of Massachusetts, etc. • Plataformas de Desenvolvimento: OpenEdge, .NET™, J2EE, Apache, WebSphere. Chame Qualquer Web Service a partir do Progress 4GL
Web Services – Por que não? • Pode não ser eficiente • Pode não estar disponível Chame Qualquer Web Service a partir do Progress 4GL
Web Service Basics - Onde? Usuários Serviços Empresariais Camada de Apresentação Camada de Integração Camadas de Serviços de Negócio Camadas de Acesso a Dados Fontes de Dados Gerenciadas Fontes de DadosNão Gerenciadas OpenEdge Reference Architecture Chame Qualquer Web Service a partir do Progress 4GL
Agenda • Introdução • Web Service Basics • WSDL Analyzer • Chamando um Web Service a partir do 4GL Chame Qualquer Web Service a partir do Progress 4GL
Web Service Basics – SOAP Message Envelope Header Header Entry Header Entry … Body Body Entry Body Entry … Header opcional Entradas podem ser SOAP Faults (erros) Chame Qualquer Web Service a partir do Progress 4GL
Web Service Basics - WSDL Define • Interface • Codificação dos dados • Transporte • Endereço do serviço Contrato entre o client e o server Chame Qualquer Web Service a partir do Progress 4GL
Anatomia de uma Sessão Web Service WSDL Request WSDL Response SOAP Request SOAP Response SOAP Request SOAP Response Um provedor de Web Service OpenEdge 4GL Client Chame Qualquer Web Service a partir do Progress 4GL
Agenda • Introdução • Web Service Basics • WSDL Analyzer • Introdução • Demonstração do Analyzer • Chamando um Web Service a partir do 4GL Chame Qualquer Web Service a partir do Progress 4GL
Dicionário 4GL/WSDL 4GLWSDL AppServer™..…......….............Web service Persistent procedure..............Port type (interface) Internal procedure..................Operation Chame Qualquer Web Service a partir do Progress 4GL
Linha de Comando do WSDL Analyzer Gera a documentação 4GL para um web service C:\temp> bprowsdldoc http://api.google.com/GoogleSearch.wsdl google Documentation written to file:///c:\temp\google\index.html C:\temp> Chame Qualquer Web Service a partir do Progress 4GL
Anatomia do Projeto do Client WSDL Request WSDL Response Provedor do Web Service WSDL Analyzer OpenEdge 4GL Client Documentos Gerados Chame Qualquer Web Service a partir do Progress 4GL
Documentos Gerados Service index Port type conexão & chamada Data types dados complexos Operation Index Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer:Documentação do Serviço Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer:Documento do Serviço Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :Port Type – Sumário da Conexão Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :Port Type – Sumário da Operation Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :Port Type – Exemplo da Operation Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :Port Type – Parâmetros da Operation Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :Port Type – Exemplo de Parâmetros Complexos Chame Qualquer Web Service a partir do Progress 4GL
Dados Complexos como TEMP-TABLE addCustomers Procedure prototype PROCEDURE addCustomers: DEFINE INPUT PARAMETER TABLE FOR customerList. DEFINE OUTPUT PARAMETER TABLE FOR conflictList. END PROCEDURE. Chame Qualquer Web Service a partir do Progress 4GL
Dados Complexos como TEMP-TABLE Exemplo DEFINE TEMP-TABLE customerList NAMESPACE-URI http://mycompany.com/schemas/customerList NAMESPACE-PREFIX "cust“ FIELD CustNum AS INTEGER FIELD Name AS CHARACTER XML-NODE-TYPE "Attribute“ FIELD Country AS CHARACTER FIELD Comments AS CHARACTER INDEX CustNum IS PRIMARY UNIQUE CustNum INDEX Name Name INDEX Comments IS WORD-INDEX Comments. Chame Qualquer Web Service a partir do Progress 4GL
Dados Complexos como TEMP-TABLE Parâmetros customerList This value is defined as a TEMP-TABLE. This value can also be expressed as a CustomerTable element in The http://mycompany.com/schemas/customerList namespace. As such, this parameter can be passed as a CHARACTER or LONGCHAR value containing an XML document. View example of XML. Chame Qualquer Web Service a partir do Progress 4GL
Agenda • Introdução • Web Service Basics • WSDL Analyzer • Chamando um Web Service a partir do 4GL • Mapeamento de tipos de dados • Conexão e chamada • Manipulação do Header • Manipulação de Erros Chame Qualquer Web Service a partir do Progress 4GL
Simples Mapeamento de Tipo de Dados Para mapeamentos completos,veja a documentação Chame Qualquer Web Service a partir do Progress 4GL
Dados Complexos Representados de duas formas: • LONGCHAR/CHARACTER de documentos XML serializados • ProDataSet ou TEMP-TABLE quando possível (10.1A) Analyzer mostra exemplos de ambos. Chame Qualquer Web Service a partir do Progress 4GL
Conexão e ChamadaExatamente como um AppServer CREATE SERVER web-svc-handle. web-svc-handle:CONNECT(“-WSDL wsdl-url ws-connect-parms”). RUN port-type-name SET port-type-handle ON web-svc-handle. RUN operation IN port-type-handle(parameters). CREATE SERVER app-server-handle. app-server-handle:CONNECT(“appserver-connect-parms”). RUN persistent-proc PERSISTENT SET procedure-handle ON app-server-handle. RUN internal-proc IN procedure-handle(parameters). Chame Qualquer Web Service a partir do Progress 4GL
Resultados Google no Browser Chame Qualquer Web Service a partir do Progress 4GL
Exemplo de Conexão Selecionado Chame Qualquer Web Service a partir do Progress 4GL
Exemplos de Conexão e Chamada Colados Chame Qualquer Web Service a partir do Progress 4GL
Definições de Variáveis Chame Qualquer Web Service a partir do Progress 4GL
Connect e Set Port Chame Qualquer Web Service a partir do Progress 4GL
Chamada ao Google Chame Qualquer Web Service a partir do Progress 4GL
Resultado da Pesquisa Utilizando DOM Chame Qualquer Web Service a partir do Progress 4GL
Carga da TEMP-TABLE com os Resultados Chame Qualquer Web Service a partir do Progress 4GL
Resultados no 4GL Client Chame Qualquer Web Service a partir do Progress 4GL
Objetos 4GL SOAP Header Header Entry Header Entry Envelope SOAP-HEADER Header SOAP-HEADER-ENTRYREF … SOAP-HEADER-ENTRYREF … Body Body Entry Chame Qualquer Web Service a partir do Progress 4GL
SOAP Headers • Define um callbackport-type-handle:SET-CALLBACK-PROCEDURE( “REQUEST-HEADER | RESPONSE-HEADER”, “request-handler-name”,web-service-handle). • Escreve um callbackPROCEDURE request-handler-name: DEFINE INPUT PARAMETER soap-header-handle AS HANDLE. DEFINE INPUT PARAMETER operation-namespace AS CHARACTER. DEFINE INPUT PARAMETER operation-local-name AS CHARACTER.END. Chame Qualquer Web Service a partir do Progress 4GL
Anatomia de um Erro no Web Service WSDL Request WSDL Response SOAP Request SOAP Response (FAULT) Provedor do Web Service OpenEdge 4GL Client Chame Qualquer Web Service a partir do Progress 4GL
4GL SOAP Fault Envelope fault code fault actor Body fault string Body Entry <faultdetail> Chame Qualquer Web Service a partir do Progress 4GL
Fault Objects do 4GL ERROR-STATUS SOAP-FAULT fault info SOAP-FAULT-DETAIL XML Chame Qualquer Web Service a partir do Progress 4GL
SOAP Fault - Faultstring An error was detected while executing the Web Service request. (10893) Chame Qualquer Web Service a partir do Progress 4GL
SOAP Fault - Detail <detail> <errorMessage> msg=The server application returned the error: Invoice not found; targetException=ERROR condition: The Server application has returned an error. (7243) (7211)] </errorMessage> <requestID> 172247e5b58beb30:5bb966:fb4fdb744a:-7fff#9 </requestID> </detail> Chame Qualquer Web Service a partir do Progress 4GL
Resumo OpenEdge 4GL Client Web Service ou AppServer? • Chamar um web service é fácil • Use o WSDL Analyzer SOA-07: Call Any Web Service from the Progress 4GL
Perguntas? Chame Qualquer Web Service a partir do Progress 4GL
Obrigado! Chame Qualquer Web Service a partir do Progress 4GL