📜  Microsoft Dynamics CRM-Web服务

📅  最后修改于: 2020-11-20 06:04:58             🧑  作者: Mango


Microsoft Dynamics CRM提供了两个重要的Web服务,用于从外部应用程序访问CRM并调用Web方法以执行常见的业务数据操作,例如在CRM中创建,删除,更新和查找。

考虑以下场景-

  • 您有一个外部.NET应用程序,需要与CRM通讯。例如,当外部应用程序中注册了新客户时,您可能希望在CRM中插入联系人记录。

  • 或者,您可能想在CRM中搜索记录并在外部应用程序中显示搜索结果。

在这种情况下,您可以使用CRM公开的Web服务在应用程序中使用它们,并在CRM中执行创建,删除,更新和查找操作。

IDiscoveryService Web服务

该Web服务返回指定用户所属的组织的列表以及每个组织的URL端点。

IOrganizationService Web服务

该Web服务是用于访问CRM中的数据和元数据的主要Web服务。 IOrganizationService使用两个重要的程序集– Microsoft.Xrm.Sdk.dllMicrosoft.Crm.Sdk.Proxy.dll 。这些程序集可以在Bin文件夹中的CRM SDK包中找到。

Microsoft.Xrm.Sdk.dll

该程序集定义了核心xRM方法和类型,包括使与Microsoft Dynamics CRM的连接更简单的代理类,身份验证方法和服务合同。

Microsoft.Crm.Sdk.Proxy.dll

该程序集定义了对非核心消息的请求和响应,以及处理组织数据所需的枚举。以下是这两个程序集支持的名称空间。

这些程序集的每一个都支持某些消息,这些消息将用于处理存储在任何实体中的数据。他们支持的消息的完整列表可以在以下链接中找到-

支持XRM消息https://msdn.microsoft.com/en-us/library/gg334698.aspx

支持的CRM消息-https : //msdn.microsoft.com/zh-cn/library/gg309482.aspx

IOrganizationService Web服务方法

IOrganizationService提供了八个方法,使您可以在系统和自定义实体以及组织元数据上执行所有常见操作。

Sr.No Method & Description
1

IOrganizationService.Create

Creates a record.

2

IOrganizationService.Update

Updates an existing record.

3

IOrganizationService. Retrieve

Retrieves a record.

4

IOrganizationService. RetrieveMultiple

Retrieves a collection of records.

5

IOrganizationService. Delete

Deletes a record.

6

IOrganizationService. Associate

Creates a link between records.

7

IOrganizationService.Disassociate

Deletes a link between records.

8

IOrganizationService.Execute

Used for common record processing as well as specialized processing such as case resolution, duplicate detection, etc.

Web服务示例

为了了解Web服务在CRM中的工作方式,我们将看一下CRM SDK提供的示例。在此示例中,我们将创建一个新的帐户记录,对其进行更新,然后最后使用CRM IOrganizationService Web服务将其删除。

步骤1-打开您提取CRM SDK的文件夹。现在通过浏览到以下位置来打开QuickStartCS.sln解决方案:SDK \ SampleCode \ CS \ QuickStart

Mscrm Web服务示例步骤1

步骤2-我们将探索“简化连接快速入门”项目。在此项目中打开app.config 。默认情况下,该文件中的connectionStrings部分将被注释。

Mscrm Web服务示例步骤2

从此,取消注释第一个连接字符串键并编辑以下三个详细信息-

网址-指定您的CRM实例的URL。就我们而言,由于我们使用的是CRM的在线版本,因此您必须提及该URL。

用户名-您的CRM Online用户名。

密码-您的CRM Online密码。

Mscrm Web服务示例步骤2 2

步骤3-在此项目中打开SimplifiedConnection.cs文件,然后在其中运行方法。

