Talend: Web Service para PostgreSQL

Compartilhe este post

Neste artigo demonstramos como acessar um Web Service através do Talend e então escrever os dados extraídos em um banco de dados PostgreSQL. Vamos abordar também como configurar o certificado digital para acessar serviços que trabalham sobre o protocolo seguro HTTPS (SSL).

Objetivos

Neste artigo você irá aprender a:

  1. Acessar 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 com o Talend. 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 WSDL retire o conteúdo padrão e inclua o valor abaixo.
    • Valor: “http://www.siorg.redegoverno.gov.br/gestao/webservice/WSSiorg.asmx?WSDL”
  • 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 Service com Certificação Digital no Talend

Para acessar um web service com SSL no Talend, existe um procedimento que deve ser realizado na máquina virtual java. Nessa seção descrevemos este 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.
    • Exemplo: “https://<caminho do web service>/WS_Certificado.asmx?WSDL”
  • 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. Se tiver qualquer dúvida, entre em contato conosco.

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

Assine a nossa newsletter para ter acesso às últimas novidades em nosso blog.

Assine nossa newsletter

Fique por dentro das novidades mais recentes sobre o Talend e aprenda com nossos experts

Leia outros posts do nosso blog

Talend

Talend: Definição de variáveis via globalMap

Nós já demonstramos como utilizar variáveis de contexto aqui, e como obter melhores resultados utilizando grupos de contexto e contextos de execução aqui. Hoje irei demonstrar o

Quer acelerar a tomada de decisão com dados de qualidade?

Fale conosco agora mesmo!

Fale com nossos experts

O café é por nossa conta!