BizTalk Server - Transformar arquivos de texto (Flat Files) em XML (Parte II)

Flat Files – Exemplo prático

Para este projeto iremos utilizar o BizTalk Server 2010 e o Visual Studio 2010, e explicar passo a passo o que é necessário desenvolver. Resumidamente estes serão os passos que teremos de efetuar:

  • Criação do exemplo (instância) de texto que servirá de teste ao projeto;
  • Criação do Schema para reconhecer o ficheiro de texto;
  • Criação da Pipeline para recepção e processamento do ficheiro de texto; (parte III)
  • Publicar a solução no servidor BizTalk; (parte III)
  • Configurar a aplicação BizTalk; (parte III)
  • Executar a solução; (parte III)

A solução deste exemplo, assim como todo o código pertencente, encontra-se disponível no MSDN Code Gallery: http://code.msdn.microsoft.com/BizTalk-Server-Transformar-0abe5767

 

Começaremos então por iniciar o Visual Studio 2010 e criar um novo projecto BizTalk:

  • File –> New –> Project, em BizTalk Projects, selecione a opção “Empty BizTalk Server Project”;
  • Coloque o nome do projeto, a localização física no disco e o nome da solução.

clip_image002

 

Criação de um ficheiro de texto para teste e validação

Antes de começarmos o nosso desenvolvimento teremos de criar uma instância, ou amostra, do ficheiro de texto que irá servir de modelo para a criação do Flat File Schema. Desta forma iremos configurar os seguintes requisitos, ao nível do file system, que irão ser necessários para a solução:

  • Criar uma pasta “<solução>\TESTFILES” onde vamos criar/colocar os artefactos que pretendemos transformar. Neste artigo vamos utilizar um ficheiro de texto delimitado por símbolos e que será composto por várias linhas com o seguinte conteúdo:
Sandro;Pereira;1978-04-04;Crestuma;4415 Crestuma
Lígia;Tavares;1982-01-21;Seixo-Alvo;451 Seixo-Alvo
José;Silva;1970-09-19;Crestuma;4415 Crestuma
Rui;Barbosa;1975-09-19;Lever;4415 Lever


Cada linha é composta pela seguinte estrutura: Nome, Apelido, Data Nascimento, Morada e Código Postal

Nota: O ficheiro “PESSOAS.txt” que vamos utilizar para testes encontra-se disponível na diretoria “<solução>\TESTFILES”.




  • Vamos também criar duas pastas que iremos utilizar para o processo de conversão de dados.



    • Crie a pasta “<solução>\PORTS\IN” que irá servir como canal de entrada dos ficheiros Flat File para conversão ;


    • Crie a pasta “<solução>\PORTS\OUT” que irá servir como canal de saída dos ficheiros após terem sido convertidos.




Criação do Schema para reconhecer o ficheiro de texto



Para criarmos o Schema devemos aceder à solução criada no Visual Studio e efetuar os seguintes passos:




  • Pressione o botão direito em cima do projeto no Solution Explorer, selecione a opção “AddàNew Item...”.


  • Na janela “Add New Item”, selecionar o menu “Schema Files” nos templates, escolha a opção “Flat File Schema Wizard” e, em seguida, fornecer o nome que quer dar ao esquema, neste exemplo: “TXT_to_XML.xsd”



clip_image004




  • Ao selecionar esta opção, automaticamente seremos guiados pela ferramenta “BizTalk Flat File Schema Wizard” que nos irá ajudar a criar um Flat File Schema e definir a sua estrutura de dados (records, elementos, atributos,…) com base no ficheiro de texto especificado. Selecione a opção “Next” para continuar.



clip_image005




  • Na janela “Flat File Schema Information” iremos necessitar de:


    • Selecionar uma instância do ficheiro de texto que queremos transformar


    • Apesar de não ser necessário, é boa prática renomear o Record name “Root”. Neste caso vamos renomeá-lo para “Pessoas”.


    • E por último, atribuir um “Target namespace” ao esquema e definir o encoding do ficheiro de entrada