public void Run(StringconnectionString, boolpromptforDelete) {
   try {
      
      // Establish a connection to the organization web service using CrmConnection.
      Microsoft.Xrm.Client.CrmConnection connection =
         CrmConnection.Parse(connectionString);
      
      // Obtain an organization service proxy.
      // The using statement assures that the service proxy will be properly disposed.
      using(_orgService = new OrganizationService(connection)) {

         //Create any entity records this sample requires.
         CreateRequiredRecords();
         
         // Obtain information about the logged on user from the web service.
         Guid userid = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
         SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser",userid,
            new ColumnSet(newstring[]{"firstname","lastname"}));
         
         Console.WriteLine("Logged on user is {0} {1}.",
            systemUser.FirstName,systemUser.LastName);

         // Retrieve the version of Microsoft Dynamics CRM.
         RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
         RetrieveVersionResponse versionResponse =
            (RetrieveVersionResponse)_orgService.Execute(versionRequest);
         Console.WriteLine("Microsoft Dynamics CRM version {0}.",
            versionResponse.Version);
         
         // Instantiate an account object. Note the use of option set
         enumerations defined in OptionSets.cs.
         
         // Refer to the Entity Metadata topic in the SDK documentation to
         determine which attributes must
         
         // be set for each entity.
         Account account = new Account{Name = "Fourth Coffee"};
         account.AccountCategoryCode = new OptionSetValue(
            (int)AccountAccountCateg oryCode.PreferredCustomer);
         account.CustomerTypeCode = new OptionSetValue(
            (int)AccountCustomerTypeCod e.Investor);
         
         // Create an account record named Fourth Coffee.
         _accountId = _orgService.Create(account);
         Console.Write("{0} {1} created, ",account.LogicalName,account.Name);
         
         // Retrieve the several attributes from the new account.
         ColumnSet cols = new ColumnSet(
            new String[]{"name","address1_postalcode","lastusedincampaign"});
         Account retrievedAccount =
            (Account)_orgService.Retrieve("account", _accountId, cols);
         Console.Write("retrieved, ");

         // Update the postal code attribute.
         retrievedAccount.Address1_PostalCode = "98052";

         // The address 2 postal code was set accidentally, so set it to null.
         retrievedAccount.Address2_PostalCode = null;

         // Shows use of a Money value.
         retrievedAccount.Revenue = new Money(5000000);

         // Shows use of a Boolean value.
         retrievedAccount.CreditOnHold = false;
         
         // Update the account record.
         _orgService.Update(retrievedAccount);
         Console.WriteLine("and updated.");
         
         // Delete any entity records this sample created.
         DeleteRequiredRecords(promptforDelete);
      } 
   } 
   // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
   catch(FaultException) {

      // You can handle an exception here or pass it back to the calling method.
      throw;
   }
}

步骤4-该方法基本上演示了使用CRM Web服务的所有CRUD操作。该代码首先创建一个组织实例,然后创建一个Account记录,更新创建的记录,然后最后将其删除。让我们看一下这段代码的重要组成部分。若要在代码运行时查看CRM的实时变化,可以逐步调试该代码(如下文所述),同时查看CRM的变化。

步骤4.1-使用我们在步骤2中修改的连接字符串建立与组织的连接。

Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);

步骤4.2-获取CRM组织Web服务的代理实例。

_orgService = new OrganizationService(connection) 

步骤4.3-创建一个新的帐户实体对象,并设置其名称,AccountCategoryCode和CustomerTypeCode。

Account account = new Account{Name = "Fifth Coffee"}; 
account.AccountCategoryCode = new OptionSetValue(
   (int)AccountAccountCategoryCode.P referredCustomer); 
account.CustomerTypeCode = new OptionSetValue(
   (int)AccountCustomerTypeCode.Investor); 

步骤4.4-使用组织服务的Create方法创建新记录。

_accountId = _orgService.Create(account); 

如果导航到CRM,则会看到一个新创建的帐户记录。

Mscrm Web服务示例步骤4_4

步骤4.5-创建帐户后,该服务将使用“检索Web服务”方法从CRM中检索记录。

ColumnSet cols = new ColumnSet(new String[]{
   "name","address1_postalcode","lastusedincampaign"}); 
Account retrievedAccount = 
   (Account)_orgService.Retrieve("account", _accountId, cols); 

步骤4.6-获取记录后,可以设置记录的更新值。

retrievedAccount.Address1_PostalCode = "98052"; 
retrievedAccount.Address2_PostalCode = null; 
retrievedAccount.Revenue = new Money(5000000); 
retrievedAccount.CreditOnHold = false; 

步骤4.7-设置记录的更新值后,使用“更新” Web服务方法将记录更新回CRM数据库。

_orgService.Update(retrievedAccount); 

如果在CRM中打开记录,您将在此处看到这些值的更新。

Mscrm Web服务示例步骤4_7

步骤4.8-最后,使用“删除Web服务”方法删除记录。

_orgService.Delete(Account.EntityLogicalName, _accountId); 

如果现在刷新CRM中的相同记录,您将看到该记录不再可用,因为它已被删除。

Mscrm Web服务示例步骤4_8

结论

在本章中,我们讨论了CRM提供的两个重要的Web服务,以及一个如何从外部应用程序使用这些Web服务执行各种CRUD操作的工作示例。