Добавление новой строки в схему плоского файла в BizTalk 2006 R2 - PullRequest
2 голосов
/ 21 октября 2008

У меня есть схема плоского файла с заголовком и подробными записями. Это выглядит примерно так:

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***
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***


HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

Я мог бы создать собственный конвейерный компонент, но мне интересно, есть ли более простой способ получить то, что мне нужно?

Ответы [ 2 ]

3 голосов
/ 22 октября 2008

Вы должны быть в состоянии выполнить то, что вы хотите, используя свойства Delimiter схемы плоского файла.

На основе вашего файла примера я создал схему со следующей структурой записи:

<Schema>    
  <Root>    
    <HDRGroup>    
      <HDR>    
      <LIN>    

Если вы щелкнете по корневому узлу вашей схемы, вы увидите список свойств этого корневого узла. Один раздел свойств имеет заголовок «Плоский файл». В этом разделе плоского файла первые три свойства, которые вы можете установить, это разделитель дочерних элементов, тип разделителя дочерних элементов и порядок дочерних элементов.

Здесь вы конфигурируете схему для создания пустых строк (в данном случае CR LF, но вы можете устанавливать разные вещи по мере необходимости). Для вашего примера я установил следующее:

Child Delimiter: 0x0D 0x0A 0x0D 0x0A    
Child Delimiter Type: Hexadecimal    
Child Order: Infix

0x0D 0x0A - это перевод строки каретки, поэтому вышеприведенное просто создает две пустые строки, вставленные между каждым дочерним элементом корневого узла.

Затем функционирует, чтобы убедиться, что каждый заголовок и его строки хранятся вместе. Для его настроек разделителя я установил:

Child Delimiter: 0x0D 0x0A    
Child Delimiter Type: Hexadecimal    
Child Order: Postfix

Записи и содержат фактическое определение схемы для строк сообщения, разделенных звездочкой.

Эта схема работает для чего-то похожего на то, что вы просили - такого рода схема плоского файла и то, как она анализирует файл, сильно зависит от мелких деталей, таких как тип разрывов строк и если в конце файла есть разрывы строк.

Принципы использования разделителей останутся в силе, вам, скорее всего, придется повозиться с настройками.

0 голосов
/ 22 октября 2008

Для всех, кого это волнует, я, наконец, сдался и написал специальный компонент конвейера, чтобы выполнить это.

...