Интеграция MS CRM и Biztalk2010 - PullRequest
0 голосов
/ 25 июля 2011

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

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

1 Ответ

2 голосов
/ 26 июля 2011

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...