แชร์ผ่าน


สร้างการกระทําของคุณเอง

คุณสามารถขยายฟังก์ชันการทํางานของ Dynamics 365 Customer Engagement (on-premises) ได้ด้วยการสร้างข้อความแบบกําหนดเองที่เรียกว่าการดําเนินการ การดําเนินการเหล่านี้จะมีคลาสคําขอ/การตอบกลับที่เกี่ยวข้อง และการดําเนินการ Web API จะถูกสร้างขึ้น โดยทั่วไปการดําเนินการจะใช้เพื่อเพิ่มฟังก์ชันเฉพาะโดเมนใหม่ให้กับบริการเว็บขององค์กร หรือเพื่อรวมคําขอข้อความบริการเว็บขององค์กรหลายรายการไว้ในคําขอเดียว ตัวอย่างเช่น ในศูนย์บริการฝ่ายสนับสนุน คุณอาจต้องการรวมข้อความ สร้าง มอบหมาย และ ตั้งค่าสถานะ เป็นข้อความ ยกระดับ ใหม่ข้อความเดียว

ตรรกะทางธุรกิจของการดําเนินการถูกนําไปใช้โดยใช้เวิร์กโฟลว์ เมื่อคุณสร้างการดําเนินการ เวิร์กโฟลว์แบบเรียลไทม์ที่เกี่ยวข้องจะถูกลงทะเบียนโดยอัตโนมัติเพื่อดําเนินการในขั้นตอนที่ 30 (การดําเนินการหลัก) ของไปป์ไลน์การดําเนินการ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับเวิร์กโฟลว์แบบเรียลไทม์ โปรดดู ชนิดเวิร์กโฟลว์

ในขณะที่การดําเนินการได้รับการสนับสนุนทั้งใน Dynamics 365 for Customer Engagement การสร้างการดําเนินการในโค้ด (โดยใช้ XAML) ได้รับการสนับสนุนโดยการปรับใช้ภายในองค์กรและ IFD เท่านั้น ลูกค้าออนไลน์ต้องสร้างการดําเนินการแบบโต้ตอบในเว็บแอปพลิเคชัน

 

เกี่ยวกับคําจํากัดความของการดําเนินการ

การดำเนินการถูกกำหนดโดยใช้บันทึกเอนทิตี Workflow คล้ายกับเวิร์กโฟลว์แบบเรียลไทม์ ประเด็นสําคัญบางประการของการกระทําคืออะไรและทํางานอย่างไรอยู่ในรายการต่อไปนี้:

  • สามารถเชื่อมโยงกับเอนทิตีเดียวหรือเป็นส่วนกลาง (ไม่เชื่อมโยงกับเอนทิตีใดเอนทิตีหนึ่ง)

  • ดำเนินการในขั้นตอนที่ 30 ของการดำเนินงานหลักในสายการประมวลผลเหตุการณ์

  • รองรับการเรียกใช้ปลั๊กอินที่ลงทะเบียนในขั้นตอนก่อนดําเนินการและหลังการดําเนินการของไปป์ไลน์การดําเนินการเหตุการณ์

  • สามารถลงทะเบียนปลั๊กอินในขั้นตอนก่อนการทํางานหรือหลังการทํางานได้เฉพาะเมื่อสถานะการดําเนินการเป็น เปิดใช้งาน

  • พร้อมใช้งานผ่าน Web API หรือเอ็นด์พอยต์ organization.svc และ organization.svc/web

  • สามารถดําเนินการได้โดยใช้ทรัพยากรบนเว็บ JavaScript ข้อมูลเพิ่มเติม: ดําเนินการการดําเนินการโดยใช้ทรัพยากรบนเว็บ JavaScript

  • ทํางานภายใต้บริบทความปลอดภัยของผู้ใช้ที่โทรเสมอ

  • ไม่สามารถลบบันทึกได้เมื่อยังมีขั้นตอนการทำงานของปลั๊กอินที่ลงทะเบียนอยู่ในปฏิบัติการ

  • สามารถเลือกเข้าร่วมในธุรกรรมฐานข้อมูลปัจจุบันผ่านการตั้งค่าการกําหนดค่า

  • ไม่รองรับขอบเขตที่การดําเนินการถูกจํากัดไว้เฉพาะผู้ใช้ หน่วยธุรกิจ หรือองค์กร การดําเนินการจะดําเนินการในขอบเขตขององค์กรเสมอ

  • รองรับอาร์กิวเมนต์อินพุตและเอาต์พุต

  • รองรับการตรวจสอบการเปลี่ยนแปลงข้อมูล

  • ไม่รองรับไคลเอ็นต์ออฟไลน์

  • สามารถเรียกใช้โดยการเรียกใช้เมธอดบริการเว็บ

  • สามารถเรียกใช้ได้โดยตรงจากเวิร์กโฟลว์

