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á 😉

Segundo job: PostgreSQL para Planilha Excel

Objetivos

Neste artigo você aprenderá a:

  1. Definir Metadados e Conexões com bancos de dados PostgreSQL;
  2. Carregar os dados do banco de dados mapeado em uma planilha Excel (XLS).

Introdução

Observações: Caso se tenha dúvidas em relação à criação de um repositório local, de um projeto e/ou de um job, por favor, veja os três primeiros passos do artigo Primeiro job: Arquivo delimitado para MySQL.

Requisito: Antes de começar, você irá precisar restaurar a base de dados  empresa, que será a origem de nossos dados.

IMPORTANTE: O arquivo em anexo encontra-se em formato .doc. Peço que você renomeie a extensão dele para .backup e para restaurá-lo siga os passos abaixo.

Nota: A versão do PostgreSQL utilizada no exemplo é a 8.4 (http://www.postgresql.org/download/)

Via pgAdmin III

  1. Clicar com o botão direito em Banco de Dados;
  2. Selecionar a opção ‘Novo Banco de Dados’;
  3. Definir os dados desse novo banco (nome, dono, codificação, etc.);
  4. Clicar com o botão direito no banco criado;
  5. Selecionar a opção Restaurar;
  6. Clicar no botão  ” … “;
  7. Informar o caminho onde se encontra o arquivo .backup, clicar em  Abrir e logo após em OK.

Via Comando

  1. Digitar o comando: pg_restore -d [NomeBase] /[Caminho do arquivo.bkp]

Nota: Os colchetes são apenas para ilustração.

Definindo Metadados

Nessa seção iremos descrever o mapeamento da origem do nosso Job (PostgreSQL, Base de Dados Empresa) e o mapeamento do destino (Planilha Excel).

PostgreSQL

Na seção Metadata (repositório da ferramenta), clique com o botão direito em Db Connections e selecione a opção Create Connection. No assistente que aparecer defina o nome da conexão e aperte na opção “Next“.

Nesta etapa você definirá o tipo do banco de dados e os detalhes da conexão. Em Db Type selecione PostgreSQL para que as outras opções sejam disponibilizadas e então defina os metadados de sua conexão conforme a imagem apresentada. Qualquer dúvida siga os passo do detalhamento abaixo.

Detalhamento dos parâmetros:

  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 em caso de conexão local);
  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. Seguindo nosso exemplo o nome será Empresa;
  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 deve-se usar o schema public.

Após informar esses parâmetros clique em Check para verificar se a conexão com o banco de dados foi estabelecida. Caso a mensagem “Nome da Conexão connection successful” apareça, clique em OK e logo após Finish.


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

Diante disso, você recuperará as tabelas da base de dados Empresa. Em Db Connections clique com o botão direito na conexão que você criou e selecione a opção Retrieve Schema. Com a  janela Schema aberta, clique em Next. Aparecerá um lista de todas as tabelas que fazem parte da base de dados Empresa. Selecione o botão Select All, logo após  Next e Finish.

Nota: Para verificar se as tabelas foram recuperadas, expanda a seção Table schemas (diretório abaixo da conexão criada no exemplo). Devem aparecer duas tabelas  ( tb_pessoa e td_cargo ).

Planilha Excel

Caso o Job criado para o exemplo não esteja aberto, por favor, abra. Logo após, vá até a Paleta da ferramenta, selecione as opções File -> Output , o componente tFileOutputExcel e o arraste até a área do Design Workspace. Para configurar a sua planilha de destino siga os passos abaixo.

  1. Clique uma vez em cima do icone do seu tFileOutputExcel;
  2. Logo abaixo da área do Design Workspace clique na aba Component e certifique-se que você se encontra na opção Basic settings do componente.
  3. No parâmetro File Name, clique na opção “…” para definir o diretório que você deseja salvar o arquivo e informar o nome dele.
  4. Marque a opção include header, para que na primeira linha de nossa planiha apareçam os nomes dos campos que estamos carregando.
  5. Clique no ícone salvar ou aperte Ctrl S para salvarmos as alterações.


Pronto!!!  Seu arquivo de destino já está configurado.

Nota: O Talend já coloca por default o caminho do workpace como diretório de saída dos arquivos (C:/Talend/TOS-Win32-r53616-V4.1.2/workspace). Nada impede que você altere conforme desejar.

Implementando o Job

Nessa etapa iremos implementar o processo de carga. Para isso o Job criado como exemplo deve estar aberto. Por favor, siga os passos listados abaixo.

  1. Clique, segure e arraste as duas tabelas criadas em Db Connections para a área do Design Workspace. Você pode selecionar vários itens utilizando a tecla Ctrl e arrastar de uma só vez. 
  2. Para cada item arrastado, uma janela irá surgir lhe perguntando que tipo de componente você deseja criar a partir desse item. Selecione para todos a opção tPostgresqlInput.
  3. Para cada tabela do Design Workspace, clique com o botão direito, selecione as opções Row -> Main e arraste a seta até o componente tMap. A ordem das tabelas deve ser seguida, primeiro tb_pessoa e depois td_cargo.
  4. Clique duas vezes no componente tMap e a janela de mapeamento irá aparecer. No lado esquerdo dessa janela ficam as tabelas da origem, o meio representa a transformação que os dados poderão sofrer e no lado direito o destino onde os dados serão armazenados (ETL).  Todas as configurações realizadas no componente tMap serão detalhadas abaixo.
  • Para recuperar as informações obtidas através do relacionamento entre as duas tabelas clique na opção “…” da tabela row2 da coluna idt_cargo e digite “row1.cod_cargo”.


  • Para criar  saída dos dados clique no ícone ” + ” e informar o nome da expressão.


  • Clique nas colunas das tabelas de origem e arraste para a saída criada. Arrate apenas os seguintes campos: mat_pessoa, nme_pessoa, nme_cargo, dsc_cargo e tel_ramal.
  • Após realizado o mapeamento clique na opção Apply e OK.


Após seguir os passos orientados anteriormente clique com o botão direito, selecione as opções Row -> [Nome da expressão de destino utilizada] e arraste a seta até o componente tFileOutputExcel e salve o projeto mais uma vez.

Certifique-se que seu Job esteja similar a ilustração abaixo.

Executando o job

  1. Clique na aba Run e depois no botão Run. Você também pode utilizar a tecla F6.
  2. Vá atéo diretório de destino que você escolheu e abra o arquivo Excel para visualizar os dados.

Conclusão

Neste artigo foi demonstrado como você realiza um processo de ETL. Extraindo os dados de uma base de dados no SGBD PostgreSQL, mostrando o cruzamento dos dados de duas tabelas e gerando um arquivo excel como saida. Dessa forma, esperamos ter mostrado as facilidades da ferramenta Talend. Até a próxima!!!