Web Service (com e sem SSL) para PostgreSQL

Objetivos

Neste artigo você aprederá a:

  1. Acessa web services com e sem certificação digital;
  2. Extrair dados de um web service e carregá-los em uma tabela no PostgreSQL.

Introdução

A utilização de web services é cada vez mais comum nos dias de hoje, pois a garantia da integração entre sistemas com plataformas totalmente distintas minimiza principalmente o grau de invasividade nos sistemas que precisam ser integrados.

Utilizaremos nesse artigo a operação ConsultaDadosFilhos do web service do Sistema de Informações Organizacionais do Governo – SIORG -.

O processo de carga desenvolvido no decorrer deste artigo será sem o uso de SSL, mas explicarei em um tópico extra como consumir um web service que necessite de certificação digital no Talend.

Conhecendo o Web Service

  • Nessa interface você pode executar testes do serviço, porém com interface gráfica.
    • Exemplo: Passar o valor 2981 no parâmetro de entrada da operação ( pCo_Orgao: 2981). Isso te retornará todos os órgãos vinculados ao Ministério do Planejamento.

Processo de Carga Parte 1 – Extração dos Dados do Web Service

Nessa seção descreverei como será o processo de carga para a extração dos dados da operação ConsultaDadosFilhos do web service do SIORG. Para isso, detalharei passo a passo a configuração de cada componente do processo.

Nota: Para criar o job, selecione com o botão direito a opção “Job Designs -> Create job” e dê um nome ao job, o chamarei de “TalendBrasil_WS_MySQL”.

tRowGenerator

  • Na paleta de componentes clique na pasta Misc, selecione e arraste para o job o componente tRowGenerator. Com este componente iremos gerar o cabeçalho de XML padrão automaticamente.

  • Clique duas vezes no componente para que o Editor do RowGenerator apareça.
  • (1*) Na janela de edição clique no botão adicionar e altere o nome da coluna para “CabecalhoXML”. O tipo dessa coluna deve permanecer sendo String.
  • (2*) Na coluna Functions altere a função para ‘ … ‘  (última opção da lista de funções)
  • (3*) No campo Number of Rows for RowGenerator coloque o valor “1”, para que o nosso cabeçalho seja gerado apenas uma vez.
  • (4*) Na parte inferior da janela clique na aba Function parameters e inclua o conteúdo abaixo na coluna Valor.
    • Valor: “<?xml version=\”1.0\” encoding=\”ISO-8859-15\”?>”

tWebServiceInput

  • Na paleta de componentes clique na pasta Internet, selecione e arraste para o job o componente tWebServiceInput, esse é o componente padrão para chamadas a Web Services.

  • Clique duas vezes no componente para configurá-lo.
  • No campo Method Name inclua o nome da operação que iremos invocar. Nesse caso, a operação chamasse “ConsultaDadosFilhos” .
  • Na última parte serão inseridos os parâmetros necessários para fazer a chamada ao serviço, essa operação tem apenas um parâmetro de entrada, então clique 1 vez no botão adicionar  e coloque o valor 2981 entre aspas “”.

  • Feito isso, vamos criar o esquema que irá armazenar os dados provenientes do Web Service. Clique na opção Edit schema e adicione 1 coluna, dê o nome de ConsultaDadosFilhos, ao finalizar aparecerá uma janela perguntando se você deseja propagar as mudanças, clique em Yes.

tUnite

  • Na paleta de componentes clique na pasta Orchestration, selecione e arraste para o job o componente tUnite, esse componente irá juntar o “Cabeçalho XML” com os dados de retorno da consulta ao web service.

  • Clique com o botão direito em cima do componente tRowGenerator e selecine a opção Row -> Main, arrastando a seta para o componenente tUnite .
  • Clique com o botão direito em cima do componente tWebServiceInput e selecine a opção Row -> Main, arrastando a seta para o componenente tUnite .

tFileOutputDelimeted

  • Na paleta de componentes clique na pasta File -> Output, selecione e arraste para o job o componente tFileOutputDelimeted, esse será nosso componente de saída temporária dos dados do web service. Esse procedimento se dá, pois precisamos mapear os “nós” do XML e através desse passo intermediário conseguimos realizar essa tarefa com maior facilidade e clareza.

  • Clique com o botão direito em cima do componente tUnite e selecine a opção Row -> Main, arrastando a seta para o componenente tFileOutputDelimited.
  • Clique duas vezes no componente para configurá-lo.
  • No campo File Name retire o conteúdo padrão e inclua o caminho onde você deseja salvar o arquivo. A extensão do arquivo tem que ser .xml
    • Exemplo: “C:/Users/yasmim/Desktop/TalendBrasil_WS_MySQL/consulta_dados_filhos.xml

