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
2 © 2005 Progress Software Corporation
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
3 © 2005 Progress Software Corporation
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
4 © 2005 Progress Software Corporation
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.
5 © 2005 Progress Software Corporation
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
6 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Web Service Basics - Onde?
OpenEdge Reference Architecture
Usuários
Camada de Apresentação
Serviços
Empresariais
Camada de Integração
Camadas de Serviços de Negócio
Camadas de Acesso a Dados
Fontes de Dados
Gerenciadas
7 © 2005 Progress Software Corporation
Fontes de Dados
Não Gerenciadas
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
8 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Web Service Basics – SOAP Message
Simple
Object
Header
Header Entry
Header Entry
…
Access
Protocol
Envelope
Body
Body Entry
Header opcional
Entradas
podem ser
SOAP Faults
(erros)
Body Entry
…
9 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Web Service Basics - WSDL
Web
Service
Description
Language
Define
 Interface
 Codificação dos dados
 Transporte
 Endereço do serviço
Contrato entre o client e o server
10 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Anatomia de uma
Sessão Web Service
WSDL Request
WSDL Response
OpenEdge
4GL Client
SOAP Request
Um provedor
de Web
Service
SOAP Response
SOAP Request
SOAP Response
11 © 2005 Progress Software Corporation
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
12 © 2005 Progress Software Corporation
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
13 © 2005 Progress Software Corporation
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>
14 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Anatomia do Projeto do Client
WSDL Request
WSDL
Analyzer
WSDL Response
Documentos
Gerados
15 © 2005 Progress Software Corporation
Provedor do
Web Service
OpenEdge
4GL Client
Chame Qualquer Web Service a partir do Progress 4GL
Documentos Gerados
Service
Port type
Data types
index
conexão &
chamada
dados
complexos
Operation
Index
16 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer:
Documentação do Serviço
17 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer:
Documento do Serviço
18 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :
Port Type – Sumário da Conexão
19 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :
Port Type – Sumário da Operation
20 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :
Port Type – Exemplo da Operation
21 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :
Port Type – Parâmetros da Operation
22 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Snapshots do Analyzer :
Port Type – Exemplo de Parâmetros
Complexos
23 © 2005 Progress Software Corporation
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.
24 © 2005 Progress Software Corporation
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.
25 © 2005 Progress Software Corporation
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.
26 © 2005 Progress Software Corporation
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
27 © 2005 Progress Software Corporation
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
CHARACTER e LONGCHAR podem sempre ser
usados
Para mapeamentos completos,
veja a documentação
28 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
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.
29 © 2005 Progress Software Corporation
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).
30 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Resultados Google no Browser
31 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Exemplo de Conexão Selecionado
32 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Exemplos de Conexão e Chamada
Colados
33 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Definições de Variáveis
34 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Connect e Set Port
35 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Chamada ao Google
36 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Resultado da Pesquisa Utilizando
DOM
37 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Carga da TEMP-TABLE com os
Resultados
38 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Resultados no 4GL Client
39 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Objetos 4GL SOAP Header
Envelope
SOAP-HEADER
…
SOAP-HEADER-ENTRYREF
Header
Header Entry
Header Entry
SOAP-HEADER-ENTRYREF
…
Body
Body Entry
40 © 2005 Progress Software Corporation
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.
41 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Anatomia de um Erro no Web Service
WSDL Request
WSDL Response
OpenEdge
4GL Client
SOAP Request
Provedor do
Web Service
SOAP Response
(FAULT)
42 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
4GL SOAP Fault
Envelope
fault code
Body
fault actor
fault string
Body Entry
43 © 2005 Progress Software Corporation
<faultdetail>
Chame Qualquer Web Service a partir do Progress 4GL
Fault Objects do 4GL
ERROR-STATUS
SOAP-FAULT fault info
SOAP-FAULT-DETAIL
XML
44 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
SOAP Fault - Faultstring
An error was detected while
executing the Web Service request.
(10893)
45 © 2005 Progress Software Corporation
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>
46 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Resumo


Chamar um web service é fácil
Use o WSDL Analyzer
OpenEdge 4GL
Client
Web Service
ou
AppServer?
47 © 2005 Progress Software Corporation
SOA-07: Call Any Web Service from the Progress 4GL
Perguntas?
48 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Obrigado!
49 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
50 © 2005 Progress Software Corporation
Chame Qualquer Web Service a partir do Progress 4GL
Download

SOA-07: Call Any Web Service from the Progress 4GL