Много исторических сообщений о BizTalk Context Accessor (CodePlex), но все ссылки не работают. Существует ли современный функтоид/компонент доступа к контексту, который можно использовать сегодня? Или есть ли другой способ, например, создать вспомогательный класс или что-то в этом роде?
Моя цель — добавить имя файла (без пути) в целевое сообщение на карте с помощью пользовательского XSLT. Нет существующей оркестровки, только выбор файла и запуск карты для преобразования сообщения из исходного формата в целевой (для этого требуется добавить к нему имя исходного файла...).
@Dijkgraaf, да, меня интересует эта кодовая база (по крайней мере, для моего понимания того, что она на самом деле делает).
Аксессор контекста для входящего конвейера использует двухэтапный подход. Первый компонент конвейера будет хранить API «Контекст» (доступный в конвейерах) в переменной «Локальное хранилище потока». Его можно разместить на любом этапе до преобразования. Функция извлечет это значение и, таким образом, получит доступ к контексту. Поскольку конвейер будет работать в одном потоке (по крайней мере, до BT 2016).
@MarvinSmit Вы автор средства доступа к контексту? Я вижу ваше имя в заголовке пайплайна и функтоидов :-) Если да, могу ли я опубликовать код здесь?
@Dijkgraaf Я являюсь автором этого кода. Раньше я преподавал для DevelopMentor (BizTalk был одним из курсов, которые я проходил) и давал его любому слушателю, который хотел. Так что да, не стесняйтесь делать код доступным для разработчиков.





Альтернативой функции доступа к контексту является использование Структура конвейера BRE, чтение свойства контекста и вставка его в полезные данные XML.
Я решил свою проблему (на этот раз) с помощью оркестровки, в которой я могу легко получить доступ к контексту входящего сообщения, а после сопоставления ввести/обновить исходящее сообщение с именем файла.
Мне нужно было решить еще одну проблему, которая на этот раз помогла мне принять оркестровку в качестве решения. Две мухи одним махом.
(Проблема заключалась в том, заметьте для себя, что я хотел повторно использовать схему назначения в другом сценарии депакетирования, т. е. это была схема конверта. Забавно, BizTalk не смог разрешить схему содержимого тела, если карта была запущена в порту получения. Однако работающая карта внутри оркестровки он смог разрешить схему содержимого тела и сопоставление со схемой конверта, поскольку назначение работало.)
Там нет ни одного доступного там в Интернете. У меня есть копия этого кода, который был обновлен и улучшен для BizTalk 2010, но он даже не компилируется в Visual Studio 2013 для BizTalk 2013R2. Я мог бы отправить вам эту кодовую базу, если интересно. Альтернативой Context Accessor является компонент конвейера BRE, где вы можете вводить что-то в полезную нагрузку, чтобы карта могла использовать ее.