-1

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

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

4

1 回答 1

2

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

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

第一种方法是使用 SDK 附带的 BizTalk 架构以及基于外部 C# 的类库帮助程序。这种情况在互联网上很清楚。请注意,此方案不允许 BizTalk 调用 CRM 早期绑定类(帐户等)。它只允许使用通用的 CrmEntity 对象,这使得处理映射成为一种痛苦的体验。

外部助手对于处理 LiveID 联合特性是必要的。

第一种方法具有简单的优点。但是您不能使用 BizTalk 中的本机 CRM 类型。

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

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

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

所以,首先,你必须打破循环依赖。在我的例子中,我必须添加一个额外的模式来保存“合同”和“元数据”模式都使用的共享复杂类型。

接下来,您不能轻易地在地图中使用生成的巨大模式。首先打开地图(或单独的模式)需要很长时间。其次,编译器会阻塞,Visual Studio 会崩溃。

要解决此问题,您需要手动更改地图的 .btm XML 文件中的GenerateDefaultFixedNodes属性。

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

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

然而,这些方法都不是“本机” BizTalk 集成。这就是为什么我正在努力寻找另一种方法,也许是通过构建一个专用的自定义绑定,但到目前为止还没有成功。

在这里查看我的问题

希望这可以帮助。

于 2011-07-26T06:47:53.837 回答