ปลั๊กอิน low-code ตัวอย่างใน Dataverse (พรีวิว)
[หัวข้อนี้คือเอกสารรุ่นก่อนวางจำหน่าย และอาจจะมีการเปลี่ยนแปลงในอนาคต]
เป้าหมายของปลั๊กอินตัวอย่างเหล่านี้คือช่วยให้คุณเริ่มต้นใช้งานโดยการรวมเข้ากับแอปของคุณ คุณจะเข้าใจประสบการณ์การสร้างรวมถึงการสร้างAPI แบบกำหนดเองของ Microsoft Dataverse ที่สนับสนุนโดยนิพจน์ Power Fx ซึ่งสามารถทริกเกอร์การดำเนินการภายในหรือภายนอก Dataverse ได้
ข้อสำคัญ
- นี่คือคุณลักษณะพรีวิว
- คุณลักษณะการแสดงตัวอย่างไม่ได้มีไว้สำหรับการนำไปใช้งานจริง และอาจมีการจำกัดฟังก์ชันการทำงาน คุณลักษณะเหล่านี้สามารถใช้ได้ก่อนการเปิดตัวอย่างเป็นทางการ เพื่อให้ลูกค้าสามารถเข้าใช้งานได้ก่อนเวลาและให้ข้อคิดเห็น
ข้อกำหนดเบื้องต้น
หากต้องการใช้หนึ่งในปลั๊กอินตัวอย่างสำหรับเหตุการณ์ข้อมูลที่แอป Dataverse Accelerator ต้องติดตั้งในสภาพแวดล้อม ข้อมูลเพิ่มเติม: ข้อกำหนดเบื้องต้นสำหรับการสร้างปลั๊กอิน low-code
หมายเหตุ
เทมเพลตอีเมลใช้ได้เฉพาะกับบางตารางเท่านั้น ข้อมูลเพิ่มเติม: สร้างเทมเพลตสำหรับอีเมล
ส่งคืนค่าที่ไม่ติดลบ
ตัวอย่างนี้ใช้ ฟังก์ชัน Abs() เพื่อส่งคืนค่าที่ไม่ใช่ค่าลบของอาร์กิวเมนต์ ถ้าจำนวนเป็นลบ Abs
จะส่งกลับค่าเทียบเท่าที่เป็นบวก
เล่นแอป Dataverse Accelerator บนแถบคำสั่ง เลือก การดำเนินการใหม่ > ปลั๊กอินแบบทันที
ระบุชื่อที่แสดง เช่น ชื่อสูตร และคำอธิบาย
สร้างพารามิเตอร์
Out
เพื่อตรวจสอบลักษณะการทำงานที่คาดหวังที่เหมาะสม เช่น สตริง เลือกใช้พารามิเตอร์อินพุตเพื่อทำให้การทดสอบง่ายขึ้น ซึ่งเหมาะสมกับสูตรในตัวแก้ไขสูตร ให้รวมพารามิเตอร์
Out
ไว้ในวงเล็บปีกกา:{Out: "" }
ป้อนนิพจน์ที่ทดสอบสูตร:
- ตรวจสอบว่า IntelliSense ยอมรับสูตร (ข้อความเปลี่ยนเป็นสีน้ำเงินอ่อน)
- ใช้นิพจน์ที่ให้ผลลัพธ์เพื่อช่วยตรวจสอบผลลัพธ์ ตัวอย่างเช่น
{Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 ) }
เลือก ถัดไป จากนั้น เลือก บันทึก
เลือก ทดสอบ เพื่อทดสอบสูตร ใช้พารามิเตอร์เอาต์พุตเพื่อตรวจสอบความถูกต้องของผลลัพธ์
การตรวจสอบความถูกต้องของอินพุตและข้อผิดพลาดที่กำหนดเอง
การตรวจหารายการซ้ำ
ใช้การตรวจสอบความถูกต้องของอินพุตฝั่งเซิร์ฟเวอร์ เช่น การตรวจหาข้อผิดพลาดซ้ำ ซึ่งจะส่งข้อความแสดงข้อผิดพลาดที่กำหนดเอง
- เล่นแอป Dataverse Accelerator บนแถบคำสั่ง เลือก การดำเนินการใหม่ > ปลั๊กอินแบบอัตโนมัติ
- ในกล่อง ชื่อ ให้ป้อน การตรวจสอบรายการซ้ำ
- สำหรับ ตาราง เลือก ผู้ติดต่อ
- สำหรับ เรียกใช้ปลั๊กอินนี้เมื่อมีแถวเป็น เลือก สร้าง
- ในกล่อง สูตร ให้ป้อนสูตรนี้:
If( !IsBlank(LookUp([@Contacts],'Last Name'=ThisRecord.'Last Name' && 'First Name'=ThisRecord.'First Name')),
Error("You have existing contacts with the same first name and last name")
)
- เลือก บันทึก
ทดสอบปลั๊กอิน
- หากต้องการทดสอบปลั๊กอิน ให้สร้างแอปพื้นที่ทำงานโดยใช้ตารางผู้ติดต่อโดยทำตามขั้นตอนที่นี่: ระบุตาราง
- สร้างแถวผู้ติดต่อ
- สร้างผู้ติดต่อรายอื่นโดยใช้ชื่อเดียวกับในขั้นตอนก่อนหน้า
- ข้อความจะปรากฏขึ้นเพื่อระบุว่าพบเรกคอร์ดที่ซ้ำกัน เลือก ละเว้นและบันทึก บนพร้อมท์ข้อความแสดงข้อผิดพลาด
ข้อความแสดงข้อผิดพลาดที่กำหนดเองนี้จะแสดง: คุณมีผู้ติดต่อสองรายที่มีชื่อและนามสกุลเหมือนกัน
การตรวจสอบความถูกต้องของข้อมูล
แสดงชนิดของข้อผิดพลาดเฉพาะโดยใช้การแจงนับ ErrorKind
สร้างปลั๊กอินแบบอัตโนมัติใหม่
ระบุค่าต่อไปนี้:
- ชื่อ: การตรวจสอบความถูกต้องของอินพุต
- คำอธิบาย: ตรวจสอบวันที่ที่ถูกต้องและส่งข้อผิดพลาดหากไม่ถูกต้อง
- ตาราง: การนัดหมาย
- เรียกใช้ปลั๊กอินนี้เมื่อแถวคือ: อัปเดตแล้ว
ป้อนสูตรด้านล่าง:
If(ThisRecord.'Due Date' < Now(), Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" }) );
ภายใน ตัวเลือกขั้นสูง ตั้งค่า เวลาที่ควรเรียกใช้ เป็น ก่อนดำเนินการ; คุณต้องการเรียกใช้กฎนี้ก่อนที่จะบันทึกข้อมูลเพื่อป้องกันข้อมูลที่ไม่ถูกต้อง
เลือก บันทึก
ไปที่ ฟังก์ชัน Error() เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับข้อผิดพลาดที่กำหนดเอง
ส่งอีเมลตามเหตุการณ์ข้อมูล
ข้อกำหนดเบื้องต้น:
- การทำข้อมูลให้ตรงกันทางฝั่งเซิร์ฟเวอร์ถูกตั้งค่าสำหรับสภาพแวดล้อมของคุณ สำหรับข้อมูลเพิ่มเติม: ตั้งค่าการทำข้อมูลให้ตรงกันทางฝั่งเซิร์ฟเวอร์ของอีเมล การนัดหมาย ผู้ติดต่อ และงาน
- เทมเพลตอีเมล
ตัวอย่างเทมเพลตอีเมล
ต่อไปนี้คือตัวอย่างเทมเพลตอีเมลที่คุณสามารถสร้างสำหรับเหตุการณ์ข้อมูลตาม SenMail:
- ชนิดเทมเพลต: ส่วนกลาง
- ชื่อ: ขอบคุณสำหรับคำสั่งซื้อ
- คำอธิบาย: ใช้เทมเพลตนี้เพื่อขอบคุณลูกค้าที่สั่งซื้อกับคุณ
- เรื่อง:
Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
- เนื้อความ: ใช้โค้ดนี้
Hello {!Sales Order:First Name;},
Order Type: {! Sales Order: Order Type;},
Location Type: {! Sales Order: Location Type;},
Address1: {! Sales Order: Address 1;},
Address2: {! Sales Order: Address 2;},
Preferred Service Start Date 1: {! Sales Order: Preferred Service Start Date;},
Next Step- We take upto 48 hrs to schedule an in-person and will notify you as soon as we have a In-person Technician allocated at your site. For any questions, please contact us at 1-800-CON-SOLAR
Yours Sincerely,
Contoso Sales
สร้างปลั๊กอินแบบอัตโนมัติ
- เล่นแอป Dataverse Accelerator แล้วเลือก +ปลั๊กอินใหม่ ภายใต้ ปลั๊กอินแบบอัตโนมัติ
- ใส่ข้อมูลต่อไปนี้:
ชื่อ: SendEmailUponCreate
ตาราง: เลือกชื่อตารางตรรกะของใบสั่งขาย ซึ่งก็คือ SalesOrder เหตุการณ์นี้อิงจากตารางใบสั่งขาย
เรียกใช้ปลั๊กอินนี้เมื่อแถวคือ: สร้างแล้ว
สูตร: วางโค้ดด้านล่างลงในกล่อง สูตร สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน SendEmailFromTemplate ถึง การดำเนินการ SendEmailFromTemplate
XSendEmailFromTemplate( LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template', ThisRecord, LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email] )
- เลือก ขั้นสูง > หลังดำเนินการ
- เลือก บันทึก
ข้อความยืนยัน บันทึกปลั๊กอินเรียบร้อยแล้ว ปรากฏขึ้น
ส่งการแจ้งเตือนในแอปตามการดำเนินการทันที
การแจ้งเตือนในแอปช่วยให้ผู้สร้างกำหนดค่าการแจ้งเตือนตามบริบทและดำเนินการได้สำหรับผู้ใช้ในแอปแบบจำลอง
สร้างปลั๊กอิน low-code ที่ส่งการแจ้งเตือนในแอป
- เล่นแอป Dataverse Accelerator แล้วเลือก +ปลั๊กอินใหม่ ภายใต้ ปลั๊กอินทันที
- ป้อนข้อมูลต่อไปนี้ เลือก ถัดไป:
- ชื่อ: NotifyTechnican1
- คำอธิบาย: ปลั๊กอินแบบทันทีนี้จะแจ้งเตือนผู้ใช้แอป
- ในหน้า ข้อกำหนด ให้สร้างพารามิเตอร์อินพุตด้วยชนิดข้อมูลต่อไปนี้
- OrderID: สตริง
- TechnicianEmail: สตริง
- สูตร วางโค้ดต่อไปนี้ลงในกล่อง สูตร สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันนี้ ไปที่ การดำเนินการ SendAppNotification
XSendAppNotification( "New service", LookUp(Users,'Primary Email'=TechnicianEmail), "You have a new solar panel installation scheduled on "& LookUp('Scheduling Results','OrderId'=OrderID).'ServiceDate'&" in "& LookUp('Service Orders','Order Number'=OrderID).City &". Contact the coordinator with any questions.", [ XCreateSidePaneActionForEntity( "View order", OrderID, "Sales Order", "cr8b8_serviceorder1", LookUp('Service Orders','Order Number'=OrderID).'Service Order' ) ] )
- เลือก ถัดไป
- บนหน้า สรุป เลือก บันทึก
เรียกการดำเนินการทันทีสำหรับการแจ้งเตือนในแอป
- เลือกแอปพื้นที่ทำงาน จากนั้นเลือก แก้ไข บนแถบคำสั่ง (หรือ สร้างใหม่)
- เลือกหน้าจอในบานหน้าต่างนำทางด้านซ้าย หรือสร้างใหม่
- ในเมนู แทรก เพิ่ม ปุ่ม ลงในหน้าโดยใช้ ข้อความ แจ้งช่างเทคนิค
- เลือกปุ่ม และป้อนข้อมูลต่อไปนี้ในแถบสูตร fx โดยที่ DataCardValue17 เป็นคอลัมน์ที่มีรหัสคำสั่งซื้อและ DataCardValue15 เป็นคอลัมน์ที่มีที่อยู่อีเมลของช่างเทคนิค ในตัวอย่างนี้ มีการใช้แอปพื้นที่ทำงานชื่อ แอปใบสั่งบริการ
Environment.cr8b8_Notifytechnician1({ OrderID: DataCardValue17.Text, TechnicianEmail: DataCardValue15.Text }); Notify("The technician was notified!", NotificationType.Success, 2000);
- บันทึก และ เผยแพร่ การเปลี่ยนแปลงของคุณ
เมื่อเลือกการดำเนินการแจ้งช่างเทคนิคในแอป การแจ้งเตือนในแอปจะถูกส่งไปยังช่างเทคนิคที่ได้รับมอบหมายในใบสั่งบริการ การดำเนินการกับการแจ้งเตือนจะเปิดรายละเอียดใบสั่งบริการในบานหน้าต่างด้านข้าง
ตัวอย่างปลั๊กอินทันทีพร้อมตัวเชื่อมต่อ MSN Weather
ปลั๊กอินนี้ส่งคืนสภาพอากาศปัจจุบันสำหรับสถานที่เฉพาะโดยใช้ ตัวเชื่อมต่อ MSN Weather
ข้อกำหนดเบื้องต้น:
- ข้อกำหนดเบื้องต้นสำหรับการสร้างปลั๊กอิน low-code
- อนุญาตให้ใช้ตัวเชื่อมต่อ MSN Weather ในสภาพแวดล้อม
สร้างการอ้างอิงการเชื่อมต่อสำหรับ MSN Weather หากยังไม่สามารถใช้งานในสภาพแวดล้อม:
คัดลอกส่วนย่อย:
แก้ไขสูตรโดยใช้ IntelliSense และใช้คุณสมบัติการตอบสนองของตัวเชื่อมต่อตามต้องการ:
บันทึก
เคล็ดลับ
ใช้ฟังก์ชัน With() เพื่อบันทึกการตอบสนองทั้งหมดจากการดำเนินการเดียว หากคุณต้องการเข้าถึงคุณสมบัติที่แตกต่างกันที่การตอบสนองอาจมี ในตัวอย่างด้านล่าง มีพารามิเตอร์อินพุต Location
(สตริง) และพารามิเตอร์เอาต์พุต Out
(สตริง)
With({ /* Capture current weather response from connector */
c: new_MsnWeather.CurrentWeather( Location, "Imperial" ).responses.weather.current
},{ /* Return concatenated weather details */
Out: "Current temp: " & c.temp & " degrees. Feels like " & c.feels & " degrees. Wind speed is " & c.windSpd & " mph."
})
แนวทางปฏิบัติ
การจัดการข้อผิดพลาดวนซ้ำไม่สิ้นสุดในปลั๊กอิน low-code อัตโนมัติ
อย่าเขียนคำสั่งแพตช์บนปลั๊กอินอัตโนมัติเมื่อมีเหตุการณ์ 'อัปเดต' โดยที่แพตช์นั้นเกิดขึ้นบนตารางเดียวกันกับปลั๊กอิน เพราะอาจนำไปสู่การวนซ้ำไม่สิ้นสุดและการดำเนินการปลั๊กอินล้มเหลว
รูปแบบที่เป็นปัญหา: การใช้สูตร Patch()
ทริกเกอร์การอัปเดตอื่น
รูปแบบที่แนะนำ: ใช้สูตร Set()
แทนเพื่อหลีกเลี่ยงปัญหานี้