Пропустить элемент в сборке плоского файла BizTalk?

Мне было поручено отобразить входной XML (на самом деле SAP IDOC XML) и создать ряд плоских файлов. Каждый входной xml может давать несколько выходных файлов (один выходной файл на номер лота), поэтому я буду использовать xsl:key и функцию key() в своем отображении, основываясь на номере лота

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

Таким образом, вопрос на самом деле таков: могу ли я сопоставить номер партии с xml и заставить сборщик плоских файлов пропустить его при создании файла? Или есть другой способ, которым номер партии может быть применен в качестве имени файла сборкой, не имея его внутри самого файла?

2 ответа

В вашей оркестровке вы можете установить свойство контекста для каждого выходного сообщения:

msgOutput(FILE.ReceivedFileName) = "DynamicStuff";

Затем msgOutput переходит в форму отправки. В вашем порту отправки вы устанавливаете выходной файл следующим образом:

FixedStuff_%SourceFileName%.xml

Результат:

FixedStuff_DynamicStuff.xml
  1. Если значение не требуется в содержимом сообщения, не отображайте его. Вот и все.
  2. Чтобы вставить значение в имя файла, номер лота в этом случае, вам нужно будет преобразовать это значение в свойство контекста FILE.ReceivedFileName. Затем вы можете использовать макрос%SourceFileName% как часть настройки имени в порту отправки. Вы можете установить FILE.ReceivedFileName с помощью Property Promotion или xpath() в Orchestration.

Бонус: сортировка и группировка в xslt довольно громоздка, поэтому я больше так не делаю. Вместо этого вы можете использовать SQL: BizTalk: сортировка и группировка данных плоских файлов в SQL вместо XSL

Другие вопросы по тегам