Técnica de Transformação de Dados com o Magic xpi

Em um cenário de integração uma das coisas mais comuns é transformar dados entre origem e destino de tipos distintos, pois cada aplicação contém sua estrutura de dados.

No parágrafo inicial do post com certeza já veio a sua mente o Data Mapper do Magic xpi, pois bem ele é um dos mais usados para este cenário, mas o intuito deste post é apresentar um cenário em que apenas um passo de Data Mapper não é capaz de solucionar.

Imagine um cenário onde a origem é um XML com duas estruturas complexas e o destino um XML com apenas uma estrutura complexa, veja abaixo o cenário que apenas com um passo de Data Mapper não é possível solucionar.

image001

Imagine também sendo o destino um TXT

image002

Nas imagens acima não foi possível conectar e mesmo se fosse possível, ainda haveria o problema de junção lógica (ID = ID) conforme a linha e o total do pedido conforme a elipse marcada, mas como resolver?

Sabemos que no Magic xpi podemos criar lógicas de loop e essa poderia ser uma solução ou usar uma técnica proposta por esse post que é a transformação de XML utilizando o padrão XSLT e o componente XSLT do Magic xpi.

Com o padrão XSLT podemos transformar um XML em outro arquivo XML, HTML, TXT, etc., podemos realizar a formatação, soma, loop, IF, etc. para formar o arquivo final, toda regra de transformação e leitura está no arquivo template de transformação, para maiores informações consulte os sites W3C e W3SCHOOLS.

Basta termos um arquivo XSL para cada transformação.

XSL de transformação para XML:

image003

XSL de transformação para CSV:

image004

No Magic xpi usar o componente XSLT

image005

Configurar o método para transformar utilizando arquivo ou utilizando variáveis blob.

image006

Com isso o arquivo XML:

image007

Será transformado em um novo XML:

image008

Ou em um arquivo CSV:

image009

Note que todos os dados foram respeitados mediante a junção lógica (ID=ID) e também o total do pedido foi gerado.

Clique aqui e baixe o projeto em Magic xpi 4.0 que implementa os passos explicados acima.

DICA: Para os usuários de Magic xpa veja essa possibilidade utilizando o namespace System.Xml.Xsl.XslTransform do .NET.

Jeronimo Alberto da Costa - Consultor Técnico Magic
Jeronimo Alberto da Costa Consultor Técnico Magic

 

2 comentários

  1. Olá,

    Como posso gerar arquivo .CSV quando a origem que tenho é uma query da base consultada em um Data Maper?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *