Acrescentar nova linha de esquema de arquivo simples no BizTalk 2006 R2
-
03-07-2019 - |
Pergunta
Eu tenho um esquema de arquivo simples que tem um cabeçalho e detalhe registros. Parece algo como isto:
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
Eu preciso acrescentar duas linhas em branco no final da mensagem. Agora, se eu tiver vários registros eu recebo o seguinte resultado:
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
O que eu quero ver acontecer é algo como isto:
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
Eu poderia construir um componente de pipeline personalizado para fazer isso, mas eu estou querendo saber se existe uma maneira mais simples de conseguir o que eu preciso?
Solução
Você deve ser capaz de realizar o que deseja usando as propriedades delimitador do esquema de arquivo plano.
Com base no seu arquivo de exemplo que eu criei um esquema com a seguinte estrutura de registro:
<Schema> <Root> <HDRGroup> <HDR> <LIN>
Se você clicar no nó raiz do seu esquema que você deve ver uma lista de propriedades para este nó raiz. uma seção de propriedades tem o cabeçalho 'Flat File'. Nesta seção arquivo simples as três primeiras propriedades que você pode definir são Criança delimitador, Criança Tipo delimitador e Child Ordem.
Este é onde você configura o esquema para criar as linhas em branco (neste caso CR LF mas você pode definir as coisas diferentes que você precisa) para o exemplo que eu defina o seguinte:
Child Delimiter: 0x0D 0x0A 0x0D 0x0A Child Delimiter Type: Hexadecimal Child Order: Infix
0x0D 0x0A é uma linha de alimentação de retorno do carro, de modo que o acima simplesmente cria duas linhas em branco, infixada entre cada filho do nó de raiz.
O
Child Delimiter: 0x0D 0x0A Child Delimiter Type: Hexadecimal Child Order: Postfix
O
Esse esquema funciona para algo que parece-me que o que você pediu - este tipo de esquema flatfile e como ele analisa um arquivo é altamente dependente dos pequenos detalhes, no entanto, tais como o tipo de quebras de linha existem e se houver quebras de linha no final do arquivo.
Os Princples de usar os delimitadores vai ficar, você provavelmente vai achar que você precisa para mexer com as configurações.
Outras dicas
Para qualquer um que se importa, eu finalmente cedeu e escreveu um componente de tubagem personalizado para fazer isso.