Recuperando Mensagens do Lote Receive FlatFile - Recoverable Interchange Processing
No post anterior, falamos sobre dividir os pedidos em um arquivo txt que vinha em lote, para que fossem processados individualmente.
Se um desses pedidos estiverem mal formatados, faltando campo, ou faltando tag obrigatoria daquele pedido, como por exemplo:
Notem que o pedido PED123 não tem a tag de produtos e por isso, o Biztalk ao consumir esse arquivo vai apresentar o seguinte erro:
There was a failure executing the receive pipeline: "SampleFlatFile.Pipeline.rcvSampleFF, SampleFlatFile, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cae7a2e7eb041c7b" Source: "Flat file disassembler" Receive Port: "RP_SampleFF" URI: "C:\PROJETOS\IN\*.txt" Reason: Unexpected data found while looking for:
'PROD'
The current definition being parsed is Pedidos. The stream offset where the error occured is 156. The line number where the error occured is 8. The column where the error occured is 0.
Se o Lote contiver poucos pedidos, achar o erro é facil.. Porém se vierem mil pedidos de uma só vez, fica inviável procurar o problema. Além do mais, os outros pedidos que estão certos e poderiam ser processados, vão ficar retidos também.
Pra que os outros pedidos que estão “bem formados”, possam ser processados, podemos alterar a propriedade RecoverableInterchangeProcessing para True.
Há duas formas para alterar essa propriedade, uma delas é na Receive Port:
Clicar com o botão direito na Receive Location e no Receive Pipeline clicar no botão de propriedades ao lado direito do combo.
A outra forma é alterar a propriedade no flat file disassembler em tempo de desenvolvimento:
Assim ao fazer o deploy do projeto, o pipeline já vai setado corretamente.
Depois dessa alteração, ao receber o mesmo arquivo, os outros pedidos vão ser processados corretamente com exceção do PED123.
Até a próxima. =D
Seja o primeiro a comentar ;)
Postar um comentário