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

Normalmente associamos as transformações de documentos aos mapas de BizTalk, mas a realidade é que existem dois tipos de transformações: as de estrutura (semântica) e as de representação (sintaxe). Estas últimas tipicamente ocorrem à entrada ou saída do BizTalk Server.

Um dos padrões mais antigos e comuns para a troca de mensagens é a utilização de arquivos texto (Flat Files) como: CSV (Comma Separated Values) ou TXT. Porém com a adopção do XML como formato de eleição na troca de mensagens, muitas vezes é necessário transformar arquivos texto em XML e vice-versa.

clip_image001
clip_image003

Embora ferramentas como Excel nos ajudem a interpretar um ficheiro destes, o processo é sempre interativo e requer algumas dicas do utilizador para que o software consiga determinar onde separar os campos/colunas, bem como o tipo de dados de cada campo. Ora para um sistema de integração (Enterprise Application Integration) como o BizTalk Server, é preciso reduzir todas as ambiguidades, por forma a estas operações poderem ser efectuadas milhares de vezes com confiança e sem que seja necessário recorrer a um operador manual.

 

Mapa ou Schema Annotation?

Conforme referido na introdução, podemos caracterizar dois tipos de transformações existentes em BizTalk:

  • Transformações de Semântica: este tipo de transformações ocorre por norma nos mapas de BizTalk. Aqui o documento mantem a mesma sintaxe com que é representado (XML), mas muda a sua estrutura/forma/semântica. Tipicamente são operações One-way, uma vez que quando extraímos e agregamos partes de informação de um documento e compomos um outro documento diferente, podendo perder detalhes importantes para se conseguir fazer a transformação inversa de volta ao documento original.

clip_image005

  • Transformações de Sintaxe: é a transformação de um documento noutra representação, por exemplo de CSV para XML. Aqui o documento mantem os mesmos dados (semântica), mas muda a sintaxe com que é representado. Ou seja, traduzimos o documento mas não o modificamos em termos de estrutura. Por norma este tipo de transformação é bidireccional. Podemos aplicar a mesma lógica de transformação e voltar a obter um documento no seu formato original. Exemplos comuns destas transformações são também as conversões entre HL7 e XML, ou EDI e XML

clip_image006

 

Como é que os arquivos de texto (Flat Files) são processados pelo Biztalk?

Internamente, o tipo de mensagem preferido do BizTalk é o XML. Se as mensagens estiverem no formato XML o BizTalk “oferece” inúmeros automatismos muito úteis nestes ambientes, como por exemplo: o encaminhamento da mensagem com base num determinado campo (propriedade promovida); tracking e análise multidimensional de valores e dimensões no BAM (Business Activity Monitoring); ou a tomada decisões lógicas dentro das orquestrações (processos de negócio) usando elementos da mensagem.

Felizmente, o BizTalk suporta a conversão de arquivos de texto para XML de uma forma bastante simples e intuitiva usando para isso “Flat File Schemas” que são simples esquemas (schemas) XSD com anotações específicas. À primeira vista, isso pode parecer estranho, porque os esquemas XSD’s são para descrever XML, no entanto o BizTalk usa-os como metadados para descrever não só os documentos XML mas também a representação em texto (Flat file). O truque é que todas as informações necessárias, como os símbolos delimitadores ou o tamanho do elemento num arquivo posicional, ou seja, as definição das regras de transformação (“parsing”), são embebidas em forma de anotações no schema XSD, simplificando logo toda a reutilização destes esquemas nos diferentes pontos do processo. Em qualquer ponto o documento poderá ser novamente traduzido para Flat File pois a definição é declarativa e simétrica.

 

Onde podem ocorrer as transformações de sintaxe?

Este tipo de transformações podem ocorrer nas pipelines de recepção e/ou de envio, geralmente os arquivos de texto (Flat Files) são processados ​​em tempo de execução da seguinte forma:

  • Os Flat Files são recebidos por um adaptador (Pasta no File System por exemplo)
  • Uma pipeline aí configurada faz a transformação do Flat File no seu equivalente em XML;
  • Um ou mais interessados no documento, como por exemplo uma orquestração, irá subscrever este documento XML e esta mensagem irá percorrer o processo de negócio. Nota, num cenário de pure messaging poderemos nem ter orquestrações;
  • Se, e quando necessário, o BizTalk enviar as mensagens XML novamente como um documento de texto, é na porta de saída que o respectivo pipeline transformará desta vez no sentido inverso