จำเป็นต้องมีสิทธิ์

จําเป็นต้องมีสิทธิ์ด้านความปลอดภัยที่ชื่อ เปิดใช้งานกระบวนการแบบเรียลไทม์ (prvActivateSynchronousWorkflow) เพื่อเปิดใช้งานเวิร์กโฟลว์แบบเรียลไทม์ของการดําเนินการเพื่อให้สามารถดําเนินการได้ นี่เป็นการเพิ่มเติมจากสิทธิ์ที่จําเป็นในการสร้างเวิร์กโฟลว์

สร้างการดําเนินการโดยใช้โค้ด

โดยปกติ การดําเนินการจะถูกนําไปใช้โดยตัวกําหนดค่าโดยใช้ตัวออกแบบเวิร์กโฟลว์แบบโต้ตอบของเว็บแอปพลิเคชัน อย่างไรก็ตาม นักพัฒนาสามารถใช้การดําเนินการโดยใช้การเรียก SDK และปรับใช้กับเซิร์ฟเวอร์ภายในองค์กรหรือ IFD ได้หากต้องการ

แอตทริบิวต์เอนทิตีเวิร์กโฟลว์ที่ใช้สําหรับการดําเนินการจะอธิบายไว้ในตารางต่อไปนี้ โค้ดตัวอย่างสําหรับเวิร์กโฟลว์แบบเรียลไทม์สามารถพบได้ในหัวข้อ สร้างเวิร์กโฟลว์แบบเรียลไทม์ในโค้ด

แอตทริบิวต์เวิร์กโฟล คำอธิบาย
Category ตั้งค่าเป็น WorkflowCategory.CustomOperation.
SyncWorkflowLogOnError เมื่อข้อผิดพลาด trueจะถูกบันทึกลงใน ProcessSession ระเบียน ซึ่งแตกต่างจากเวิร์กโฟลว์แบบอะซิงโครนัส การดําเนินการเวิร์กโฟลว์แบบเรียลไทม์จะไม่ถูกบันทึกลงใน System Job เรกคอร์ด
Mode ไม่ใช้
IsTransacted ตั้งค่าเป็น true ถ้าการกระทําควรมีส่วนร่วมในธุรกรรมฐานข้อมูล มิฉะนั้น false. ค่าเริ่มต้นเป็น true
UniqueName ชื่อเฉพาะสำหรับกิจกรรม ชื่อประกอบด้วยคํานําหน้าผู้เผยแพร่โฆษณา + "_" + ชื่อที่ไม่ซ้ํากัน
Xaml ตั้งค่าเป็นโค้ด XAML ที่กําหนดเวิร์กโฟลว์แบบเรียลไทม์ของการดําเนินการของคุณ ไม่มีวิธีที่จะอ้างถึงเวิร์กโฟลว์แบบเรียลไทม์อื่นที่มีอยู่

เพิ่มอาร์กิวเมนต์อินพุตและเอาต์พุต

การดําเนินการสนับสนุนอาร์กิวเมนต์อินพุตและเอาต์พุตที่สามารถเพิ่มลงในเวิร์กโฟลว์โดยใช้ชนิด DynamicActivityProperty เมื่อคุณเพิ่มอาร์กิวเมนต์เหล่านี้ลงในเวิร์กโฟลว์ของแอคชัน อาร์กิวเมนต์เหล่านี้จะกลายเป็นคุณสมบัติในคลาสการร้องขอข้อความและการตอบกลับที่เชื่อมโยงกับแอ็คชันนั้น ตัวอย่างเช่น ตัวอย่างต่อไปนี้แสดงโค้ด C# และ XAML สําหรับอาร์กิวเมนต์อินพุตสองอาร์กิวเมนต์และอาร์กิวเมนต์เอาต์พุตหนึ่งอาร์กิวเมนต์

