Каков наилучший способ создания нового сообщения в оркестровке Biztalk? - PullRequest
6 голосов
/ 24 ноября 2008

Я ищу ваши лучшие решения для создания нового экземпляра сообщения на основе предварительно определенной схемы XSD для использования в оркестровке Biztalk.

Дополнительные голоса идут за ответы с четкими и эффективными примерами или за ответы с качественными ссылочными ссылками.

Ответы [ 6 ]

17 голосов
/ 24 ноября 2008

Существует несколько вариантов создания нового экземпляра сообщения в оркестровке BizTalk.

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

Как определить, какой метод является наилучшим, действительно зависит - метод XMLDocument в некоторых отношениях является самым аккуратным, за исключением того, что если ваша схема изменится, это может сломаться без вашего ведома. Скотт Колесток описывает некоторые методы снижения этого риска.

Метод сопоставления BizTalk, вероятно, наиболее прост для понимания и не сломается при изменении схемы. Для небольших схем это может быть хорошим выбором.

Для всех этих методов важно помнить, что если вы хотите использовать выделенные поля или повышенные свойства, вы захотите создать пустые элементы для заполнения. Вы попадете в ошибки времени выполнения XLANG, если попытаетесь присвоить значения отсутствующим элементам (даже если эти элементы могут быть необязательными)

Карта BizTalk

Самый простой вариант - просто использовать карту BizTalk - вам даже не нужно ничего сопоставлять с созданным экземпляром.

Чтобы создать пустые элементы, вы можете просто отобразить в функтоиде конкатенации строк параметр пустой строки.

Назначить одно сообщение другому

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

Использовать переменную XMLDocument

Для этого вы создаете переменную оркестровки типа XMLDocument, а затем в message assignment используете метод LoadXML для загрузки фрагмента XML, соответствующего вашей схеме. Затем вы назначаете XMLDocument желаемому сообщению BizTalk.

varXMLDoc.LoadXml(@"<ns0:SomeXML><AnElementToPopulate></AnElementToPopulate></SomeXML>");  
msgYourMessage = varXMLDom;

Включение AnElementToPopulate позволяет вам использовать продвижение собственности для присвоения ему.

Я редко помню синтаксис, чтобы сделать это на макушке, this - моя запись в блоге для напоминания о синтаксисе.

Другая ссылка здесь подробно описывает некоторые методы.

2 голосов
/ 24 ноября 2008

Что именно вы ищете? Это просто создание нового сообщения с фиксированным содержимым (вроде своего рода шаблона)? Или основано на чем-то еще? Вам действительно нужно уточнить вопрос и быть более конкретным, чтобы получить правильный ответ.

Если вы имеете в виду просто создание сообщения с нуля, основанного на жестко закодированном содержимом (или близком к нему), то я обнаружил, что помещение их в качестве встроенных ресурсов во вспомогательную сборку C # является довольно простым способом Делать это. У Скотта Колестока есть хорошее объяснение этой техники.

1 голос
/ 24 ноября 2008

Этот урок может помочь:

Учебное пособие по BizTalk Server 2006 - обзор процесса Создание сервисов с первым контрактом, используя BizTalk Server 2006 R2 и Windows Communication Foundation

http://dotnet.sys -con.com / узел / 647092

1 голос
/ 24 ноября 2008

Чтобы создать новое сообщение, вы можете просто создать новое System.Xml.XmlDocument и назначить его переменной сообщения. Вы можете использовать его методы Load или LoadXml для загрузки необходимого контента, соответствующего схеме.

0 голосов
/ 25 июня 2013
xsd.exe /classes /namespace:MyNamespace myschemafile.xsd

Вы можете использовать это для генерации классов c # для данного файла схемы. В результате получается файл .cs, который вы можете включить в один из ваших проектов решений.

При использовании в «Форме назначения сообщения» вы можете создать экземпляр одного из этих сгенерированных классов, заполнить значения для всех его свойств, а затем, наконец, назначить часть сообщения вашему экземпляру. Biztalk будет автоматически сериализовать экземпляр для вас. Здорово и ОО. Нет необходимости в каких-то модных вещах на xlang.

Мне не особо повезло с некоторыми другими решениями, такими как загрузка временного XmlDocument с жестко запрограммированным XML или полная загрузка и использование documentSpecification.GetDocSchema (). CreateXmlInstance (), которые предлагали другие. 1006 *

0 голосов
/ 06 декабря 2008

Ознакомьтесь с моим постом в блоге - Удовольствие от создания сообщений в BizTalk - для базового сравнения производительности между различными вариантами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...