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