clip_image006




  • O wizard irá carregar o ficheiro de texto de exemplo para começa-lo a dividir e mapeá-lo na estrutura pretendida. É nesta etapa que necessitamos de definir como os registos ou as linhas são diferenciados. A estrutura do exemplo é:


    • Nome;Apelido; Data Nascimento;Morada;Codigo Postal{CR}{LF}


    • Uma vez que cada registo (record) que quero criar “Pessoa” se encontra definido e contido numa linha, na janela “Select Document Data” iremos selecionar toda a porção de dados no documento que irá definir o registo (record) o que nesta fase é toda a primeira linha.





clip_image007




  • Na janela “Select Record Format” iremos definir se estamos a lidar com um Flat File delimitado por símbolos ou se é posicional, no nosso caso iremos selecionar a opção “By delimiter symbol” que é delimitado por um retorno Carriage Return/Line Feed.



clip_image008




  • Na janela “Delimited Record” iremos providenciar o delimitador do record, neste caso como queremos definir a estrutura de Pessoa, ou seja cada linha é uma Pessoa, o nosso limitador é {CR}{LF} (Carriage Return/Line Feed)



clip_image009




  • Na janela “Child Elements” iremos definir que tipo de elemento pretendemos atribuir ao registo. Como estamos a definir a estrutura Pessoa e o ficheiro contém várias pessoas, teremos de selecionar o “Element Type" como “Repeating record”. Se não efetuarmos este passo, não teremos a capacidade de dividir o record em vários elementos/atributos individuais.



clip_image010




  • Nesta fase criamos com sucesso o record Pessoa, ou seja, acabamos de mapear que cada linha do ficheiro de texto corresponde a um elemento Pessoa. Na janela “Schema View” seleccione a opção “Next” para continuar a transformação da mensagem



clip_image012




  • Nesta fase o wizard irá reiniciar todo o processo descrito anteriormente, mas se repararem, já não seleciona toda a informação contida no ficheiro de texto, mas apenas o que foi selecionado para definir o record Pessoa. O que iremos fazer agora é dividir a informação do record “Pessoa” em diferentes elementos, para isso selecionamos apenas a informação pretendida deixando de fora o Carriage Return/Line Feed.



clip_image013




  • Mais uma vez a nossa estrutura é delimitada por símbolos (;), logo iremos selecionar a opção “By delimiter symbol



clip_image014




  • Como podemos analisar, todos os elementos encontram-se separados pelo caractere ponto e vírgula (;) que é o nosso delimitador, logo na janela “Delimited Record” na opção “Child delimiter” temos de alterar o valor para “;”.



clip_image015




  • Nesta janela, iremos definir os diferentes elementos/atributos da estrutura do record “Pessoa”. Esta operação é muito parecida com qualquer XSD, onde podemos definir os nomes e os diferentes tipos de dados. Ajuste os valores de acordo com a imagem:



clip_image016




  • Por fim o wizard vai mostra-lhe a estrutura que o seu ficheiro de texto irá ter no seu equivalente documento XML. Assim que selecionar a opção “Finish”, o esquema estará disponível para você utilizar na sua solução BizTalk.



clip_image018



Após finalizarmos a criação do Flat File Schema que irá conter as regras de transformação do ficheiro de texto, podemos facilmente testar a nossa transformação, sem ter de sair da nossa ferramenta de desenvolvimento (Visual Studio) e sem ter de publicar a nossa solução.



Se selecionarem o Flat File Schema que acabamos de criar e acedermos às suas propriedades, verificamos que por omissão temos todas as propriedades pré-configuradas para efetuarmos testes à nossa transformação: a instância de entrada do esquema encontra-se configurada com o ficheiro que serviu de base à criação do esquema; assim como os formatos de entrada e saída.



clip_image019



Para testarmos basta selecionar o esquema e com o botão direito do rato seleccionar a opção “Validate Instance”:



clip_image020



Esta opção vai usar o ficheiro configurado e validar todas as regras de transformação definidas, apresentando posteriormente o resultado final ou os erros ocorridos:



clip_image022

Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog