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.
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”
- 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.
- 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
- 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.
- 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.
- 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)
- 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.
- 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
- 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.
- Mais uma vez a nossa estrutura é delimitada por símbolos (;), logo iremos selecionar a opção “By delimiter symbol”
- 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 “;”.
- 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:
- 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.
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.
Para testarmos basta selecionar o esquema e com o botão direito do rato seleccionar a opção “Validate Instance”:
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:
Seja o primeiro a comentar ;)
Postar um comentário