65.9K
CodeProject 正在变化。 阅读更多。
Home

如何使用 BizTalk Server 2009/2010 集成 Microsoft Dynamics CRM 4.0 到其他业务应用程序

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2011 年 1 月 23 日

CPOL

4分钟阅读

viewsIcon

38905

downloadIcon

229

本文演示了如何使用 BizTalk Server 2009/2010 将 Microsoft Dynamics CRM 4.0 集成到其他业务应用程序。

引言

本文演示了如何使用 BizTalk Server 2009/2010 将 Microsoft Dynamics CRM 4.0 集成到其他业务应用程序。 关于如何使用 BizTalk Server 2009/2010 适配器与 Microsoft Dynamics CRM 通信,已经出现了一些问题。 本文将尝试对此进行阐明。

下载并安装 Microsoft BizTalk Server Adapter for Microsoft Dynamics CRM 4.0

使用此适配器,您可以将 Microsoft Dynamics CRM 4.0 与使用 Microsoft BizTalk Server 2006/2009 的任何其他业务应用程序集成。

验证适配器安装

打开 BizTalk Server 管理控制台并查找以下内容

CRM_Adapter.JPG

如何生成所需的架构以映射并在 Microsoft CRM 中创建实体?

正确安装适配器后,在 Visual Studio 中打开一个新项目。

这些步骤将生成映射所需的架构。

步骤 1:右键单击项目 -> 添加 -> 添加生成的项 -> 选择添加适配器元数据。

步骤 2:选择 Microsoft Dynamics CRM 4.0,单击下一步,然后指定 CRM 连接详细信息。

步骤 3:选择实体和操作。

架构生成后,项目将如下所示

CRM_Schemas.JPG

注意:如果您选择了多个实体,则 CRM 会使用实体名称作为架构名称的前缀(例如 Account_Query.xsd)。 请注意,这些是通用架构,对于每个实体都是相同的。 可以安全地删除这些通用架构,这将减小架构 DLL 的大小。

使用动态发送端口调用 CRM 适配器的步骤

步骤 1:找到 CRM 属性架构

在 Dynamics 适配器 CRM 安装文件夹中找到属性架构(通常位于 C:\Program Files\CRMDynamicsBizTalkAdapter4.0\Schemas)。

步骤 2:为属性架构分配值

设置属性架构中的各种属性

// NOTE: These are dynamic port assignments. 
// These can changed at runtime without any impact! 
CRMAdapterRequestMsg(PropertySchema.ServerUrl) = CRM_URL;
CRMAdapterRequestMsg(PropertySchema.UserName) = CRM_UserName;
CRMAdapterRequestMsg(PropertySchema.Password) = CRM_Password;
CRMAdapterRequestMsg(PropertySchema.CrmOrganization) = CRM_Organization;
CRMAdapterRequestMsg(PropertySchema.AuthType) = CRM_AuthType;

// NOTE: Specify the CRM full URL endpoint. 
CRMDynamicSendPort(Microsoft.XLANGs.BaseTypes.Address) = CRM_URL;

// NOTE: match this with the adapter name in BizTalk Server 
// Administration Console (Microsoft Dynamics CRM 4.0)
CRMDynamicSendPort(Microsoft.XLANGs.BaseTypes.TransportType) = 
		CRM_TransportType; // "Microsoft Dynamics CRM 4.0"

步骤 3:映射到各种 CRM 操作架构

需要为需要在 CRM 中创建或更新的每个实体生成架构。 在此示例中,我仅演示了对 fetch 请求的操作。 屏幕截图说明了传输到 fetch 请求所需的映射。

crm_action 属性可以采用以下值

  • 创建
  • update (默认)
  • fetch
  • 删除

FetchCRMRequest_Map.JPG

 

// Custom Functoid code to send RAW XML
public string GetFetchQuery(string fetchQueryRequest)
{
	return fetchQueryRequest;
}

可下载的源代码

此源代码包含两个业务流程。 一个业务流程调用 CRM 适配器,另一个业务流程使用调用业务流程形状调用它。 我已将其编码为尽可能通用。

请注意以下几点

  • CRM 适配器使用以下命名空间将响应发送回业务流程。 xxx 值必须替换为您连接的特定 CRM 值。
    http://schemas.microsoft.com/crm/2007/BizTalkAdapter/xxx/Response 
  • CRM 的响应有两种形式,错误响应和正确响应。 错误响应显示在附加的屏幕截图中。 正确的响应位于 /Body/Message 标记下,并且 ReturnCode 值将为 1。 业务流程代码从 Message 标记中提取响应,并将其传输到逻辑发送端口。

    CRM_Adapter_Response.jpg

  • 请注意发送端口和接收端口设置。 这在生产环境中不是必需的,但运行此代码是必需的。

发送和接收端口设置

  • CRM_Adapter_SendPort_Settings.JPG CRM_Adapter_RcvPort_Settings.JPG

如何在 Microsoft Dynamics CRM 4.0 BizTalk 适配器中启用调试并接收友好的错误消息?

CRM 适配器通常会在应用程序事件日志中记录错误消息。 大多数错误消息都是通用的,没有提供足够的描述性含义。 以下是在日志文件中记录带有描述性错误消息的错误所需的步骤。

步骤 1:打开注册表编辑器

搜索以下键 '6B8335E2-9664-4ad8-A2F6-ADBFD60FF703'

步骤 2:如下图所示设置以下键

RegistryKeys.JPG

步骤 3:重新启动与 CRM 适配器关联的 BizTalk 发送处理程序

您已准备好进行快乐的集成。

CRM 适配器日志中的典型错误消息

错误消息
Exception :: 0x80040203 :: serializedForm ::    at 
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse
(SoapClientMessage message, WebResponse response, Stream responseStream, 
Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke
	(String methodName, Object[] parameters)
   at Microsoft.Crm.BizTalkAdapter.CrmService2007.CrmService.Execute
	(Request Request)
   at Microsoft.Crm.BizTalkAdapter.Runtime.SendToCrm.UpdateDynamicEntity
	(EntityAttributesValidationResult attributeValidationResult, 
	String entityName)
解决方案 错误代码 0x80040203 表示未设置实体的主键,或者实体中缺少必需元素的值。
错误消息
Attribute :: xxx_currencyid, Attribute Type :: Lookup, 
Attribute Value :: USD, Error :: There is an error in the XML document.
解决方案
首先请注意,属性类型是 Lookup。 每个查找类型都有以下四个属性

LookupListValues.JPG

CRM 文档告诉我们,属性 IsNullnamedsc 是可选的。 如果您想将元素的值显式更新为 NULL,则可以将 IsNull 设置为 true

解决方法:将值设置为属性 name,而不是元素,然后瞧!此错误可能会消失。 请注意,最终您可能必须将正确的 GUID 值设置为该标记。

<xxx_currencyid name="USD" />

快速参考

我建议您先查看 Brajendra Singh 的以下文章,以及一些关于 CRM 适配器调试的注意事项。

© . All rights reserved.