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.