Интеграция MS CRM и Biztalk2010

Я планирую начать POC для интеграции MS CRM и BizTalk 2010.

Перед этим я хотел узнать, использует ли кто-нибудь BizTalk 2010 для интеграции с MS CRM?


person Shailender Singh    schedule 25.07.2011    source источник


Ответы (1)


Мы используем BizTalk 2010 для вызова службы организации Microsoft Dynamics CRM 2011.

В основном есть два способа сделать это, но я намерен найти и другие.

Первый способ — использовать схемы BizTalk, поставляемые с SDK, вместе с внешней вспомогательной библиотекой классов на основе C#. Этот сценарий довольно подробно освещается в Интернете. Обратите внимание, что этот сценарий не позволит BizTalk вызывать ранние классы CRM (Account и т. д.). Он позволит использовать только общий объект CrmEntity, что делает сопоставление болезненным.

Внешний помощник необходим для работы с особенностями федерации LiveID.

Преимущество первого метода в том, что он прост. Но вы не можете использовать собственные типы CRM из BizTalk.

Второй способ — хоть как-то решить вышеперечисленные проблемы, хотя бы частично. Во-первых, это включает в себя создание фасада WCF, который предоставляет собственные объекты CRM с ранней привязкой (такие как учетная запись и т. д.) и имеет дело с федерацией LiveID.

После создания классы с ранней привязкой не сериализуемы, поэтому они не могут быть частью интерфейса WCF (и службы). Эту проблему можно решить, украсив каждое свойство атрибутом . Атрибут DataContractAttribute. Кроме того, к свойствам только для чтения необходимо добавить дополнительный пустой набор {}. Обратите внимание, что таких (простых) изменений в сгенерированных классах огромное количество. К счастью, в сгенерированном файле синтаксис согласован, и пара простых регулярных выражений подойдет.

На стороне BizTalk вы будете использовать метаданные фасада WCF для создания схем BizTalk. К сожалению, в итоге вы получите огромные многомегабайтные файлы и схемы с перекрестной зависимостью.

Итак, во-первых, вы должны разорвать циклические зависимости. В моем случае мне пришлось добавить дополнительную схему для хранения общих сложных типов, которые использовались как схемами «контракт», так и схемами «метаданные».

Кроме того, вы не можете легко использовать огромные сгенерированные схемы на своих картах. Первое открытие карты (или только схемы) займет целую вечность. Во-вторых, компилятор захлебнется, и Visual Studio рухнет.

Чтобы решить эту проблему, вам нужно вручную изменить GenerateDefaultFixedNodes в XML-файле вашей карты .btm.

Однако я рекомендую использовать упрощенную версию сгенерированных схем, в которую вы включаете только те узлы и структуры, которые являются частью сопоставления. Поскольку большинство узлов являются необязательными, результирующий XML-запрос к фасаду WCF будет таким же.

Преимущество этого второго метода заключается в том, что он может работать с собственными типами CRM из BizTalk. Но поначалу реализация может показаться сложной. При должной автоматизации на практике это работает довольно хорошо, даже несмотря на изменения на стороне CRM.

Однако ни один из методов не воспринимается как «родная» интеграция с BizTalk. Вот почему я работаю над поиском альтернативного пути, возможно, путем создания специальной пользовательской привязки, но пока безуспешно.

См. мой вопрос здесь .

Надеюсь это поможет.

person Maxime Labelle    schedule 26.07.2011
comment
Блестящий. Я работал в том же направлении и не смог найти альтернативу ни одному из вариантов, которые вы упомянули. - person RobS; 30.01.2012