Conforme a imagem a baixo demonstra:

clip_image001[5]

As pipelines de recepção são compostas por 4 etapas, sendo que a transformação de sintaxe podem ocorrer em duas delas:

  • Decode Stage: Esta etapa é usada para descodificar (decode) ou decifrar (decrypt) a mensagem. Descodificação é o processo de transformar informação de um formato para outro. As transformações de sintaxe podem ocorrer nesta etapa através de um componente “custom.
  • Disassemble Stage: Esta etapa é usada para analisar (parse) e desmontar (disassemble) a mensagem. As transformações de sintaxe devem ocorrer nesta etapa. No exemplo que será demonstrado neste artigo, iremos utilizar o componente “Flat file disassembler” para transformar um documento de texto em XML.

clip_image002

  • Validate Stage: Esta etapa é usada para validar o formato da mensagem – efectua a validação de um documento XML com um respectivo XML schema (XSD).
  • Resolve Party Stage: Esta etapa é reservada para situações em que é preciso descobrir qual o originador/parceiro que nos enviou a mensagem. Por exemplo nos cenários de EDI, aqui estão os componentes que tratam das relações/acordos estabelecidos entre empresas (B2B).

No que diz respeito às pipelines de envio, elas são compostas por apenas 3 etapas, sendo que a transformação de sintaxe pode ocorrer em duas delas:

  • Pre-assemble Stage: Esta etapa é usada para realizar acções sobre a mensagem antes de a mensagem ser serializada.

clip_image003

  • Assemble Stage: É a operação inversa à etapa de Disassemble Stage na pipeline de recepção. É aqui que as transformações de sintaxe devem ocorrer.
  • Encode Stage: É a operação inversa à etapa de Decode Stage na pipeline de recepção. As transformações de sintaxe podem ocorrer nesta etapa através de um componente custom.

Ferramentas necessárias

Conforme mencionado anteriormente, para resolvermos este problema teremos de criar obrigatoriamente dois componentes:

  • Flat File Schema: que irá conter as definições das regras de transformação. Este tipo de artefacto pode ser criado manualmente ou a partir da ferramenta “BizTalk Flat File Schema Wizard”.
  • Pipeline Recepção/Envio: que será responsável por transformar o Flat File e representá-lo no seu equivalente em XML ou vice-versa. Este artefacto pode ser criado utilizando o Pipeline Designer.

Flat File Schema Wizard

BizTalk Flat File Schema Wizard” é uma ferramenta integrada no Visual Studio que permite ao programador facilmente e de forma visual efectuar transformação de arquivos de texto para documentos XML. Esta ferramenta suporta dois tipos de arquivos de texto:

  • Flat Files Posicionais:
    CABEÇALHOXXXXXXXXXXXXXXXXXXXX
    CORPOXXXXXXXXXXXXXXXXXXXXXXXX
    CORPOXXXXXXXXXXXXXXXXXXXXXXXX
    RODAPÉXXXXXXXXXXXXXXXXXXXXXXX

clip_image005[5]

  • Ou delimitado por símbolos:
    1999990;1;P0110;1;1;20110307;
    1999990;2;P0529;2;2;20110307;
    1999990;3;P0530;3;3;20110307;

clip_image007clip_image009

BizTalk Pipeline Designer

O editor de pipelines, BizTalk Pipeline Designer, possibilita criar e visualizar pipelines, mover os seus componente (Pipeline components) entre as diferentes etapas e configurar pipelines, as suas etapas e os seus componentes.

clip_image010

Este editor encontra-se integrado no Visual Studio e é composto essencialmente por 3 módulos:

  • Janela de Propriedades (properties window): nesta janela podemos ver e modificar as propriedades dos diferentes objectos da pipeline.
  • Janela de Ferramentas (toolbox window): Providencia acesso a todas as componentes (Pipeline components) que podemos utilizar nas pipelines.
  • Janela de desenho (design surface): que permite que o programador desenhe uma representação gráfica de uma pipeline, inserindo os componentes da janela de ferramentas nas diferentes etapas da pipeline.

Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog