Microsoft Dynamics CRM - Веб-службы

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

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

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

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

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

Веб-служба IDiscoveryService

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

Веб-служба IOrganizationService

Эта веб-служба является основной веб-службой, используемой для доступа к данным и метаданным в 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

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

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

Supported xRM Messages - https://msdn.microsoft.com/en-us/library/gg334698.aspx

Supported CRM Messages - https://msdn.microsoft.com/en-us/library/gg309482.aspx

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

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

Старший Нет Метод и описание
1

IOrganizationService.Create

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

2

IOrganizationService.Update

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

3

IOrganizationService. Retrieve

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

4

IOrganizationService. RetrieveMultiple

Извлекает коллекцию записей.

5

IOrganizationService. Delete

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

6

IOrganizationService. Associate

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

7

IOrganizationService.Disassociate

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

8

IOrganizationService.Execute

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

Пример веб-службы

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

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

Step 2 - Мы будем исследовать QuickStart с участием Simplified Connectionпроект. открытоapp.configв этом проекте. По умолчаниюconnectionStrings раздел в этом файле будет прокомментирован.

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

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

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

Password - Ваш пароль CRM Online.

Step 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;
   }
}

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

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

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

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

_orgService = new OrganizationService(connection)

Step 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);

Step 4.4 - Создает новую запись, используя метод Create службы организации.

_accountId = _orgService.Create(account);

Если вы перейдете в CRM, вы увидите новую запись учетной записи.

Step 4.5 - После создания учетной записи служба извлекает запись из CRM, используя метод веб-службы Retrieve.

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

Step 4.6 - Когда у вас есть полученная запись, вы можете установить обновленное значение записи.

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

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

_orgService.Update(retrievedAccount);

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

Step 4.8 - Наконец, удалите запись с помощью метода удаления веб-службы.

_orgService.Delete(Account.EntityLogicalName, _accountId);

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

Заключение

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