Microsoft Dynamics CRM - Dịch vụ web

Microsoft Dynamics CRM cung cấp hai dịch vụ web quan trọng được sử dụng để truy cập CRM từ một ứng dụng bên ngoài và gọi các phương pháp web để thực hiện các hoạt động dữ liệu kinh doanh phổ biến như tạo, xóa, cập nhật và tìm kiếm trong CRM.

Hãy xem xét các tình huống sau:

  • Bạn có một ứng dụng .NET bên ngoài, ứng dụng này cần kết nối với CRM. Ví dụ: bạn có thể muốn chèn bản ghi Liên hệ trong CRM khi một khách hàng mới được đăng ký trong ứng dụng bên ngoài của bạn.

  • Hoặc có thể, bạn muốn tìm kiếm các bản ghi trong CRM và hiển thị kết quả tìm kiếm trong ứng dụng bên ngoài của mình.

Trong các tình huống như vậy, bạn có thể sử dụng các dịch vụ web được CRM hiển thị để sử dụng chúng trong ứng dụng của mình và thực hiện các thao tác tạo, xóa, cập nhật và tìm kiếm trong CRM.

Dịch vụ web IDiscoveryService

Dịch vụ web này trả về danh sách các tổ chức mà người dùng được chỉ định thuộc về và điểm cuối URL cho mỗi tổ chức.

Dịch vụ web IOrganizationService

Dịch vụ web này là dịch vụ web chính được sử dụng để truy cập dữ liệu và siêu dữ liệu trong CRM. IOrganizationService sử dụng hai tập hợp quan trọng:Microsoft.Xrm.Sdk.dllMicrosoft.Crm.Sdk.Proxy.dll. Các tập hợp này có thể được tìm thấy trong gói SDK CRM bên trongBin thư mục.

Microsoft.Xrm.Sdk.dll

Hợp ngữ này xác định các phương thức và kiểu xRM cốt lõi, bao gồm các lớp proxy để làm cho kết nối với Microsoft Dynamics CRM đơn giản hơn, các phương pháp xác thực và hợp đồng dịch vụ.

Microsoft.Crm.Sdk.Proxy.dll

Hợp ngữ này xác định các yêu cầu và phản hồi cho các thông điệp không phải cốt lõi cũng như các bảng liệt kê cần thiết để làm việc với dữ liệu tổ chức. Sau đây là các không gian tên được hỗ trợ bởi hai hội đồng này.

Mỗi tập hợp này hỗ trợ một số thông báo nhất định, sẽ được sử dụng để làm việc với dữ liệu được lưu trữ trong bất kỳ thực thể nào. Có thể tìm thấy danh sách đầy đủ các thông báo được họ hỗ trợ trong các liên kết sau:

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

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

Phương thức dịch vụ web IOrganizationService

Các IOrganizationService cung cấp tám phương pháp cho phép bạn thực hiện tất cả các hoạt động phổ biến trên hệ thống và các thực thể tùy chỉnh cũng như siêu dữ liệu của tổ chức.

Sr.No Phương pháp & Mô tả
1

IOrganizationService.Create

Tạo kỷ lục.

2

IOrganizationService.Update

Cập nhật bản ghi hiện có.

3

IOrganizationService. Retrieve

Truy xuất bản ghi.

4

IOrganizationService. RetrieveMultiple

Truy xuất một bộ sưu tập các bản ghi.

5

IOrganizationService. Delete

Xóa bản ghi.

6

IOrganizationService. Associate

Tạo liên kết giữa các bản ghi.

7

IOrganizationService.Disassociate

Xóa liên kết giữa các bản ghi.

số 8

IOrganizationService.Execute

Được sử dụng để xử lý hồ sơ thông thường cũng như xử lý chuyên biệt như giải quyết trường hợp, phát hiện trùng lặp, v.v.

Ví dụ về dịch vụ web

