none
BizTalk 2009 - Looping functoid conditional

    Pergunta

  • Pessoal,

    estou iniciando no mundo do Biztalk e já tenho uma questão bem complexa para resolver.

    Eu estou usando o BizTalk 2009.

    Estou fazendo uma manutenção em um mapeamento de um esquema para outro e existe a seguinte situação:

    Eu preciso agrupar duas estruturas dentro do arquivo de origem em uma única estrutura no destino.

    Estou usando o Looping functoid para fazer isso. Até aí tudo certo. 

    Acontece que eu preciso filtrar o conteúdo das origens baseados em um determinado flag que está no arquivo de origem.

    Digamos que eu tenha na origem as seguintes tags.

    <xmldeorigem>

         <grupo1>

            <tagcomacondicao1></tagcomacondicao1>

            <tag1>...</tag1>

         </grupo1>     

         <grupo2>

              <tagcomacondicao2></tagcomacondicao2>

              <tag2>...</tag2>

         </grupo2>

    </xmldeorigem>

    Então eu quero agrupar as tags <tag1> e <tag2> em um único destino

    <xmldedestino>

        <destino>...</destino>

    </xmldedestino>

    Até aqui tá tudo certo. BizTalk fez sem problemas.

    Agora eu preciso que as tags de origem sejam filtradas baseadas em um flag que está dentro de cada um dos grupos de dados.

    Acontece que se eu colocar um EQUALS FUNCTOID para CADA um dos FLAGs e ligar com a tag <destino> o resultado não é gerado, pois ele interpreta como sendo um AND.

    Preciso fazer uma condição para um caso e depois uma condição para outro caso e MESMO assim gerar uma única estrutura no destino.

    Espero que tenha dados todas as informações possíveis. 

    Obrigado.

    quarta-feira, 25 de maio de 2016 15:18

Respostas

  • Ola Jose, Boa Tarde

    O que eu mais gosto do BizTalk é que para um problema existem N soluções.

    A primeira solução pode ser feita com o table looping functoid, voce pode ver como configurar esse cara aqui:

    http://www.biztalkbrasil.com.br/2009/11/trabalhando-com-functoid-table-looping.html

    Mas, se o seu schema for muito complexo, com varios niveis de nodes, e vc precisa extrair do node mais abaixo, eu sugiro que vc crie o seu resultado com um Xslt puro.

    Aqui tem um exemplo de como utilizar esse xslt

    http://www.biztalkbrasil.com.br/2012/05/como-implementar-multi-level-muenchian.html

    Não se assuste com os codigos, apesar de parecer complexo, xslt é uma linguagem interpretada própria para transformações, e é bem simples na verdade.

    Se ainda sim tiver dificuldades, poste o schema de entrada e saida que eu tento criar um mapeamento pra vc.


    Espero ter ajudado
    Ruth Resende
    MVP, MCTS - Biztalk Server
    www.biztalkbrasil.com.br
    Twitter: @ruthresende

    sexta-feira, 27 de maio de 2016 20:25
    Moderador