Trabalhando com Functoid “Cumulative Concatenate”

Passando pelo fórum de Biztalk do MSDN, me deparei com esse post, onde alguém precisava concatenar vários registros e mapeá-los para apenas um.

Meu primeiro pensamento foi: Não dá pra fazer isso com o mapeamento e functoid.

É uma coisa boa estarmos sempre aprendendo, e descobri que é possível resolver esse problema com mapeamento sim, usando o functoid “Cumulative Concatenate”.

Então a mensagem de entrada seria assim:
<ns0:Informacao xmlns:ns0="http://SampleCummulativeFunctoid.schDados"> <Dados> <Nome>A</Nome> <NumeroDoc>123</NumeroDoc> </Dados> <Dados> <Nome>B</Nome> <NumeroDoc>456</NumeroDoc> </Dados> <Dados> <Nome>C</Nome> <NumeroDoc>789</NumeroDoc> </Dados> </ns0:Informacao>


A mensagem de saida depois do mapeamento:

<ns0:Informacao xmlns:ns0="http://SampleCummulativeFunctoid.schDados"> <Dados> <Nome>A|B|C</Nome> <NumeroDoc>123|456|789</NumeroDoc> </Dados> </ns0:Informacao>


Criando o Projeto
  1. Crie um novo projeto de Biztalk em branco.
  2. Adicione um schema conforme o exemplo acima.
  3. Adicione um novo mapeamento, e em Source Schema e Destination Schema escolha o schema que acabamos de criar no passo 2.
  4. Adicione o functoid “String Concatenate”. O primeiro parâmetro deste functoid será o node “Nome” e o segundo parâmetro o caractere “|”.

    image

    image
  5. Adicione o functoid “Cumulative Concatenate”, que fica na aba “Cumulative Functoid”.

    image
  6. Ligue o resultado do “String Concatenate” ao functoid “Cumulative Concatenate”. E ligue este functoid ao Node “Nome”.

    image
  7. Repita os passos 4, 5 e 6 para o Campo NumeroDoc.
    image
E esta feito. Agora é só testar o Mapa, para isso é necessário:

Criar uma mensagem de entrada.
  1. Salvar em um arquivo XML.
  2. Setar a propriedade “Test Map Input Instance” apontando para o caminho físico da mensagem de entrada.
  3. Clicar com botão direito em cima do mapeamento e escolher “Test Map”.
O resultado deverá ser igual ao xml no exemplo acima.

Nunca tive essa necessidade, mas é sempre bom saber o que o Biztalk é capaz de fazer, certo?

O projeto com o exemplo pode ser baixado nesse link.

Até.

Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog