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 มีแปดวิธีที่ช่วยให้คุณสามารถดำเนินการทั่วไปทั้งหมดบนระบบและเอนทิตีแบบกำหนดเองตลอดจนข้อมูลเมตาขององค์กร
ซีเนียร์ No | วิธีการและคำอธิบาย |
---|---|
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 ในตัวอย่างนี้เราจะสร้างเรกคอร์ดบัญชีใหม่อัปเดตและสุดท้ายลบโดยใช้ CRMIOrganizationService บริการเว็บ.
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 ไฟล์ในโครงการนี้และวิธีการรันที่อยู่ภายใน
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 โค้ดจะสร้างอินสแตนซ์ขององค์กรก่อนจากนั้นจึงสร้างเรกคอร์ดบัญชีอัปเดตเรกคอร์ดที่สร้างขึ้นจากนั้นจึงลบออกในที่สุด ให้เราดูส่วนประกอบที่สำคัญของรหัสนี้ หากต้องการดูการเปลี่ยนแปลงขณะเดินทางใน 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 - สร้างออบเจ็กต์เอนทิตีบัญชีใหม่และตั้งชื่อ 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 - สร้างบันทึกใหม่โดยใช้วิธีการสร้างบริการองค์กร
_accountId = _orgService.Create(account);
หากคุณไปที่ CRM คุณจะเห็นบันทึกบัญชีที่สร้างขึ้นใหม่
Step 4.5 - เมื่อสร้างบัญชีแล้วบริการจะดึงข้อมูลกลับจาก CRM โดยใช้วิธีดึงข้อมูลเว็บเซอร์วิส
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 ต่างๆ