Выполнение конвейера дизассемблера плоских файлов BizTalk внутри оркестрации

Я не новичок в BizTalk, однако эта ситуация несколько нова. У меня ниже ситуация в BizTalk Orchestration,

  1. Я получил путь к плоскому файлу из другого источника.
  2. Я хочу загрузить этот файл в оркестровке и разобрать его, запустив конвейер.

Я много искал, но почти каждый говорит о загрузке XML-документа в конвейер внутри оркестровки.

У меня тоже есть ссылки ниже, но я пока не могу найти рабочее решение,

Вызов конвейера FlatFile внутри оркестровки

4 различных способа обработки XLANGMessage

Когда я реализовал решение, указанное по ссылкам выше, я получаю сообщение об ошибке «Ни один из компонентов этапа дизассемблирования не может распознать данные.»

Я также не хочу создавать динамические места приема из-за ограничений производительности.

Ниже мой код пока что,

  1. Загрузить содержимое файла в поток

  2. Создайте экземпляр CustomBTXMessage, как предложено во второй ссылке.

  3. Загрузите поток, как показано ниже

    customBTXMessage = новый CustomBTXMessage ("MyMessageName",

    Service.RootService.XlangStore.OwningContext); customBTXMessage.AddPart (string.Empty, «Body»);

    customBTXMessage [0] .LoadFrom (мс);

    вернуть customBTXMessage.GetMessageWrapperForUserCode ();

Я думаю, что эта ситуация не является чем-то новым в мире BizTalk. Любой, кто это сделал, должен быть в состоянии быстро мне помочь.


person pgcan    schedule 25.04.2017    source источник
comment
A) Почему вы не можете использовать файловый адаптер для чтения файла? Б) Нужно ли вам обрабатывать файл в той же оркестрации, в которой вы обнаруживаете путь?   -  person Johns-305    schedule 25.04.2017
comment
Таким образом, файлы могут находиться в нескольких папках, если я подумываю начать новую оркестровку, тогда мне придется создавать новое место приема файлов для каждого пути. Да, мне нужно обработать файл в той же оркестровке.   -  person pgcan    schedule 25.04.2017
comment
Есть ли корреляция, которую вы можете использовать между плоским файлом (содержимым или именем файла) и потоком, в котором вы находитесь?   -  person Pieter Vandenheede    schedule 25.04.2017
comment
Итак ... почему вы не можете создать несколько мест приема? С этим нет проблем. Затем, вслед за Питером Ванденхидом, есть ли способ связать файлы? Должна быть общая ценность.   -  person Johns-305    schedule 25.04.2017
comment
поэтому ситуация такова, что я получаю список путей к файлам из источника, а затем должен последовательно обрабатывать эти плоские файлы. два файла не могут обрабатываться одновременно. Одним из решений может быть загрузка всех файлов в первой оркестровке, а затем создание другого оркестра, имеющего корреляцию по имени порта приема. В этом случае мне придется создать несколько мест приема на стороне одного порта приема. Но проблема с созданием двух orch заключается в том, что мне придется выйти из BizTalk, а затем инициировать или прочитать все другие переменные, которые у меня уже есть в первом orch.   -  person pgcan    schedule 25.04.2017


Ответы (1)


Вот что я бы сделал ... или хотя бы попробовал сначала.

  1. Создайте порт приема и место приема для каждого типа плоского файла, который вы получаете.
  2. Получите список файлов.
  3. В оркестровке переместите файл в соответствующее место приема.
  4. Плоский файл Дизассемблер файла в Port Pipeline как обычно.
  5. Получите файл в оркестровке с упорядоченным портом доставки, привязанным к порту приема с шага 1.
  6. Цикл при получении файлов, проверка BTS.LastInterchagneMessage.
  7. Когда True, выйдите из цикла и вернитесь к шагу 3.
person Johns-305    schedule 25.04.2017
comment
спасибо, Джонс, я бы пошел с этим подходом, если я не получу решение к завтрашнему дню. - person pgcan; 25.04.2017
comment
@Prasoon Solution тоже ...? Для ясности я бы не стал читать файл в оркестровке, хотя это возможно. Это просто более сложно и меньше похоже на «Путь BizTalk». - person Johns-305; 25.04.2017