Để hiểu cách các dịch vụ web hoạt động trong CRM, chúng ta sẽ xem xét một ví dụ do SDK CRM cung cấp. Trong ví dụ này, chúng tôi sẽ tạo một bản ghi Tài khoản mới, cập nhật nó và cuối cùng xóa nó bằng cách sử dụng CRMIOrganizationService dịch vụ web.

Step 1- Mở thư mục mà bạn đã trích xuất SDK CRM. Bây giờ hãy mở giải pháp QuickStartCS.sln bằng cách duyệt đến vị trí sau: SDK \ SampleCode \ CS \ QuickStart

Step 2 - Chúng tôi sẽ khám phá QuickStart với Simplified Connectiondự án. Mởapp.configtrong dự án này. Theo mặc định,connectionStrings phần trong tệp này sẽ được bình luận.

Từ đó, bỏ ghi chú khóa chuỗi kết nối đầu tiên và chỉnh sửa ba chi tiết sau:

Url- Chỉ định URL của phiên bản CRM của bạn. Trong trường hợp của chúng tôi, vì chúng tôi đang sử dụng phiên bản trực tuyến của CRM, bạn sẽ phải đề cập đến URL đó.

Username - Tên người dùng CRM Online của bạn.

Password - Mật khẩu CRM Online của bạn.

Step 3 - Mở SimplifiedConnection.cs tệp trong dự án này và Runmethod bên trong nó.

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- Phương pháp này về cơ bản thể hiện tất cả các hoạt động CRUD sử dụng dịch vụ web CRM. Đầu tiên, đoạn mã tạo một cá thể tổ chức, sau đó tạo một bản ghi Tài khoản, cập nhật bản ghi đã tạo và cuối cùng xóa nó. Chúng ta hãy xem xét các thành phần quan trọng của mã này. Để xem các thay đổi khi di chuyển trong CRM khi mã này chạy, bạn có thể gỡ lỗi mã này từng bước (như chúng ta thảo luận bên dưới) và đồng thời xem các thay đổi trong CRM.

Step 4.1 - Thiết lập kết nối với tổ chức bằng cách sử dụng chuỗi kết nối mà chúng tôi đã sửa đổi Step 2.

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

Step 4.2 - Lấy một phiên bản proxy của dịch vụ web tổ chức CRM.

_orgService = new OrganizationService(connection)

Step 4.3 - Tạo đối tượng thực thể Tài khoản mới và đặt Tên, Mã danh mục tài khoản và Mã loại khách hàng.

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 - Tạo bản ghi mới bằng cách sử dụng phương pháp Tạo của dịch vụ tổ chức.

_accountId = _orgService.Create(account);

Nếu bạn điều hướng đến CRM, bạn sẽ thấy một bản ghi tài khoản mới được tạo.

Step 4.5 - Sau khi tài khoản được tạo, dịch vụ sẽ lấy lại bản ghi từ CRM bằng phương pháp Truy xuất dịch vụ web.

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

Step 4.6 - Khi bạn có bản ghi đã truy xuất, bạn có thể đặt giá trị cập nhật của bản ghi.

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

Step 4.7 - Sau khi thiết lập giá trị cập nhật của bản ghi, hãy cập nhật bản ghi trở lại cơ sở dữ liệu CRM bằng phương pháp Cập nhật dịch vụ web.

_orgService.Update(retrievedAccount);

Nếu bạn mở bản ghi trong CRM, bạn sẽ thấy các giá trị này được cập nhật ở đó.

Step 4.8 - Cuối cùng, xóa bản ghi bằng phương pháp Xóa dịch vụ web.

_orgService.Delete(Account.EntityLogicalName, _accountId);

Nếu bây giờ bạn làm mới cùng một bản ghi trong CRM, bạn sẽ thấy rằng bản ghi không còn khả dụng nữa vì nó đã bị xóa.

Phần kết luận

Trong chương này, chúng tôi đã đề cập đến hai dịch vụ web quan trọng do CRM cung cấp và một ví dụ hoạt động về cách các dịch vụ web này có thể được sử dụng từ một ứng dụng bên ngoài để thực hiện các hoạt động CRUD khác nhau.