Учебники

Microsoft Dynamics CRM — веб-службы

Microsoft Dynamics CRM предоставляет две важные веб-службы, которые используются для доступа к CRM из внешнего приложения и вызова веб-методов для выполнения общих операций с бизнес-данными, таких как создание, удаление, обновление и поиск в CRM.

Рассмотрим следующие сценарии —

  • У вас есть внешнее приложение .NET, которое должно общаться с CRM. Например, вы можете вставить запись контакта в CRM, когда в вашем внешнем приложении зарегистрирован новый клиент.

  • Или, может быть, вы хотите искать записи в CRM и отображать результаты поиска во внешнем приложении.

У вас есть внешнее приложение .NET, которое должно общаться с CRM. Например, вы можете вставить запись контакта в CRM, когда в вашем внешнем приложении зарегистрирован новый клиент.

Или, может быть, вы хотите искать записи в CRM и отображать результаты поиска во внешнем приложении.

В таких сценариях вы можете использовать веб-сервисы, предоставляемые CRM, чтобы использовать их в своем приложении и выполнять операции создания, удаления, обновления и поиска в CRM.

Веб-сервис IDiscoveryService

Этот веб-сервис возвращает список организаций, к которым принадлежит указанный пользователь, и конечную точку URL для каждой организации.

IOrganizationService Web Service

Этот веб-сервис является основным веб-сервисом, используемым для доступа к данным и метаданным в CRM. Служба IOrganizationService использует две важные сборки — Microsoft.Xrm.Sdk.dll и Microsoft.Crm.Sdk.Proxy.dll . Эти сборки можно найти в пакете CRM SDK внутри папки Bin .

Microsoft.Xrm.Sdk.dll

В этой сборке определяются основные методы и типы xRM, в том числе прокси-классы для упрощения подключения к Microsoft Dynamics CRM, методы проверки подлинности и контракты на обслуживание.

Microsoft.Crm.Sdk.Proxy.dll

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

Каждая из этих сборок поддерживает определенные сообщения, которые будут использоваться для работы с данными, хранящимися в любом объекте. Полный список поддерживаемых ими сообщений можно найти по следующим ссылкам —

Поддерживаемые сообщения xRMhttps://msdn.microsoft.com/en-us/library/gg334698.aspx

Поддерживаемые сообщения CRMhttps://msdn.microsoft.com/en-us/library/gg309482.aspx

Методы веб-службы IOrganizationService

Служба IOrganizationService предоставляет восемь методов, которые позволяют выполнять все общие операции с системой и пользовательскими объектами, а также метаданные организации.

Sr.No Метод и описание
1

IOrganizationService.Create

Создает запись.

2

IOrganizationService.Update

Обновляет существующую запись.

3

IOrganizationService. извлекать

Получает запись.

4

IOrganizationService. RetrieveMultiple

Получает коллекцию записей.

5

IOrganizationService. удалять

Удаляет запись.

6

IOrganizationService. ассоциированный

Создает связь между записями.

7

IOrganizationService.Disassociate

Удаляет ссылку между записями.

8

IOrganizationService.Execute

Используется для обычной обработки записей, а также для специальной обработки, такой как разрешение случаев, обнаружение дубликатов и т. Д.

IOrganizationService.Create

Создает запись.

IOrganizationService.Update

Обновляет существующую запись.

IOrganizationService. извлекать

Получает запись.

IOrganizationService. RetrieveMultiple

Получает коллекцию записей.

IOrganizationService. удалять

Удаляет запись.

IOrganizationService. ассоциированный

Создает связь между записями.

IOrganizationService.Disassociate

Удаляет ссылку между записями.

IOrganizationService.Execute

Используется для обычной обработки записей, а также для специальной обработки, такой как разрешение случаев, обнаружение дубликатов и т. Д.

Пример веб-сервиса

Чтобы понять, как работают веб-сервисы в CRM, мы рассмотрим пример, предоставленный CRM SDK. В этом примере мы создадим новую запись учетной записи, обновим ее, а затем окончательно удалим ее с помощью веб-службы CRM IOrganizationService .

Шаг 1 — Откройте папку, в которую вы извлекли CRM SDK. Теперь откройте решение QuickStartCS.sln, перейдя по следующему адресу: SDK \ SampleCode \ CS \ QuickStart

Пример веб-службы Mscrm, шаг 1

Шаг 2 — Мы будем изучать проект QuickStart с упрощенным подключением . Откройте app.config в этом проекте. По умолчанию раздел connectionStrings в этом файле будет прокомментирован.

Пример веб-службы Mscrm, шаг 2

После этого раскомментируйте первый ключ строки подключения и отредактируйте следующие три детали:

Url — укажите URL вашего экземпляра CRM. В нашем случае, поскольку мы используем онлайн-версию CRM, вам придется упомянуть этот URL.

Имя пользователя — Ваше имя пользователя в CRM Online.

Пароль — Ваш пароль CRM Online.

Пример веб-службы Mscrm, шаг 2 2

Шаг 3 — Откройте файл SimplifiedConnection.cs в этом проекте и Runmethod внутри него.

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<microsoft.xrm.sdk.organizationservicefault>) {

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

Шаг 4 — Этот метод в основном демонстрирует все операции CRUD с использованием веб-сервисов CRM. Код сначала создает экземпляр организации, затем создает учетную запись, обновляет созданную запись и, наконец, удаляет ее. Давайте посмотрим на важные компоненты этого кода. Чтобы увидеть изменения в CRM на ходу, когда этот код выполняется, вы можете пошагово отладить этот код (как мы обсудим ниже) и одновременно увидеть изменения в CRM.

Шаг 4.1. Устанавливает соединение с организацией, используя строку соединения, которую мы изменили на шаге 2 .

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

Шаг 4.2 — Получение прокси-экземпляра веб-службы организации CRM.

_orgService = new OrganizationService(connection) 

Шаг 4.3 — Создает новый объект сущности Account и устанавливает его Name, 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, шаг 4_4

Шаг 4.5 — После создания учетной записи служба извлекает запись из 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 — После установки обновленного значения записи обновите запись обратно в базу данных CRM, используя метод веб-службы Update.

_orgService.Update(retrievedAccount); 

Если вы откроете запись в CRM, вы увидите, что эти значения обновлены там.

Пример веб-службы Mscrm, шаг 4_7

Шаг 4.8. Наконец, удалите запись, используя метод веб-сервиса Delete.

_orgService.Delete(Account.EntityLogicalName, _accountId); 

Если вы теперь обновите ту же запись в CRM, вы увидите, что запись больше не доступна, так как она уже удалена.

Пример веб-службы Mscrm, шаг 4_8

Заключение

В этой главе мы рассмотрели две важные веб-службы, предоставляемые CRM, и рабочий пример того, как эти веб-службы можно использовать из внешнего приложения для выполнения различных операций CRUD.