A figura abaixo mostra como está o job até momento.

Feito isso vá até a aba Run(Job) ou simplesmente pressione F6 para executar o job e verifique se o arquivo .xml está sendo gerado com sucesso.

Processo de Carga Parte 2 – Carga dos Dados no PostgreSQL

Nessa seção descreverei como será o processo de carga dos dados no banco de dados PostgreSQL. Para isso, detalharei passo a passo a configuração de cada componente do processo.

tFileInputXML

  • Na paleta de componentes clique na pasta File -> Input, selecione e arraste para o job o componente tFileInputXML. Este é o componente que iremos utilizar como entrada para o arquivo XML gerado no Processo de Carga Parte 1.

  • Clique com o botão direito em cima do componente tFileOutputDelimited e selecine a opção Trigger -> OnComponenteOK, arrastando a seta para o componenente tFileInputXML.
  • Clique duas vezes no componente para configurá-lo.
  • No campo Filename/InputStream retire o conteúdo padrão e inclua o caminho onde você  salvou o arquivo .xml.
    • Exemplo: “C:/Users/yasmim/Desktop/TalendBrasil_WS_MySQL/consulta_dados_filhos.xml
  • No campo Loop XPath query retire o conteúdo padrão e inclua o valor abaixo. Nesse campo deve-se mapear qual o nó do XML que daremos o looping.
    • Exemplo: “/Filhos/DadosFilho”
  • Clique em Edit Schema para configurar os campos de saída para o banco.
  • Clique no botão adicionar e inclua 4 (quatro) colunas. Com os nomes abaixo.
    • Co_orgao
    • No_orgao
    • Sg_orgao
    • Da_lei_criacao

Nota: Todos os campos listados acima devem ficar com o tipo de dado String e com os respectivos tamanhos: 6, 56, 6 e 10.

  • Após esse passo preeencha os valores da coluna XPath query conforme apresentado abaixo.
    • “Co_orgao”
    • “No_orgao”
    • “Sg_orgao”
    • “Da_lei_criacao”

tPostgresqlOutput

  • Na paleta de componentes clique na pasta Base de Dados-> PostgreSQL , selecione e arraste para o job o componente tPostgresqlOutput. Este é o componente que iremos utilizar para fazer a carga dos dados extraídos do web service no banco de dados PostgreSQL.

  • Clique com o botão direito em cima do componente tFileInputXML e selecine a opção Row-> Main, arrastando a seta para o componenente tPostgresqlOutput.
  • Clique duas vezes no componente para configurá-lo.
  • Preencha os campos do componente conforme o detalhamento abaixo.
  1. Login: usuário do banco de dados;
  2. Password: senha do banco de dados;
  3. Server: IP do banco (se a conexão for local, pode usar localhost);
  4. Port: porta do banco de dados (já vem preenchido por padrão 5432, caso sua conexão seja em outra porta basta alterar);
  5. DataBase: nome da base de dados. Darei o nome de “Orgaos”;
  6. Schema: nome do schema do banco de dados. Esse parâmetro é opcional. Caso você não tenha criado um schema novo para a base de dados use o schema public.
  • No campo Action on table selecione a opção “Drop table if exists and create”.
  • No campo Action on data selecione a opção “Insert”.

Após esses passos vá até a aba Run(Job) ou simplesmente pressione F6 para executar o job e verique se os dados extraídos do web service foram carregados no banco de dados PostgreSQL.

Nota: Caso uma mensagem de erro apareça ao executar o job, verifique se os parâmetros de acesso ao PostgreSQL informados estão corretos e tente novamente.

Acessando Web Services com Certificação Digital

Para acessar um web service com SSL no Talend, existe um procedimento que deve ser realizado na máquina virtual java. Nessa seção descreverei tal procedimento.

Nota: Os caracteres <> devem só servem como destaque para o que deve ser alterado, ou seja, eles não fazem parte dos nomes e nem dos comando apresentados.

