BizTalk Orchestration для получения нескольких сообщений из конвейера XMLReceive через порт двусторонней отправки? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть оркестровка с двухсторонним портом отправки для получения одного или нескольких элементов из базы данных. Я использую адаптер WCF- SQL, и мне удалось выделить входящий результат в отдельные сообщения StoredProcedureResultSet0. Однако оркестровка обрабатывает только одно сообщение и завершается.

Есть ли способ для оркестрации получения l oop по возвращенным сообщениям перед завершением?

Сообщение об ошибке, которое я получаю сейчас для необработанных сообщений :

Экземпляр завершен без использования всех своих сообщений. Экземпляр и его неиспользованные сообщения были приостановлены.

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

Идеи?

Ответы [ 2 ]

1 голос
/ 14 мая 2020

Окончательное решение заключалось в том, чтобы проводить отгрузку непосредственно в приемном конвейере. Использование XPath в оркестровке сопряжено с риском для производительности, а использование наборов корреляции, таких как @Dijkgraaf, также сопряжено с рисками.

Однако, пытаясь реализовать выбранное решение, я столкнулся со следующей проблемой:

Конвейеру XMLReceive не удалось обработать сообщение, если из хранимой процедуры не было возвращено никаких результатов. Это связано с тем, что адаптер WCF- SQL пропускает результирующий элемент, если строки не возвращаются, а для дебатирования (Body XPath) требуется, чтобы он существовал. Кроме того, попытался заставить Body XPath работать, даже если с помощью функции XPath count () не было результатов, но BizTalk не допускает "сложных" выражений XPath (заданных сообщением об ошибке, ссылки не найдены).

Итак, мне пришлось разработать настраиваемый компонент конвейера декодирования приема, чтобы добавить элемент, если он отсутствует. Затем XML Disassmebler работает и потребляет сообщение, даже если элемент пуст.

1 голос
/ 08 мая 2020

У вас должен быть набор корреляции, где первая форма приема инициализирует набор корреляции, а затем у вас есть получение в al oop с получением с последующим набором корреляции. Сложными частями будет определение того, с чем вы можете соотносить, и условия выхода l oop. Вот почему для дебатирования обычно проще использовать конвейер или карты в оркестровке.

...