DynamicActivityProperty inputProperty1 = new DynamicActivityProperty     { Name = "Subject", Type = typeof(InArgument<string>) };  
DynamicActivityProperty inputProperty2 = new DynamicActivityProperty     { Name = "EntityCollection", Type = typeof(InArgument<EntityCollection>) };  
DynamicActivityProperty outputProperty1 = new DynamicActivityProperty     { Name = "Output", Type = typeof(OutArgument<string>) };  
  
inputProperty1.Attributes.Add(new ArgumentRequiredAttribute(true));  
inputProperty1.Attributes.Add(new ArgumentDescriptionAttribute("The subject"));  
inputProperty1.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Input));  
  
inputProperty2.Attributes.Add(new ArgumentRequiredAttribute(false));  
inputProperty2.Attributes.Add(new ArgumentDescriptionAttribute("The entity collection"));  
inputProperty2.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Input));  
  
outputProperty1.Attributes.Add(new ArgumentRequiredAttribute(false));  
outputProperty1.Attributes.Add(new ArgumentDescriptionAttribute("The output"));  
outputProperty1.Attributes.Add(new ArgumentDirectionAttribute(Microsoft.Xrm.Sdk.Workflow.ArgumentDirection.Output));  
<x:Property Name="Subject"  
            Type="InArgument(x:String)">  
 <x:Property.Attributes>  
  <mxsw:ArgumentRequiredAttribute Value="True" />  
  <mxsw:ArgumentTargetAttribute Value="False" />  
  <mxsw:ArgumentDescriptionAttribute Value="The subject " />  
  <mxsw:ArgumentDirectionAttribute Value="Input" />  
  <mxsw:ArgumentEntityAttribute Value="" />  
 </x:Property.Attributes>  
</x:Property>  
<x:Property Name="EntityCollection"  
            Type="InArgument(mxs:EntityCollection)">  
 <x:Property.Attributes>  
  <mxsw:ArgumentRequiredAttribute Value="False" />  
  <mxsw:ArgumentTargetAttribute Value="False" />  
  <mxsw:ArgumentDescriptionAttribute Value="The entity collection" />  
  <mxsw:ArgumentDirectionAttribute Value="Input" />  
  <mxsw:ArgumentEntityAttribute Value="" />  
 </x:Property.Attributes>  
</x:Property>  
<x:Property Name="Output"  
            Type="OutArgument(x:String)">  
 <x:Property.Attributes>  
  <mxsw:ArgumentRequiredAttribute Value="False" />  
  <mxsw:ArgumentTargetAttribute Value="False" />  
  <mxsw:ArgumentDescriptionAttribute Value="The output" />  
  <mxsw:ArgumentDirectionAttribute Value="Output" />  
  <mxsw:ArgumentEntityAttribute Value="" />  
 </x:Property.Attributes>  
</x:Property>  

ชื่อที่ใช้สําหรับคุณสมบัติควรสอดคล้องกับชื่ออาร์กิวเมนต์ เนื่องจากการสร้างโค้ดจะกําหนดชื่อเหล่านี้เป็นคุณสมบัติคําขอหรือการตอบกลับ

ชนิดอาร์กิวเมนต์ที่รองรับสําหรับอาร์กิวเมนต์อินพุตและเอาต์พุตจะแสดงในตารางต่อไปนี้

ประเภท .NET ประเภทอาร์กิวเมนต์
System.Int32 Integer
ระบบ.สตริง สตริง
EntityReference EntityReference
Entity เเอนทิตี
EntityCollection EntityCollection
System.DateTime DateTime
System.Double ลอย
ระบบทศนิยม ทศนิยม
Money Money
System.Boolean แบบบูลีน
OptionSetValue Picklist

แอตทริบิวต์อาร์กิวเมนต์ที่รองรับแสดงอยู่ในตารางต่อไปนี้

แอตทริบิวต์อาร์กิวเมนต์ คำอธิบาย
ArgumentRequiredAttribute ระบุว่าจําเป็นต้องใช้อาร์กิวเมนต์หรือไม่
ArgumentDirectionAttribute ระบุว่าทิศทางของอาร์กิวเมนต์เป็นอินพุตหรือเอาต์พุต
ArgumentDescriptionAttribute ระบุคําอธิบายสําหรับอาร์กิวเมนต์
ArgumentEntityAttribute ใช้ในกรณีที่คุณต้องการส่งผ่านเอนทิตี
ArgumentTargetAttribute แอตทริบิวต์นี้ถูกสร้างขึ้นหรือเพิ่มโดยอัตโนมัติ ชี้ไปยังเอนทิตีหลักที่เรียกใช้เวิร์กโฟลว์ แอตทริบิวต์นี้เป็นทางเลือกสําหรับการดําเนินการส่วนกลาง

