Как сопоставить строку с разделителями в al oop в BizTalk 2013 R2? - PullRequest
0 голосов
/ 29 апреля 2020

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

Исходные данные

Исходные пары ключ-значение были объединены в длинную строку, а затем строка была разделена на несколько элементов документа EDI следующим образом:

MAN PB <OPTION 1 TOKEN> OPTION 1 VALUE <OPTION 2 TOK
MAN PB EN> OPTION 2 VALUE <OPTION 3 TOKEN> OPTION 3 
MAN PB VALUE <OPTION 4 TOKEN> OPTION 4 VALUE <OPTION
MAN PB  5 TOKEN> OPTION 5 VALUE <OPTION 6 TOKEN> OPT
MAN PB ION 6 VALUE

ПРИМЕЧАНИЕ: угловые скобки используются только для отделения токена от значения. Это не XML данные, закодированные в EDI do c.

Частичное преобразование

Я успешно преобразовал значения обратно в сцепленную строку, используя Cumulative Concatenate функтоид , сопровождаемый скриптом functoid, который очищает несколько нежелательных символов. Я могу сопоставить сцепленную строку с одним полем в целевом документе:

"<OPTION 1 TOKEN> OPTION 1 VALUE <OPTION 2 TOKEN> OPTION 2 VALUE <OPTION 3 TOKEN> OPTION 3 VALUE <OPTION 4 TOKEN> OPTION 4 VALUE <OPTION 5 TOKEN> OPTION 5 VALUE <OPTION 6 TOKEN> OPTION 6 VALUE"

Желаемый результат

Как мне сопоставить эту заново собранную строку с al oop в вместо документа назначения?

В месте назначения есть повторяющийся элемент <option>, и я хотел бы, чтобы строка была разбита и отображена так, чтобы она выглядела так:

<item>

  ...some other stuff...

  <option>
    <name>OPTION 1 TOKEN</name>
    <value>OPTION 1 VALUE</value>
  </option>
  <option>
    <name>OPTION 2 TOKEN</name>
    <value>OPTION 2 VALUE</value>
  </option>

  ...remaining options...

</item>

Дополнительно Подробнее

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

Я уже создал C# функцию, которая может преобразовывать объединенная строка в список пар ключ-значение, однако я не могу понять, как применить это в BizTalk b / c, кажется, сценарии не работают с повторяемыми возвращаемыми значениями, такими как List<>, IEnuerable<>, et c.

Мне также нужно запустить вторичный процесс преобразования данных, используя хранимую процедуру в MS SQL 2008 R2. Я также хотел бы рассмотреть решение на основе SQL.

1 Ответ

0 голосов
/ 01 мая 2020

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

...