Em um projeto de integração é muito comum precisarmos ler um source (database, arquivo texto, XML e etc.) com vários registros e tratá-los individualmente. Para fazer isso usamos um DataMapper e configuramos o seu destino como um Call Flow:
Configuração de um processo de leitura de um source (XML) percorrendo seus registros individualmente
Você pode relembrar sobre esta técnica de processamento de DataSets, neste outro post.
No destino (Call Flow) apontamos o fluxo que deve ser chamado para cada registro encontrado no Source.
Na tela de mapeamento passamos os valores do Source como parâmetros para variáveis deste fluxo que esta sendo chamado:
Temos que criar todas as variáveis correspondentes aos valores do Source.
Imagine que nosso Source tenha muitos campos para serem mapeados. Quantas variáveis teríamos que criar e quantos nós teríamos de mapear?
Uma maneira mais fácil
Para tornar este trabalho mais simples e ágil vamos usar a propriedade XML Positon Forwarding. Esta propriedade permite que possamos ler a mesma estrutura do XML iterado dentro fluxo chamado com a garantia de estar lendo apenas um único registro por execução.
Desta forma utilizaremos os valores do Source (XML) sem precisar enviá-los como parâmetro.
No fluxo chamado pelo Call Flow, arraste um DataMapper, configure seu Source para XML e na tela de propriedades clique no botão XML Positon Forwarding:
*Nota – A propriedade XML Positon Forwarding é disponível apenas para Sources do tipo XML.
O XPI vai abrir uma tela onde você devemos procurar o DataMapper que está fazendo o Call Flow para este fluxo:
Quando selecionarmos a linha que indica o DataMapper “chamador” então o botão “Select” ficará habilitado.
Após esta configuração a tela de propriedade do XML é preenchida automaticamente com os dados do XML “de origem”:
Lembre-se que precisamos apenas garantir a iteração do XML no DataMapper “chamador”. Volte neste DataMapper e mapeie apenas a linha de iteração (a linha verde que mapeia os nós pais):
Mapeamento dos nós pais que garantem a iteração do Source
Pronto, agora você pode voltar ao DataMapper onde configurou a propriedade XML Positon Forwarding, criar o seu Destination e mapear os valores do XML sem precisar usar variáveis: