MS CRM and Biztalk2010 Integration



我计划为MS CRM和BizTalk 2010集成启动POC。

在此之前,我想知道是否有人使用BizTalk 2010与MS CRM集成?

我们使用BizTalk 2010调用Microsoft Dynamics CRM 2011组织服务。

基本上有两种方法可以做到这一点,但我决心寻找其他方法。

第一种方法是使用SDK附带的BizTalk模式以及外部基于c#的类库助手。这种情况在互联网上有很多报道。注意,这个场景不允许BizTalk调用CRM早期绑定类(Account等),它只允许使用通用的CrmEntity对象,这使得处理映射成为一个痛苦的经历。

外部帮助器是处理LiveID联合特性所必需的。

第一种方法的优点是简单。但是你不能使用BizTalk的原生CRM类型。

第二种方法是以某种方式解决上述问题,至少部分解决。首先,它涉及构建一个WCF前端,该前端公开本地早期绑定的CRM对象(如Account等),并处理LiveID联邦。

在生成时,早期绑定的类是不可序列化的,因此它们不能成为WCF接口(和服务)的一部分。这可以通过使用DataContractAttribute修饰每个属性来解决。此外,只读属性需要添加一个额外的空集{}。请注意,在生成的类中需要进行大量这样的(简单的)更改。幸运的是,作为生成的文件,语法是一致的,几个简单的RegEx就可以了。

在BizTalk端,为了生成BizTalk模式,您将使用WCF数据交换元数据。不幸的是,你最终会得到巨大的几兆字节的文件和交叉依赖的模式。

所以,首先,你必须打破循环依赖。在我的例子中,我必须添加一个额外的模式来保存共享的复杂类型,这些类型被"契约"one_answers"元数据"的数据交换所使用。

其次,您不能轻易地在映射中使用生成的大型模式。第一次打开映射(或单独打开模式)将花费很长时间。第二,编译器会卡住,Visual Studio会崩溃。

要解决这个问题,您需要手动更改映射的.btm XML文件中的GenerateDefaultFixedNodes属性。

但是,我建议使用生成的模式的简化版本,其中只包含作为映射一部分的节点和结构。由于大多数节点是可选的,因此对WCF farade的最终XML请求将是相同的。

第二种方法的优点是能够处理来自BizTalk的本地CRM类型。但实施起来可能一开始听起来很复杂。通过适当的自动化,它在实践中工作得很好,即使面对客户关系管理方面的变化。

然而,没有一种方法感觉是"原生的"BizTalk集成。这就是为什么我正在寻找另一种方法,也许是通过构建一个专用的自定义绑定,但到目前为止还没有成功。

请看我的问题。

最新更新