Criação da KeyStore

  • De posse do certificado digital do web service que deseje acessar (arquivo .cer ou .crt) salve o mesmo na máquina que irá executar o processo de carga.
    • Exemplo: c:\<nome_certificado>.cer
  • Acesse o prompt de comando do seu sistema operacional e execute o comando abaixo na pasta do java (..\jdk1.6.0_26\bin).
    • Comando 1: keytool -genkey -v -alias server -keyalg RSA -keystore <caminho do arquivo .cer> “CN=<url do site do certificado>,OU=Equipamento A1,O=ICP-Brasil,C=BR” -storepass password -keypass password
    • Comando 2: keytool -import -v -file <caminho do arquivo .cer> -keystore <caminho do arquivo .keystore> -storepass password
  • Copiar o arquivo ‘<nome_certificado>.cer’ para a pasta ..\jdk1.6.0_26\jre\lib\security
  • Acesse o prompt de comando do seu sistema operacional e execute o comando abaixo na pasta do java (..\jdk1.6.0_26\bin).
    • Comando 1: keytool -importcert -trustcacerts -alias <ALIAS> -keystore ..\jre\lib\security\cacerts -file ..\jre\lib\security\<nome_certificado>.cer
    • Comando 2: Informar a senha, por padrão é ‘changeit’
    • Você vai então receber a seguinte mensagem se tudo for bem sucedido – “Certificado foi adicionado ao keystore”.

Nota:  A pasta ‘jdk1.6.0_26’ muda de acordo com a versão do JDK que tiver instalado na máquina

Após esse procedimento, o certificado estará com o keystore importado e já poderemos ir para o Talend.

