Добавление новой строки к схеме плоского файла в BizTalk 2006 R2

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

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

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


person Community    schedule 21.10.2008    source источник


Ответы (2)


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

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

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

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

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

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

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

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

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

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

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

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

person David Hall    schedule 22.10.2008
comment
Дэвид, мне нужно было сделать что-то подобное. Ваше объяснение сработало для меня. Спасибо. - person Scott Bruns; 28.02.2012

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

person Community    schedule 21.10.2008