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 thức web để thực hiện các thao tác dữ liệu kinh doanh phổ biến như tạo, xóa, cập nhật và tìm trong CRM.
Xem xét các tình huống sau –
- Bạn có một ứng dụng .NET bên ngoài cần nói chuyện với CRM. Ví dụ: bạn có thể muốn chèn bản ghi Người liên hệ vào 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 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 do CRM cung cấp để 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 từng 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.dll và Microsoft.Crm.Sdk.Proxy.dll . Bạn có thể tìm thấy các tập hợp này trong gói SDK CRM bên trong thư mục Thùng rác .
Microsoft.Xrm.Sdk.dll
Phần này xác định các phương thức và loại xRM cốt lõi, bao gồm các lớp proxy để giúp kết nối với Microsoft Dynamics CRM đơn giản hơn, các phương thức xác thực và hợp đồng dịch vụ.
Microsoft.Crm.Sdk.Proxy.dll
Phần này xác định các yêu cầu và phản hồi cho các thông báo 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 của tổ chức. Sau đây là các không gian tên được hỗ trợ bởi hai hợp 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. Bạn có thể tìm thấy danh sách đầy đủ các thông báo được chúng hỗ trợ trong các liên kết sau –
Tin nhắn xRM được hỗ trợ − https://msdn.microsoft.com/en-us/library/gg334698.aspx
Tin nhắn CRM được hỗ trợ − https://msdn.microsoft.com/en-us/library/gg309482.aspx
Phương thức dịch vụ web IOrganizationService
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.
Sơ Không | Phương pháp & Mô tả |
1 | IOrganizationService.Create Tạo một bản ghi. |
2 | IOrganizationService.Update Cập nhật một bản ghi hiện có. |
3 | IOrganizationService. Lấy lại Truy xuất một bản ghi. |
4 | IOrganizationService. Lấy Nhiều Truy xuất một bộ sưu tập các bản ghi. |
5 | IOrganizationService. Xóa bỏ Xóa một bản ghi. |
6 | IOrganizationService. Kết hợp Tạo liên kết giữa các bản ghi. |
7 | IOrganizationService.Disassociate Xóa một liên kết giữa các bản ghi. |
số 8 | IOrganizationService.Execute Được sử dụng để xử lý bản ghi 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 CRM SDK 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 và cuối cùng xóa nó bằng dịch vụ web CRM IOrganizationService .
Bước 1 – Mở thư mục mà bạn đã giải nén CRM SDK. 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
Bước 2 – Chúng ta sẽ khám phá dự án QuickStart với Kết nối Đơn giản hóa . Mở app.config trong dự án này. Theo mặc định, phần connectionStrings trong tệp này sẽ được nhận xét.
Từ đây, 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 CRM trực tuyến nên bạn sẽ phải đề cập đến URL đó.
Tên người dùng − Tên người dùng CRM Online của bạn.
Mật khẩu – Mật khẩu CRM Online của bạn.
Bước 3 – Mở tệp SimplifiedConnection.cs 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;
}
}
Bước 4 – Phương pháp này về cơ bản thể hiện tất cả các hoạt động CRUD bằng dịch vụ web CRM. Trước tiên, mã này tạo một phiên bản tổ chức, sau đó tạo bản ghi Tài khoản, cập nhật bản ghi đã tạo và cuối cùng xóa bản ghi đó. 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 đang diễn ra 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 tôi thảo luận bên dưới) và đồng thời xem các thay đổi trong CRM.
Bước 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 trong Bước 2 .
Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);
Bước 4.2 – Nhận phiên bản proxy của dịch vụ web tổ chức CRM.
_orgService = new OrganizationService(connection)
Bước 4.3 – Tạo một đố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 của nó.
Account account = new Account{Name = "Fifth Coffee"};
account.AccountCategoryCode = new OptionSetValue(
(int)AccountAccountCategoryCode.P referredCustomer);
account.CustomerTypeCode = new OptionSetValue(
(int)AccountCustomerTypeCode.Investor);
Bước 4.4 – Tạo bản ghi mới bằng phương thức Tạo của dịch vụ tổ chức.
_accountId = _orgService.Create(account);
Nếu đ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.
Bước 4.5 – Khi tài khoản được tạo, dịch vụ sẽ truy xuất 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);
Bước 4.6 – Khi bạn đã truy xuất bản ghi, 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;
Bước 4.7 – Sau khi đặt 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 mở bản ghi trong CRM, bạn sẽ thấy những giá trị này được cập nhật ở đó.
Bước 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 nữa vì nó đã bị xóa.
Phần kết luận
Trong chương này, chúng ta đã xử lý 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.