tWebServiceInput

  • Na paleta de componentes clique na pasta Internet, selecione e arraste para o job o componente tWebServiceInput, esse é o componente padrão para chamadas a Web Services.
  • Clique duas vezes no componente para configurá-lo.
  • No campo WSDL retire o conteúdo padrão e inclua o endereço do wsdl do web service que com certificado que deseje acessar.
  • No campo Method Name inclua o nome da operação que deseje  invocar.
    • Exemplo: “Operacao_com_Certificacao”
  • Selecione a opção “Trust server with SSL (Use tSetKeystore rather than this option”
  • No campo TrustStore file inclua o caminho do arquivo .keystore
    • Exemplo: “C:/certificado.keystore”
  • No campo TrustStore password inclua a senha caso possua. Caso contrário, deixe o valor default “password”
  • Na última parte insira os parâmetros necessários para fazer a chamada ao serviço.

  • Feito isso,  criae o esquema que irá armazenar os dados provenientes do Web Service. Clique na opção Edit schema e adicione 1 coluna, dê o nome da saida , ao finalizar aparecerá uma janela perguntando se você deseja propagar as mudanças, clique em Yes.

Conclusão

Bom, espero que com esse artigo você seja capaz de acessar qualquer tipo de web service com o Talend, seja com certificação digital ou não.

Um grande abraço a todos e até a próxima.

Anúncios

Talend SOA – ESB

Autores: Washington Nascimento e Yasmim Vasconcelos

Introdução

Hoje iremos dar uma visão geral de um conjunto de ferramentas ofecidos pela Talend, com o foco em Arquitetura Orientada a Serviços (Service Oriented Arquitecture – SOA).

A Talend divide seus produtos de Integração de Aplicações da seguinte maneira:

  • Framework SOA
  1. Talend ASF
  • ESB
  1. Talend ESB
  2. Talend Integration Factory
  3. Talend Service Factory

Conceitos

SOA: Não se trata de tecnologia e sim de metodologia, é uma arquitetura. Por meio do conceito de SOA podemos encontrar maneiras de fazer sistemas conversarem entre si, independente da plataforma adotada no seu desenvolvimento (multiplataforma). Também é possível acessar apenas uma parte dos serviços/recursos disponíveis por ele, não havendo a necessidade de utilizá-lo por completo (reutilização).

Serviços: Pode ser uma funcionalidade, um processo, um método, um módulo de um sistema ou mesmo ele por completo, que foi disponibilizado e pode ser acessado por outros sistemas, ou seja, quaquer maneira que você expor um negócio do seu sistema de forma que ele esteja disponível para outros sistemas você estará utilizando um serviço. Exemplo: Transações bancárias, onde as operações efetuadas com o banco de dados podem ser feitas por um serviço disponibilizado por um sistema e as cobranças de boletos bancários por outro sistema totalmente diferente.

Web Service (WS): É uma forma de se utilizar SOA, mas não necessariamente se você tiver Web Services você tem um sistema com SOA, e nem se você utilizar SOA você terá que utilizar web services. Web Service é uma das soluções utilizadas na integração de sistemas, pois permite enviar e receber dados em um formato global, o XML. Desta maneira uma aplicação desenvolvida em Java pode se comunicar com outra desenvolvida em .NET perfeitamente pois será traduzida para XML.

Enterprise Service Bus (ESB):  Refere-se à arquitetura de construção de software tipicamente implementado em tecnologias encontradas na categoria de produtos de infra-estrutura de middleware. É normalmente baseado no reconhecimento de padrões, que fornecem uma base de serviços para arquiteturas mais complexas via um driver de evento e padrões baseados em mensagens (BUS). ESB não implementa uma arquitetura orientada a serviço (SOA), mas fornece as características para que possa ser implementado. ESB não necessariamente precisa ser implementado usando web services.

Visão Geral das Ferramentas da Talend (SOA – ESB)

Talend Service Factory: Permite a criação e implantação de Web services nos servidores de aplicação mais comuns do mercado como Apache Tomcat, JBoss, Websphere, dentre outros. A ferramenta é baseada no Apache CXF e Apache Karaf, dois projetos open source líderes em Web Services e OSGI.

Talend Integration Factory: É um framework Java que tem como objetivo simplificar a integração de aplicações, serviços e protocolos de transporte usando o conceito de Enterprise Integration Patterns (EIPs). Ele vem pré-configurado para rodar em qualquer contêiner java.

Talend ESB: Um dos produtos mais completos, contendo basicamente tudo o que os produtos possuem, porém, com mais algumas funcionalidades, tem como principal objetivo atuar como um barramento de serviços.

Talend ASF: A suíte completa entre os produtos de integração, tendo praticamente todas as funcionalidades contidas nas demais ferramentas, porém todo o desenvolvimento é realizado visualmente incluindo a criação e implantação de Web Services e acesso ao banco de dados e possui também a parte de Business Process Management BPM.

Comparativo entre as Ferramentas

Características

Talend Service Factory Community Edition

Talend Integration Factory Community Edition

Talend ESB Community Edition

Community Edition Talend ASF Enterprise Edition

Ferramentas de Desenvolvimento
Linha de Comando e Ferramentas de Script

Sim

Sim

Sim

Sim

Editor de Políticas e Serviços

Não

Não

Não

Sim

Ambiente de Teste

Não

Não

Não

Sim

Funcionalidade de Integração
Habilitação de Serviços

Sim

Sim

Sim

Sim

Mediação

Não

Sim

Sim

Sim

Mensageria

Sim

Sim

Sim

Sim

Serviços de Segurança e Identidade

Não

Não

Sim

Sim

Localizador de Serviço

Não

Não

Sim

Sim

Registro

Não

Não

Não

Sim

Integração de Dados

Não

Sim

Não

Sim

Business Process Management

Não

Não

Não

Sim

 
Monitoramento JMX

Sim

Sim

Sim

Sim

Monitoramento de Sistema

Não

Não

Não

Sim

Ferramenta de Administração SOA

Não

Não

Sim

Sim

Configuração de Serviços

Não

Não

Sim

Sim

Ambiente de Implantação
Flexibilidade do Contâiner de Implantação

Sim

Sim

Não

Não

Suporte .NET

Não

Não

Não

Sim

Licença e Distribuição
Código Aberto Disponível

Sim

Sim

Sim

Sim

Licença

Apache

Apache

Apache

Subscrição

Nos próximos posts mostraremos exemplos práticos do uso dessas ferramentas. Até lá 😉

Acessando Web Services no Talend

Introdução

A utilização de Web Services é comumente usada na integração e comunicação entre sistemas. Nesse artigo começaremos com uma breve introdução sobre Web Services, o que são, seu formato padrão e como podem ser utilizados, posteriormente, iremos aprender como realizar requisições a um Web Service utilizando o Talend com um exemplo prático usando um Web Service de captura de endereço através do CEP.

Para o desenvolvimento desse artigo iremos utilizar um Web Service pertencente ao pessoal do Byjg, que é um site que possui diversos serviços para diversas situações, dentre eles está o serviço de consulta de CEP, no qual podemos passar um CEP para ter como retorno o endereço, e vice-versa.

 

Web Services

Os Web Services foram criados para construir aplicações que funcionem como serviços na internet, ou seja, que estejam disponíveis para outras aplicações independente da plataforma utilizada no seu desenvolvimento, e isso é possível devido a padronização da linguagem utilizada na comunicação entre Web Services. Todo Web Service só envia e recebe dados no formato XML, um formato universal, onde uma aplicação pode ser desenvolvida em qualquer linguagem, que, ao enviar ou receber os dados eles são convertidos para o formato XML, possibilitando assim a comunicação. Todo Web Service ao ser disponibilizado deve informar sua descrição, para o usuário saber como acessar, qual seu formato, o que ele retorna, etc. Essa descrição é feita no formato XML, utilizando um padrão, o WSDL (Web Service Description Language).

 

Conhecendo o Web Service

Para ter acesso ao serviço de CEP precisaremos realizar o cadastro no site. Para acessar entre aqui logo na página inicial, no canto direito superior selecione a opção área do usuário.

Na tela que aparece no canto direito selecione a opção crie agora.

Proceda com o cadastro normalmente e depois efetue o login, na primeira tela aparecerá a mensagem para ativar o serviço, clique em CEP na barra superior, nessa tela terminaremos de preencher os dados e marcaremos a opção Ativar WebService de consulta de CEP e basta confirmar as modificações.

Depois de finalizado o cadastro aparecerá uma tela para teste do serviço, porém com interface gráfica, ou seja, o Web Service está disponível e essa interface utiliza o Web Service de CEP para realizar as requisições.

O Web Service de CEP possui duas operações principais ObterLogradouroAuth, na qual recebe 3 parâmetros, CEP, usuário e senha, e retorna o endereço, e a operação ObterCEPAuth, que recebe 5 parâmetros, logradouro, localidade, UF, usuário e senha, e retorna o CEP.

Acessando o Web Service no Talend

Agora vamos ao Talend. Primeiramente vamos criar um job, no canto esquerdo selecione com o botão direito a opção “Job Designs -> Create job” e vamos dar um nome ao nosso job, o chamaremos de “WS_CEP”. Na paleta de componentes vamos expandir a pasta Internet, selecionar e arrastar para o nosso job o componente tWebServiceInput, esse é o componente padrão para chamadas a Web Services, disponível na versão Talend Open Studio, os demais componentes referentes a Web Services são disponibilizados na versão Talend Integration Suite.

Prosseguindo, também na paleta de componentes, vamos expandir a pasta Logs & Errors e realizar o mesmo processo com o componente tLogRow. Clicaremos com o botão direito em cima do componente tWebServiceInput selecionar a opção Row -> Main e arrastar a seta para o tLogRow. Vamos aproveitar para mostrar o nome do nosso job, clique em cima da área do job, e nas opções do componente marque a opção Show subjob title, você também pode colocar o nome que irá aparecer.

Clicando duas vezes no tWebServiceInput apareceram as propriedades do componente, no campo WSDL retire o que vem por padrão e insira a url do serviço de CEP, disponível aqui.

No campo Method Name colocaremos o nome da operação a ser requisitada no Web Service, obterLogradouroAuth, e na última parte serão inseridos os parâmetros necessários para fazer a requisição, como disse anteriormente o Web Service precisa de 3 parâmetros, então clique 3 vezes na opção + que tem logo abaixo. A ordem inserida aqui será a mesma ordem enviada ao Web Service, então se o Web Service recebe os parâmetros CEP, login e senha, vamos colocar nessa ordem também no Talend. Feito Isso vamos criar o esquema que irá armazenar os dados provenientes do Web Service. Clique na opção Edit schema e adicione 1 coluna, vamos nomeá-la  de endereço, ao finalizar aparecerá uma janela perguntando se você deseja propagar as mudanças, clique em Yes.

Feito isso basta ir até a aba Run(Job) ou simplesmente pressionar F6 para executar o nosso job e ver o resultado.

Bom por enquanto é isso, o intuito desse artigo foi só dar uma breve introdução à chamada de Web Services no Talend, e isso abre um leque de opções bastante vasto, sendo que essa tarefa acaba sendo bastante simples de ser realizada utilizando o Talend, dependendo somente da necessidade e criatividade.

Um grande abraço a todos.