Utilize qualquer Web Service a partir do Progress 4GL
Luis B. CamposSystem Engineer
2 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Introdução Web Service Basics WSDL Analyzer Chamando um Web Service a partir do 4GL
Agenda
3 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Web Service Client
Disponível no OpenEdge® 10.0A AppServer não é necessário Client de uma aplicação diferente
4 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
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
5 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
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.
6 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Web Services – Por que não?
Pode não ser eficiente Pode não estar disponível
7 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Web Service Basics - Onde?
Usuários 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 Gerenciadas
Fontes de DadosNão Gerenciadas
Fontes de DadosNão Gerenciadas
Serviços Empresariais
Serviços Empresariais
Camada de Integração
OpenEdge Reference Architecture
8 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Introdução Web Service Basics WSDL Analyzer Chamando um Web Service a partir do 4GL
Agenda
9 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Web Service Basics – SOAP Message
Envelope
Body
HeaderHeader Entry
…Body Entry
Body Entry
Header Entry
…
Entradas podem ser
SOAP Faults (erros)
Header opcional
Simple
Object
Access
Protocol
10 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Web Service Basics - WSDL
Define Interface Codificação dos dados Transporte Endereço do serviço
Contrato entre o client e o server
Web
Service
Description
Language
11 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Anatomia de uma Sessão Web Service
OpenEdge 4GL Client
Um provedor de Web Service
SOAP Request
SOAP Response
SOAP Request
SOAP Response
WSDL Request
WSDL Response
12 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Introdução Web Service Basics WSDL Analyzer
– Introdução
– Demonstração do Analyzer Chamando um Web Service a partir do 4GL
Agenda
13 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Dicionário 4GL/WSDL
4GL WSDLAppServer™..…......….............Web service
Persistent procedure..............Port type (interface)
Internal procedure..................Operation
14 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Linha de Comando do WSDL Analyzer
Gera a documentação 4GL para um web service
C:\temp> bprowsdldochttp://api.google.com/GoogleSearch.wsdlgoogle
Documentation written tofile:///c:\temp\google\index.html
C:\temp>
15 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Anatomia do Projeto do Client
WSDL Analyzer
Provedor do Web Service
WSDL Request
WSDL Response
Documentos Gerados
OpenEdge 4GL Client
16 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Documentos Gerados
Data types
dados complexos
Operation Index
Port type
conexão & chamada
Service
index
17 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Snapshots do Analyzer:Documentação do Serviço
18 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Snapshots do Analyzer:Documento do Serviço
19 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Snapshots do Analyzer :Port Type – Sumário da Conexão
20 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Snapshots do Analyzer :Port Type – Sumário da Operation
21 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Snapshots do Analyzer :Port Type – Exemplo da Operation
22 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Snapshots do Analyzer :Port Type – Parâmetros da Operation
23 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Snapshots do Analyzer :Port Type – Exemplo de Parâmetros Complexos
24 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Dados Complexos como TEMP-TABLE
addCustomers
Procedure prototypePROCEDURE addCustomers: DEFINE INPUT PARAMETER TABLE FOR customerList. DEFINE OUTPUT PARAMETER TABLE FOR conflictList.END PROCEDURE.
25 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Dados Complexos como TEMP-TABLE
ExemploDEFINE 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.
26 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Dados Complexos como TEMP-TABLE
ParâmetroscustomerList
This value is defined as a TEMP-TABLE.
This value can also be expressed as a CustomerTable element inThe http://mycompany.com/schemas/customerListnamespace. As such, this parameter can be passed as aCHARACTER or LONGCHAR value containing an XMLdocument. View example of XML.
27 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
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
Agenda
28 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Simples Mapeamento de Tipo de Dados
XML Schema Data Type Progress 4GL Data Typestring CHARACTER
boolean LOGICAL
decimal DECIMAL
integer INTEGER
float, double, duration CHARACTER
CHARACTER e LONGCHAR podem sempre ser usados
Para mapeamentos completos,veja a documentação
29 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Dados Complexos
Representados de duas formas:
1. LONGCHAR/CHARACTER de documentos XML serializados
2. ProDataSet ou TEMP-TABLE quando possível (10.1A)
Analyzer mostra exemplos de ambos.
30 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
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).
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).
Conexão e ChamadaExatamente como um AppServer
31 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Resultados Google no Browser
32 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Exemplo de Conexão Selecionado
33 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Exemplos de Conexão e Chamada Colados
34 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Definições de Variáveis
35 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Connect e Set Port
36 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Chamada ao Google
37 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Resultado da Pesquisa Utilizando DOM
38 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Carga da TEMP-TABLE com os Resultados
39 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Resultados no 4GL Client
40 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Objetos 4GL SOAP HeaderEnvelope
Body
HeaderHeader Entry
…
Body Entry
Header Entry
SOAP-HEADER
SOAP-HEADER-ENTRYREF
…SOAP-HEADER-ENTRYREF
41 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
SOAP Headers Define um callback
port-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.
42 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Anatomia de um Erro no Web Service
OpenEdge 4GL Client
Provedor do Web ServiceSOAP Request
SOAP Response
(FAULT)
WSDL Request
WSDL Response
43 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
4GL SOAP Fault
Envelope
Body
Body Entry
fault code
fault string
fault actor
<faultdetail>
44 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Fault Objects do 4GL
ERROR-STATUS
SOAP-FAULT
SOAP-FAULT-DETAIL
XML
fault info
45 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
SOAP Fault - Faultstring
An error was detected while executing the Web Service request. (10893)
46 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
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>
47 SOA-07: Call Any Web Service from the Progress 4GL© 2005 Progress Software Corporation
Resumo
Chamar um web service é fácil Use o WSDL Analyzer
OpenEdge 4GL Client
Web Service ou
AppServer?
48 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Perguntas?
49 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation
Obrigado!
50 Chame Qualquer Web Service a partir do Progress 4GL© 2005 Progress Software Corporation