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? OpenEdge Reference Architecture Usuários Camada de Apresentação Camadas de Serviços de Negócio Camadas de Acesso a Dados Fontes de Dados Gerenciadas Fontes de Dados Não Gerenciadas Serviços Empresariais Camada de Integração 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 imple O bject A ccess P rotocol Envelope Body Header Header Entry … Body Entry Header opcional Entradas podem ser SOAP Faults (erros) Chame Qualquer Web Service a partir do Progress 4GL
Web Service Basics - WSDL escription L anguage 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 Um provedor de Web Service WSDL Response OpenEdge 4GL Client SOAP Request SOAP Response SOAP Request SOAP Response Chame Qualquer Web Service a partir do Progress 4GL
Agenda Introdução Web Service Basics WSDL Analyzer 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 4GL WSDL 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 Provedor do Web Service WSDL Analyzer WSDL Response OpenEdge 4GL Client Documentos Gerados Chame Qualquer Web Service a partir do Progress 4GL
Documentos Gerados Service Port type Data types Operation Index 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 XML Schema Data Type Progress 4GL Data Type string CHARACTER boolean LOGICAL decimal DECIMAL integer INTEGER float, double, duration CHARACTER e LONGCHAR podem sempre ser usados 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 Chamada Exatamente 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 SOAP-HEADER Envelope Header Header Entry SOAP-HEADER-ENTRYREF … SOAP-HEADER-ENTRYREF … Body Body Entry Chame Qualquer Web Service a partir do Progress 4GL
SOAP Headers Define um callback port-type-handle:SET-CALLBACK-PROCEDURE( “REQUEST-HEADER | RESPONSE-HEADER”, “request-handler-name”, web-service-handle). Escreve um callback PROCEDURE 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 Provedor do Web Service WSDL Response OpenEdge 4GL Client SOAP Request SOAP Response (FAULT) Chame Qualquer Web Service a partir do Progress 4GL
4GL SOAP Fault Envelope Body Body Entry fault code fault string fault actor <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
Web Service ou AppServer? Resumo Chamar um web service é fácil Use o WSDL Analyzer OpenEdge 4GL Client Web Service ou AppServer? 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
Chame Qualquer Web Service a partir do Progress 4GL