บรรจุแพคเกจการดําเนินการสําหรับการกระจาย

เมื่อต้องการกระจายการดําเนินการของคุณเพื่อให้สามารถนําเข้าไปยังองค์กร Dynamics 365 Customer Engagement (on-premises) ให้เพิ่มการดําเนินการของคุณไปยังโซลูชัน Customer Engagement ทําได้อย่างง่ายดายโดยใช้เว็บแอปพลิเคชันโดยไปที่โซลูชันการปรับแต่ง>> คุณยังสามารถเขียนโค้ดเพื่อสร้างโซลูชันได้อีกด้วย สําหรับข้อมูลเพิ่มเติมเกี่ยวกับโซลูชัน โปรดดู แพคเกจและแจกจ่ายส่วนขยาย

สร้างชนิดที่ผูกไว้ก่อนสําหรับการดําเนินการ

เมื่อใช้เครื่องมือ CrmSvcUtil คุณสามารถสร้างคลาสคําขอและการตอบสนองสําหรับการดําเนินการของคุณเพื่อรวมไว้ในโค้ดแอปพลิเคชันของคุณ อย่างไรก็ตาม ก่อนที่คุณจะสร้างคลาสเหล่านี้ โปรดเปิดใช้งานการดําเนินการ

หากต้องการดาวน์โหลด CrmSvcUtil.exeโปรดดู เครื่องมือการพัฒนา Dataverse

ตัวอย่างต่อไปนี้แสดงรูปแบบสําหรับการเรียกใช้เครื่องมือจากบรรทัดคําสั่งสําหรับการติดตั้ง Customer Engagement ในสถานที่ คุณระบุค่าพารามิเตอร์สําหรับการติดตั้งของคุณ

CrmSvcUtil.exe /url:https://<serverName>/<organizationName>/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /domain:<domainName> /namespace:<outputNamespace> /serviceContextName:<serviceContextName> /generateActions  

ตัวอย่างต่อไปนี้แสดงรูปแบบสําหรับการเรียกใช้เครื่องมือจากบรรทัดคําสั่งด้วย Dynamics 365 for Customer Engagement คุณระบุค่าพารามิเตอร์ที่เหมาะสมกับบัญชีและเซิร์ฟเวอร์ของคุณ

CrmSvcUtil.exe /url:https://<organizationUrlName>.api.crm.dynamics.com/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /namespace:<outputNamespace> /serviceContextName:<serviceContextName> /generateActions  

สังเกตการใช้ /generateActions พารามิเตอร์ ข้อมูลเพิ่มเติม: สร้างคลาสเอนทิตีที่ถูกผูกไว้ก่อนด้วยเครื่องมือสร้างโค้ด (CrmSvcUtil.exe)

คุณสามารถใช้ประเภทข้อมูลที่ผูกมัดล่วงหน้า (Early-bound) หรือผูกมัดล่าช้า (Late-bound) ร่วมกับคลาสคำขอและการตอบกลับที่สร้างขึ้นสำหรับการดำเนินการของคุณ

ดําเนินการโดยใช้ Web API

การดําเนินการใหม่จะถูกสร้างขึ้นใน Web API เมื่อสร้าง ถ้าการกระทําถูกสร้างขึ้นในบริบทของเอนทิตี การดําเนินการนั้นจะถูกผูกไว้กับเอนทิตีนั้น มิฉะนั้นจะเป็นการกระทําที่ไม่มีขอบเขต ข้อมูลเพิ่มเติม: ใช้การดําเนินการ Web API

ดําเนินการโดยใช้ทรัพยากรบนเว็บ JavaScript

การดําเนินการสามารถดําเนินการได้โดยใช้ Web API เช่นเดียวกับการดําเนินการของระบบใดๆ ข้อมูลเพิ่มเติม: Xrm.WebApi.online.execute

ดําเนินการโดยใช้บริการขององค์กร

