Tecnologia

Consumindo Webservices via OpenEdge

Bem vindos a todos os interessados por programação Progress, estaremos discutindo nos próximos artigos como consumir um WebService diretamente do Progress OpenEdge. Para que este laboratório tenha êxito, teremos que adequar nossas informações, não abordaremos nenhum tipo de instalação do OpenEdge, tão pouco de outras ferramentas. Para este laboratório vamos precisar do seguinte ambiente configurado:

Configurando seu HotLAB

  1. Um micro com o OpenEdge (Versão 10 ou superior). (Não será necessário nada além dele e um pouco de conhecimento).
  2. O service Pack de sua versão instalada aplicado.
  3. Apache – Tomcat instalado.
  4. Acesso a Internet.
  5. E leitura desta série.

Antes de começar vamos entender um pouco mais de XML

Introdução ao XML

De acordo com a Wikipédia o XML

XML (eXtensible Markup Language) é uma recomendação da W3C para gerar linguagens de marcação para necessidades especiais.

É um subtipo de SGML (acrônimo de Standard Generalized Markup Language, ou Linguagem Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações através da Internet.

Entre linguagens baseadas em XML incluem-se XHTML (formato para páginas Web), RDF,SDMX ,SMIL, MathML (formato para expressões matemáticas), NCL, XBRL, XSIL e SVG (formato gráfico vetorial). A principal característica do XML, de criar uma infraestrutura única para diversas linguagens, é que linguagens desconhecidas e de pouco uso também podem ser definidas sem maior trabalho e sem necessidade de ser submetidas

Para entender como  um webservice funciona, utilizaremos a padrão deste treinamento a NewCoService (http://wstraining.progress.com/wsa/wsa1/wsdl?targetURI=urn:OpenEdgeServices:NewCoService) com ela iremos desenvolver nossas aplicações, para isso utilizaremos um aplicativo de documentação de webservice que já vem nativo com o Progress o bprowsdldoc, sua utilização é muito simples acesse seu menu Iniciar > Todos os Programas > OpenEdge > Proenv (caso tenha instalado em outro diretório localize o Proenv dentro de seu diretório de instalação, o documento gerado pelo bprowsdldoc pode ser utilizado por qualquer linguagem).

Diferenças entre Website e Webservices

O primeiro copia o que o usuário escolher e cola numa aplicação.

O segundo trabalha com iteração direta no servidor.

Protocolo padrão: SOAP

A própria Progress se preocupa em atualizar as diferentes versões de SOAP nos servidores das empresas.

  • Quem disponibiliza o serviço?
  • O provedor através dos erros retornados “SOAP Fault“, é que será feito o tratamento de erro. O documento em XML, chamado WSDL, é o script chave para formatação e conexão do Webservice.
  • Este documento esta disponível no servidor do PROVEDOR e indicará a forma que os dados devem ser acessados.

Conectando-se ao Webservice

Ao efetuar uma chamada persistente anexa a uma handle, deve-se terminar a conexão no final para não ficar presa a conexão no servidor. A separação de operações cliente das operações do fornecedor, é preciso definir o PortType para ambos. (parâmetro –PortType) no Connect.

SOAP Message, é a transmissão de mensagens, pode ir uma solicitação e retornar ou o erro ou os dados solicitados.

Exemplo: no WSDL, as tags indicarão nomes que possuem resposta ou não.

Se seu navegador abrir a página com a estrutura da WSDL ex.( http://... wsdl ) do servidor é porque o serviço já está ativo.

Escolha o PortType… e no topo à direita clique “Service”, irá aparecer:

http://wstraining.progress.com/wsa/wsa1/wsdl?targetURI=urn:OpenEdgeServices:NewCoService-WrappedDocLiteral

Pode se ter mais exemplos de endereços no Google procurando por “WSDL list” ou “NewCoService wsdl”, existem diversas webservices gratuitas e vários tipos de serviços, um boa dica são as webservices da própria Google, mas por enquanto atente-se para a webservice de treinamento mencionada acima.

A geração do WSDL é feita pelo Progress no Provedor, passando programas que previamente devem estar instalados e configurados, o conteúdo do script wsdl é criado automaticamente, com todos as operações e mensagens. Os nomes dos elementos servem para direcionar dentro do wsdl as configurações e interlaces nas operações.

PORTTYPE : é um tipo específico usado é com ele que

BIND : é o relacionamento que se faz entre objeto e mensagens determinando type, style, transport (protocolo)

NAMESPACE: indica que o nome dado no cabeçalho do script está encapsulado.

Os indicam mais detalhes do objeto, porttype, serviço, mensagem, etc.

Passos para usar o WSDL

  1. Pegar o URL da WSDL.
  2. Executar o WSDL Analyser.
  3. Examinar o documento gerado.

Para consultar tudo que é criado pelo WSDL (HELP) siga estes passos

O vídeo à baixo vai lhe ajudar a gerar o documento Help pelo WDSL

1 – Execute o PROENV no menu iniciar

2 – Digite:

BPROWSDLDOC http://wstraining.progress.com/wsa/wsa1/wsdl?targetURI=urn:OpenEdgeServices:NewCoService c:temp

No lugar do C:TEMP pode ser uma pasta qualquer, se nada for colocado ele copiara o script index.html para a pasta WRK padrão do Progress instalado.

3 – Execute o arquivo index.html e navegue dentro dele para descobrir a forma de usar os elementos, mensagens etc.

Veja em nosso canal: Gerar documento HELP pelo WSDL disponível no Provedor de WebService

Lembre-se: Sempre busque a documentação do servidor, evitando erros por desatualização de arquivos de ajuda.

Na demonstração do INDEX.HTML, tudo que estiver no inicio dos DATA TYPES (Ex. FaultDetails, Functlib)  são TIPOS COMPLEXOS (feitos em XML).

Quando aparece o nome NAMESPACE significa que um nome diferente do nome no cabeçalho, ou seja uma função diferente por isso existem conexões em locais diferentes do mesmo cliente feitas pelo BIND, já para o desenvolvedor não se preocupe com isso, nem use o BIND. Encontrar as funções é simples, no geral são iniciadas com que contém os campos de entrada ou que contém os campos de saída.

Tipos de Funções

Document: somente 1 parâmetro de entrada e 1 de saída.

RPC: vários parâmetros de entrada e vários de saída.

Forma antiga (Progress 9 e inferiores)

O código abaixo gera a documentação na versão antiga

BPROWSDLDOC −show100style http://wstraining.progress.com/wsa/wsa1/wsdl?targetURI=urn:OpenEdgeServices:NewCoService c:temp

Quando há passagem de parâmetros na versão antiga, você teria que procurar o campo no XML e depois aplicar no tipo Document e então aplicar no programa.

A versão nova não precisa procurar no XML.

Para passar a FORMA ANTIGA para a FORMA NOVA, deve-se executar o Fix da Progress.

HIERARQUIA DO WSDL

  • Service
  • Port
  • Binding
  • Port Type
  • operations
  • message
  • types

Existem dois formatos de operação o formato ENCODED e LITERAL, respectivamente funcionam da seguinte forma:

  • ENCODED – os nomes dos parâmetros estão no próprio XML – Exemplo:
  • LITERAL – os nomes dos parâmetros devem ser buscados em outro WSDL – Exemplo:

Toda operação retorna um LONGCHAR, devido à declaração , e sendo Document Literal, sempre tem dois parâmetros: Entrada e Saída.

Quando existem varias mensagens no PortType, pode haver reaproveitamento do código.

O provedor pode gerar três tipos de serviços

  1. Document Literal.
  2. RPC Encoder.
  3. Literal.

Execute os comandos abaixo para gerar a documentação no formato antigo (muito útil quando seu cliente não tem uma  versão atualizada).

BPROWSDLDOC −show100style http://wstraining.progress.com/wsa/wsa1/wsdl?targetURI=urn:OpenEdgeServices:NewCoService−WrappedDocLiteral c:temp
BPROWSDLDOC −show100style http://wstraining.progress.com/axis/services/urn:OpenEdgeServices:NewCoService2?wsdl c:temp

A conexão por Múltiplas Portas é necessário quando ha mais de um local para se conectar no mesmo cliente. Ex.: um servidor aqui outro no Japão. Com isso é definido uma HANDLE hPortType2 adicional e efetuado mais uma conexão.

Agora que você já conhece um pouco sobre a estrutura de uma WSDL e um pouco de XML, já é hora de subir as mangas e mãos à obra na próxima postagem!.

Coimbra, PMP on FacebookCoimbra, PMP on LinkedinCoimbra, PMP on TwitterCoimbra, PMP on Youtube
Coimbra, PMP

CEO do portal, apaixonado por gestão de projetos, metodologias, minha família, professor, consultor, certificado PMP, Six Sigma White Belt.


Comentários

Deixe uma resposta