Как опубликовать любой элемент из схемы конверта в MessageBox

У меня есть сообщение конверта (EM), в этом EM есть некоторые элементы, которые продвигаются в контексте (для маршрутизации), и есть один элемент Any (называемый Payload), содержащий фактический экземпляр схемы для дальнейшего использования (другие оркестровки подписываются на этот экземпляр полезной нагрузки).

Это универсальная служба (WCF, запрос-ответ), получающая сообщение запроса, возвращающая ответное сообщение (содержащее некоторые элементы запроса и с новым сгенерированным уникальным идентификатором транзакции) и сообщение об ошибке (если применимо).

Полезная нагрузка должна быть опубликована в MessageBox (прямая привязка) с некоторыми контекстными свойствами EM.

Как это можно сделать наиболее эффективно?


person Patrick Peters    schedule 21.10.2011    source источник


Ответы (2)


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

Если нет, прочитайте здесь: http://msdn.microsoft.com/en-us/library/aa546772(v=BTS.20).aspx

person tom redfern    schedule 21.10.2011

Могу я просто подтвердить

  1. Клиент WCF отправляет сообщение, соответствующее схеме конверта
  2. Вы хотите разделить схему конверта на одно или несколько сообщений полезной нагрузки, содержащихся внутри, для оркестровки обработки полезной нагрузки.
  3. ? Нужно ли вам ждать, пока все сообщения полезной нагрузки будут обработаны, пока вы не ответите клиенту WCF с ответом об успешном/неудачном завершении (т. е. ответ зависит от завершения сообщений полезной нагрузки).

Если вам не нужен пункт 3), то ваша оркестровка WCF может просто отправить сообщение «да» обратно клиенту WCF, не беспокоясь о том, что произойдет с вашей полезной нагрузкой.

Стандартный XMLReceive в вашем местоположении получения WCF должен иметь возможность автоматически отделять сообщение, если оно распознает его как схему конверта, т.е. содержит

<b:schemaInfo is_envelope="yes" xmlns:b="somexmlns"/>
<b:recordInfo body_xpath="xpathtoroot"/>

Однако, если вам действительно нужен пункт 3, проблема, которую я вижу, заключается в том, что, поскольку вы используете запрос-ответ WCF, клиент захочет получить синхронный ответ обратно в зависимости от обработки полезной нагрузки. Было бы сложно сделать это, используя стандартную разгрузку конверта, поскольку вам нужно будет сопоставить ход и результаты обработки вашей полезной нагрузки с вашей схемой WCF — вместо этого вы можете просто сохранить свою внешнюю схему (конверт) как не-конверт и используйте настраиваемый конвейер получения в вашей организации WCF, чтобы разделить сообщения, а затем пройтись по каждому из них и вызвать Orchestration обработки полезной нагрузки.

http://mstecharchitect.blogspot.com/2008/12/debatching-biztalk-xml-messages.html

person StuartLC    schedule 21.10.2011