เมื่อต้องการดําเนินการโดยใช้บริการเว็บขององค์กรโดยใช้โค้ดที่มีการจัดการ ให้ทําตามขั้นตอนเหล่านี้

  1. รวมแฟ้มชนิดที่ผูกไว้ก่อนกําหนดที่คุณสร้างขึ้นโดยใช้เครื่องมือ CrmSvcUtil ในโครงการของโปรแกรมประยุกต์ของคุณ

  2. ในโค้ดแอปพลิเคชันของคุณ ให้สร้างอินสแตนซ์คําขอของการดําเนินการและเติมคุณสมบัติที่จําเป็น

  3. เรียกใช้ Execute โดยการส่งคําขอของคุณเป็นอาร์กิวเมนต์

    ก่อนที่คุณจะเรียกใช้โค้ดแอปพลิเคชัน ให้ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการดําเนินการแล้ว มิฉะนั้น คุณจะได้รับข้อผิดพลาดขณะรัน

ดําเนินการโดยใช้กระบวนการ

คุณสามารถดําเนินการจากเวิร์กโฟลว์ กล่องโต้ตอบ หรือการดําเนินการกระบวนการอื่นๆ การดําเนินการแบบกําหนดเองที่เปิดใช้งานจะพร้อมใช้งานสําหรับกระบวนการโดยการเลือกรายการ ดําเนินการ ในดรอปดาวน์ เพิ่มขั้นตอน ของฟอร์มกระบวนการเว็บแอปพลิเคชัน หลังจากเพิ่มขั้นตอนลงในกระบวนการแล้ว คุณสามารถเลือกการดําเนินการแบบกําหนดเองใหม่ (หรือการดําเนินการใดๆ ) จากรายการ การดําเนินการที่ ให้ไว้ในขั้นตอนได้ เลือก ตั้งค่าคุณสมบัติ ในขั้นตอนเพื่อระบุพารามิเตอร์อินพุตใดๆ ที่การดําเนินการแบบกําหนดเองของคุณต้องการ

หมายเหตุ

ถ้าการดําเนินการแบบกําหนดเองมีชนิดพารามิเตอร์ที่ไม่รองรับ เช่น รายการเลือก, เอนทิตี หรือคอลเลกชันเอนทิตี การดําเนินการแบบกําหนดเองจะไม่แสดงในรายการ การดําเนินการ

ความสามารถในการดําเนินการจากกระบวนการถูกนํามาใช้กับ Dynamics CRM Online 2015 Update 1

การตรวจสอบแพลตฟอร์มที่มีอยู่ Depth ช่วยให้แน่ใจว่าจะไม่เกิดลูปที่ไม่มีที่สิ้นสุด สําหรับข้อมูลเพิ่มเติมเกี่ยวกับขีดจํากัดความลึก โปรดดูMaxDepth

ระวังการกระทําที่ใช้เวลานานจนเสร็จสิ้น

หากขั้นตอนใดขั้นตอนหนึ่งในเวิร์กโฟลว์แบบเรียลไทม์ของการดําเนินการเป็นกิจกรรมเวิร์กโฟลว์แบบกําหนดเอง กิจกรรมเวิร์กโฟลว์แบบกําหนดเองนั้นจะถูกดําเนินการภายในสภาพแวดล้อมรันไทม์ Sandbox ที่แยกจากกัน และจะอยู่ภายใต้ขีดจํากัดการหมดเวลาสองนาที คล้ายกับวิธีการจัดการปลั๊กอินแบบแซนด์บ็อกซ์ อย่างไรก็ตาม ไม่มีข้อจํากัดเกี่ยวกับระยะเวลาโดยรวมที่การดําเนินการสามารถทําได้ นอกจากนี้ ถ้ามีการดำเนินการที่เข้าร่วมในธุรกรรม ซึ่งได้เปิดใช้งานการย้อนกลับ เวลาหมดอายุของ SQL Server จะถูกนำไปใช้

เคล็ดลับ

คําแนะนําแนวทางปฏิบัติที่ดีที่สุดคือการดําเนินการที่ทํางานเป็นเวลานานควรดําเนินการนอก Dynamics 365 Customer Engagement (on-premises) โดยใช้กระบวนการแบบอะซิงโครนัสหรือกระบวนการเบื้องหลัง .NET

ดูเพิ่มเติม

สร้างเวิร์กโฟลว์แบบเรียลไทม์
ใช้กล่องโต้ตอบสําหรับกระบวนการที่แนะนํา
ไปป์ไลน์การดําเนินการเหตุการณ์
เขียนเวิร์กโฟลว์เพื่อทําให้กระบวนการทางธุรกิจเป็นแบบอัตโนมัติ
ปรับแต่งระบบของคุณ