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 ต่างๆ