เมื่อ Power Platform ต้องการความยืดหยุ่นระดับ Enterprise — C# Plugin คือกุญแจสำคัญ
Microsoft Power Platform เป็นเครื่องมือที่องค์กรทั่วโลกใช้ในการสร้างแอปพลิเคชันและระบบอัตโนมัติได้อย่างรวดเร็วผ่านแนวคิด Low-code/No-code อย่างไรก็ตาม เมื่อระบบต้องการตอบสนองตรรกะเชิงลึก การประมวลผลเฉพาะทาง หรือต้องจัดการข้อมูลที่ซับซ้อน โซลูชัน Low-code เพียงอย่างเดียวอาจไม่เพียงพอ
นี่จึงเป็นเหตุผลว่าทำไมการพัฒนา Custom Plugin ด้วยภาษา C# บน Microsoft Dataverse จึงเป็นแนวทางที่องค์กรควรให้ความสำคัญ
ข้อจำกัดของ Power Platform ที่คุณอาจเคยพบ
ถ้าคุณเคยสร้างแอป หรือสร้าง Workflow บน Power Platform มาก่อน คุณน่าจะเคยเจอข้อจำกัดที่น่าหงุดหงิดมาบ้าง งานบางอย่างที่ควรจะทำได้ง่ายๆ เช่น การสร้างบาร์โค้ดหรือ QR code, การแยกหรือรวมไฟล์ PDF, การแฮชหรือถอดรหัสสตริง, หรือการแปลงตัวเลขเป็นข้อความ กลับไม่สามารถทำได้โดยตรงในระบบ
ในสถานการณ์แบบนี้ หลายคนรวมถึงผมเอง มักจะต้องหันไปพึ่ง API หรือคอนเนกเตอร์จากภายนอก ซึ่งนั่นหมายถึงต้องจ่ายเพิ่มทั้งค่าบริการ Power Apps หรือ Power Automate Premium และค่าบริการจากผู้ให้บริการภายนอกอีกต่างหาก ซึ่งรวมๆ แล้วค่าใช้จ่ายก็สูงขึ้นอย่างรวดเร็ว ฟังดูไม่ยุติธรรมนักใช่ไหมครับ?
แต่ถ้าผมบอกคุณว่ามีวิธีจัดการทุกอย่างได้ภายใน Power Platform โดยไม่ต้องพึ่งพาโซลูชันจากภายนอกล่ะ? ใช่ครับ มันเป็นไปได้จริง!
แนวทางระดับมืออาชีพ: พัฒนา Custom Plugin ด้วย C# ภายใน Microsoft Dataverse
ขอแนะนำ Custom Plugins ฟีเจอร์ทรงพลังของ Microsoft Dataverse ที่เปิดโอกาสให้คุณขยายขีดความสามารถของแพลตฟอร์มด้วยโค้ด C# ที่เขียนเองได้อย่างอิสระ และเมื่อ deploy เสร็จแล้ว Plugin เหล่านี้สามารถถูกเรียกใช้งานได้ทั้งจาก Power Apps และ Power Automate ได้อย่างราบรื่น
มันคล้ายกับการใช้ API จากภายนอก แต่มีข้อได้เปรียบสำคัญมาก ทุกอย่างทำงานอยู่ภายในสภาพแวดล้อมของ Dataverse ของคุณเอง ซึ่งได้รับการรักษาความปลอดภัยภายใต้ Microsoft 365 tenant อย่างเต็มรูปแบบ
นั่นหมายความว่า ไม่ต้องกังวลเรื่องการส่งข้อมูลสำคัญขององค์กรไปยังบริการภายนอกที่ไม่รู้จักอีกต่อไป และที่ดีที่สุดคือ ไม่มีค่าใช้จ่ายเพิ่มเติม คุณจ่ายแค่ Power Apps หรือ Power Automate Premium เท่านั้น โดยไม่ต้องเสียเงินเพิ่มให้กับโซลูชันจากบุคคลที่สามอีกต่อไปครับ
เตรียมความพร้อมก่อนเริ่มพัฒนา Plugin
ก่อนที่เราจะเริ่มสร้าง Custom Plugin ได้ ต้องมีสิ่งต่อไปนี้ก่อน:
- สภาพแวดล้อม Power Platform ที่มี Dataverse
- บัญชีผู้ใช้ต้องมีบทบาทเป็น System Administrator หรือ System Customizer ในสภาพแวดล้อมนั้น
- ติดตั้ง Microsoft Power Platform CLI
- มี Plug-in Registration Tool (รวมมากับ Power Platform CLI แล้ว)
- ติดตั้ง Visual Studio (2019 ขึ้นไป)
- และแน่นอนว่าต้องมีพื้นฐาน C# บ้าง
ขอสารภาพตามตรงครับ ผมเองก็ไม่เคยเรียน C# อย่างจริงจังมาก่อน ผมพอเขียนโค้ดได้ แต่ C# ไม่ใช่ภาษาที่ผมใช้บ่อย
แต่โชคดีที่ตอนนี้เรามี AI ช่วยเขียนโค้ดได้ ไม่ว่าจะเป็น ChatGPT, Copilot, Gemini, Claude หรือผู้ช่วย AI ตัวอื่นๆ ที่คุณถนัด ก็พร้อมช่วยให้คุณเขียน C# ได้อย่างมั่นใจ
สร้าง Plugin ตัวแรกของคุณ
เอาล่ะครับ มาลุยกันทีละขั้นตอน ผมจะพาคุณสร้าง Plugin ตั้งแต่เริ่มต้น
จริงๆ แล้วมันมีหลายวิธีให้เลือก แต่ผมจะพาไปในวิธีที่ง่ายที่สุด วิธีที่คนไม่มีพื้นฐาน C# อย่างผมก็ทำได้
หมายเหตุ: คู่มือนี้จะไม่เจาะลึกเรื่อง syntax ของภาษา C# มากนัก จุดประสงค์หลักคือการสอนให้คุณสร้าง Custom Plugin สำหรับ Microsoft Dataverse ให้ได้สำเร็จครับ
ขั้นตอนการสร้าง Custom Plugin แบบละเอียด
ขั้นตอนที่ 1: ติดตั้ง Visual Studio
ดาวน์โหลดและติดตั้ง Visual Studio (แนะนำ 2019 ขึ้นไป) โดยต้องเลือก workload ชื่อว่า .NET desktop development ระหว่างติดตั้ง เพื่อให้มีเครื่องมือสำหรับสร้าง Plugin ในภายหลัง
ขั้นตอนที่ 2: สร้าง Plugin Project ด้วย Power Platform CLI
เปิด Command Prompt แล้วสร้างโฟลเดอร์ใหม่เพื่อเก็บโปรเจกต์ จากนั้นรันคำสั่ง:
pac plugin init --skip-signing
คำสั่งนี้จะสร้างไฟล์พื้นฐานของ Plugin (เช่น .csproj, Plugin1.cs, assembly key ฯลฯ)
ขั้นตอนที่ 3: เปิดโปรเจกต์ใน Visual Studio
เปิด Visual Studio แล้วเลือก “Open a project or solution”
แล้วเปิดไฟล์ .csproj ที่ CLI สร้างขึ้นมา
ขั้นตอนที่ 4: สร้างคลาสใหม่สำหรับ Plugin
สมมติว่าไฟล์ .cs หนึ่งไฟล์เท่ากับ Plugin หนึ่งตัว ดังนั้นเราจะสร้างคลาสใหม่ขึ้นมาหนึ่งคลาสเพื่อรองรับ Plugin ตัวนี้
- คลิกขวาที่ชื่อโปรเจกต์ → เลือก Add → เลือก New Item
- หน้าต่างจะปรากฏให้เลือกชนิดไฟล์ ให้เลือก “Class”
- ตั้งชื่อไฟล์เป็น GenerateBarcode.cs (หรือชื่อใดก็ได้ตามวัตถุประสงค์ของ Plugin)
เมื่อกด “Add” ระบบจะสร้างคลาสใหม่ขึ้นมาให้ พร้อมสำหรับเริ่มเขียนโค้ดในขั้นตอนต่อไป
public class GenerateBarcode : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
// Logic ในการสร้าง Barcode หรือ QR Code
}
}
คุณสามารถสร้างได้หลายคลาสในหนึ่งโปรเจกต์ หากมีหลาย Plugin ที่ต้องการลงทะเบียนแยกกัน
ขั้นตอนที่ 5: เขียนโค้ด C# สำหรับ Plugin
ต้องยอมรับตามตรงว่านี่คือขั้นตอนที่ยากที่สุดสำหรับผม เพราะอย่างที่บอกไปก่อนหน้านี้ ผมไม่มีพื้นฐาน C# มาก่อน และยังไม่รู้ด้วยซ้ำว่าควรเริ่มยังไงดี
โชคดีที่เรามีผู้ช่วย AI แบบ Generative AI อยู่ในมือ อย่างในกรณีนี้ ผมเลือกใช้ ChatGPT
สิ่งที่ต้องทำก็แค่ อธิบายให้ชัดเจนว่าเราต้องการให้ปลั๊กอินทำหน้าที่อะไร และอย่าลืมบอกไปด้วยว่า “โค้ดนี้เขียนเพื่อใช้ใน Dynamics 365 Custom Plugin” — บริบทตรงนี้สำคัญมาก เพราะจะช่วยให้ AI เข้าใจกรอบการทำงานที่เหมาะสม
เคล็ดลับ: คุณสามารถก๊อปโค้ดจากไฟล์ Plugin1.cs (ที่ถูกสร้างอัตโนมัติจาก CLI) ไปใส่ใน ChatGPT เพื่อให้ AI ใช้เป็นจุดเริ่มต้นในการเขียนโค้ดให้คุณก็ได้
ส่วนใหญ่แล้ว การเขียนโค้ดลักษณะนี้ เรามักต้องใช้ Library เพื่อไม่ต้องเขียนฟังก์ชันพื้นฐานซ้ำเอง เช่น ไลบรารีสำหรับสร้างบาร์โค้ด, ทำงานกับ PDF หรือจัดการรูปภาพ
หากโค้ดของคุณต้องพึ่งไลบรารีภายนอก ก็สามารถติดตั้งได้ง่าย ๆ ผ่าน NuGet Package Manager ที่มีให้ใน Visual Studio โดยไม่ต้องตั้งค่าซับซ้อนอะไรเพิ่มเติม
หลังจากติดตั้งไลบรารีที่จำเป็นและแก้ไขข้อผิดพลาด (ถ้ามี) เรียบร้อยแล้ว ก็พร้อมไปต่อยังขั้นตอนถัดไปได้เลย
หมายเหตุ: ขั้นตอนนี้อาจต้องอาศัยความรู้ด้านการเขียนโค้ดระดับหนึ่ง เพราะบางครั้งโค้ดจาก AI อาจใช้ไม่ได้จริงทันที ต้องมีการปรับแก้หรือ Debug เพิ่มเติมบ้างก่อนนำไปใช้จริง
ขั้นตอนที่ 6: ตรวจสอบ Input / Output Parameters
เหมือนกับการเรียกใช้งาน API ทั่วไป Custom Plugin ของคุณจะต้องมีทั้ง Input และ Output เพื่อรับค่าเข้าและส่งค่ากลับ
ถ้าคุณลองเปิดดูในโค้ด C# ที่เขียนไว้ จะเห็นว่า ตัวแปรสำหรับ Input และ Output ได้มีการกำหนดไว้เรียบร้อยแล้วในคลาสของ Plugin
สิ่งสำคัญคือ จดบันทึกให้ดีว่ามี Input และ Output อะไรบ้าง เพราะในขั้นตอนต่อไป คุณจะต้องใช้ข้อมูลนี้ตอนลงทะเบียน Custom API ใน Dataverse เพื่อให้ระบบรู้ว่าต้องรับอะไรเข้าไป และจะส่งค่ากลับมาแบบไหน
การกำหนด Input/Output อย่างถูกต้องตั้งแต่ตรงนี้ จะช่วยให้การเชื่อมต่อผ่าน Power Automate หรือ Power Apps ทำงานได้อย่างราบรื่นภายหลัง
ขั้นตอนที่ 7: Build Project เพื่อสร้าง Plugin Package
เมื่อคุณเขียนโค้ดเสร็จเรียบร้อยทุกอย่างแล้ว ขั้นตอนต่อไปก็คือการ Build โปรเจกต์ ซึ่งก็คือการนำซอร์สโค้ดทั้งหมดที่คุณเขียน มาคอมไพล์และรวมกันเป็น ไฟล์แพ็กเกจเดียว (single package file)
ผลลัพธ์ของการ Build จะได้ออกมาเป็นไฟล์นามสกุล .nupkg (NuGet Package)
คุณจะต้องใช้ไฟล์ .nupkg นี้ในขั้นตอนถัดไป เพื่อทำการนำ Plugin เข้าไปลงทะเบียนใช้งานใน Dataverse
ดังนั้นอย่าลืมตรวจสอบให้แน่ใจว่า Build ผ่านและไฟล์ .nupkg ถูกสร้างขึ้นในโฟลเดอร์ที่กำหนดไว้เรียบร้อยแล้ว
ขั้นตอนที่ 8: ลงทะเบียน Plugin บน Dataverse
รันคำสั่งต่อไปนี้เพื่อเปิด Plugin Registration Tool (PRT):
pac tool prt
ขั้นตอนที่ 9: สร้าง Custom API เพื่อเรียก Plugin
ขั้นตอนถัดไป เราจำเป็นต้องสร้างสิ่งที่เรียกว่า Custom API เพราะเราไม่สามารถเรียกใช้งานโค้ดในคลาส C# ได้โดยตรง
- ก่อนอื่น เราต้องผูก (bind) โค้ด C# เข้ากับ Custom API นี้ก่อน
- ให้คลิกที่เมนู ‘Register’ → ‘Register New Custom API’
- กรอกข้อมูลให้ครบถ้วน จากนั้นเลือก Assembly ที่เป็นแพ็กเกจของคุณ และเลือกชื่อคลาสสำหรับ Plugin
- หลังจากนั้น คุณจะต้องกำหนด Request Parameters ซึ่งหมายถึง ค่าที่รับเข้า (Input) และ Response Parameters ซึ่งหมายถึง ค่าที่ส่งกลับ (Output) ซึ่งทั้งสองส่วนนี้ต้องตรงกับที่คุณกำหนดไว้ในโค้ด
หากคุณต้องการจำกัดการเข้าถึง Custom API นี้ให้เฉพาะผู้ใช้งานบางกลุ่ม คุณสามารถใช้สิทธิ์ (Privileges) เพื่อควบคุมว่าใครสามารถเรียกใช้งาน API นี้ได้ [คลิกดูข้อมูลเพิ่มเติม]
สุดท้าย ให้คลิก ‘Register’ เพื่อดำเนินการลงทะเบียนให้เสร็จสมบูรณ์
ขั้นตอนที่ 10: ทดสอบ Plugin
ถึงเวลาในการทดสอบ Plugin แล้ว โดยคุณสามารถใช้ Power Automate เพื่อทดสอบได้ผ่าน action ที่ชื่อว่า ‘Perform an unbound action’ ซึ่งมาจาก Dataverse connector
คุณจะเห็นชื่อ Custom API ของคุณแสดงอยู่ในช่อง Action Name
ให้กรอกค่าข้อมูลที่จำเป็นในส่วน Input ตามที่คุณต้องการ
ผ่าน Power Automate
- ใช้ Action ชื่อ “Perform an unbound action”
- เลือก Custom API ที่คุณเพิ่งสร้าง
- กรอกค่าตาม Input Parameter
ในกรณีที่ใช้ Power Apps คุณสามารถเพิ่มตารางที่ชื่อว่า ‘Environment’ ลงในแอป แล้วใช้สูตร (formula) ตามภาพตัวอย่างด้านล่าง เพื่อเรียกใช้งาน Custom API ของคุณได้เช่นกัน
ผ่าน Power Apps
สร้าง table ‘Environment’ ชั่วคราวเพื่อเชื่อมกับ formula
เรียก API ผ่านฟังก์ชัน Power Fx เช่น:
Environment.RunCustomAPIName({ Text: "Hello World" })
สรุป: พลิกเกมการพัฒนา Power Platform ด้วย C# Custom Plugin
Custom Plugin คือเครื่องมือทรงพลังที่ทำให้ Power Platform กลายเป็นแพลตฟอร์มแบบ Full-code ได้ในทันที คุณสามารถประมวลผลข้อมูลซับซ้อนในระดับ backend ได้โดยไม่ต้องพึ่ง REST API จากภายนอก ลดทั้งค่าใช้จ่ายและความเสี่ยงด้านความปลอดภัย
สำหรับองค์กรที่ใช้งาน Quick ERP ร่วมกับ Microsoft Dataverse การใช้ Custom Plugin สามารถต่อยอดสู่ระบบ ERP อัจฉริยะ เช่น:
- การแปลง PO เป็น QR สำหรับคลังสินค้า
- การประมวลผลเลขที่ใบแจ้งหนี้
- การสร้างเอกสารแบบไดนามิกภายในระบบ
Quick ERP สนับสนุนการทำงานร่วมกับ Dataverse และสามารถใช้ Custom API เหล่านี้ร่วมกับโซลูชัน ERP ได้อย่างไร้รอยต่อ
แหล่งที่มา : PAWIT.PW
ก้าวเข้าสู่ Digital Business
ดูผลิตภัณฑ์ที่เกี่ยวข้องได้ที่นี่