Dividindo Pedidos em Lote na Receive Location–Flat File
Anteriromente neste post, demos o exemplo de como receber varios pedidos num arquivo Flat File hierarquico, e fazer com que os produtos tivessem relação com seus pedidos.
Resolvido esse primeiro passo, agora surgiu outro problema: o meu destino só aceita um pedido por vez. E agora? Fazer um loop dentro da orchestration? Ou usar uma solução elegante e receber um pedido por vez?
Usando a segunda opção, vamos dividir esse arquivo com varios pedidos em uma unica mensagem, e criar uma instancia da orchestration para cada pedido recebido. Isso evita também que o servidor sofra com desempenho.
Aqui no blog já falamos bastante em dividir mensagens, como podemos ver aqui, com a técnica de envelopamento.
Decidi postar este artigo, pois vou mostar mais uma forma de ter o mesmo resultado sem usar o schema do Tipo Envelope, no caso da mensagem ser um Flat File.
Ao recebermos mensagens em Flat File, para que o biztalk possa transformar essas mensagens em xml, somos obrigados a usar o receive pipeline e adicionar o flat file disassemble e selecionar na propriedade Document, qual é o schema que vamos receber naquele pipeline.
E para que esse flat file disassemble possa dividir o arquivos em varias mensagens, basta alterar a propriedade Max Occurs do schema em questao de unbounded para 1.
Então vamos fazer passo a passo. Abaixo está o schema que montamos no post anterior.
Alterei a propriedade Max Occurs do Node Pedidos de unbounded para 1.
E pronto, funciona!
Vamos supor que recebemos o seguinte arquivo:
PED122 CLIENTE1
PROD12 PROD1 CLIENTE1
PROD13 PROD2 CLIENTE1
PROD14 PROD3 CLIENTE1
PROD15 PROD4 CLIENTE1
PROD16 PROD5 CLIENTE1
PED123 CLIENTE2
PROD12 PROD1 CLIENTE2
PROD13 PROD2 CLIENTE2
PROD14 PROD3 CLIENTE2
PED124 CLIENTE3
PROD12 PROD1 CLIENTE3
PED125 CLIENTE4
PROD12 PROD1 CLIENTE4
PROD13 PROD2 CLIENTE4
PED126 CLIENTE5
PROD12 PROD1 CLIENTE5
PROD13 PROD2 CLIENTE5
PROD14 PROD3 CLIENTE5
PROD15 PROD4 CLIENTE5
PROD16 PROD5 CLIENTE5
PED127 CLIENTE6
PROD12 PROD1 CLIENTE6
PROD13 PROD2 CLIENTE6
PROD14 PROD3 CLIENTE6
O resultado seria 6 instancias de orchestration, cada uma processando um pedido.
Como eu apenas fiz o exemplo com mensageria, sem orchestration, eu tenho 6 mensagens na minha pasta de OUT.
Até a próxima
Seja o primeiro a comentar ;)
Postar um comentário