Event Recorder สำหรับตรวจสอบ Event Subscriber ที่ถูกเรียกใช้งาน

Spread the love

Event Recorder สำหรับตรวจสอบ Event Subscriber ที่ถูกเรียกใช้งาน

สวัสดีครับ ช่วงนี้ขอเขียนบทความเกี่ยวกับ Technical ก่อนนะครับ บทความในวันนี้น่าจะพอช่วยแก้ปัญหาชวนปวดหัวของชาว Developer ที่พัฒนา Extension ให้กับ Dynamics 365 Business Central ด้วยภาษา AL ครับ นั่นก็คือ Event Recorder

Photo by cottonbro from Pexels

หากใครเคย Develop ในเวอร์ชั่นที่ยังเป็น Dynamics NAV อยู่ ยังไม่ใช่เรื่องยากอะไรในการเข้าไปแก้ไขการทำงานของ Base Code แต่พอมาเป็น Business Central ซึ่งไม่อนุญาตให้เราเข้าไป Hook Code ตรง ๆ ตาม Object ได้แล้ว แต่ต้องเขียน Code ด้วยโดยการ Extend Object เดิมหรือเขียนผ่าน Event Subscriber นั่นเอง

ปัญหาอยู่ตรงที่ แล้วเราจะรู้ได้อย่างไรว่า มี Event Subscriber อะไรให้บ้างเราเอามาใช้งานได้?

ภายในบทความนี้ผมจะขอแนะนำแนวทางในการไล่ Code เพื่อหา Event Subscriber มาใช้งานเพื่อให้เราสามารถทำงานต่อได้ โดยมี 3 วิธีด้วยกัน

1. C/SIDE

อันนี้เป็นวิธีแบบบ้าน ๆ เลยก็ว่าได้ และยังถือว่ามีประสิทธิภาพในระดับหนึ่ง สำหรับคนที่เคยทำ Dynamics NAV มาก่อน (ผมเองก็มักจะใช้วิธีนี้) นั้นก็คือเป็นตัว C/SIDE (Development Environment) ที่เป็น Business Central BC14 ขึ้นมาไล่โค้ดดู

event-recorder-business-central-1

เนื่องจากว่าใน Business Central BC14 นั้นยังไม่ใช่ Web Base 100% ยังสามารถใช้งานส่วนที่เป็น Application หรือ Role Trailer กับ C/SIDE ได้อยู่ ดังนั้นคนที่ชินกับการทำงานแบบเดิมอาจจะสะดวกในการไล่โค้ดจาก C/SIDE มากกว่า โดยสังเกตุจาก Function ที่มีคำว่า On เป็น Prefix เช่น OnBeforeSomething, OnAfterSomething.

event-recorder-business-central-2

แต่ข้อควรระวังคือ Event Subscriber นั้นจะไม่เป็นล่าสุด หากคุณกำลังพัฒนา Business Central ในเวอร์ชั่นที่ใหม่กว่า BC14 เพราะอาจจะมี Event Subscriber ใหม่ ๆ มาให้ใช้งานมากกว่าเดิม หรือ Parameter และ Base code มีการเปลี่ยนแปลงไปแล้ว

บทความที่คุณอาจสนใจ

คู่มือใช้งาน Dynamics 365 Business Central – Sales Module: ตอนที่ 1 สร้าง Customer
เริ่มต้นสร้าง Extension แรกบน MS Dynamics 365 BC ตอนที่ 1 – New Table

2. Symbols browser

วิธีที่สองเป็นการใช้งาน Symbols browser ที่เป็น Extension ที่ติดตั้งใน Visual Studio Code ดังนั้นหมายความว่าคุณสามารถดู Base code ผ่านตัว Visual Studio Code ได้เลย

ก่อนอื่นคุณจำเป็นต้องติดตั้ง Extension ที่ชื่อว่า AZ AL Dev Tools/AL Code Outline ก่อน

event-recorder-business-central-3

ซึ่งเป็น Extension ที่ดีมาก ๆ แนะนำว่า Developer ที่ทำ AL ทุกคนควรติดตั้งตัวนี้ไว้ เพราะเป็นการรวม Extension ต่าง ๆ ที่จำเป็นสำหรับนักพัฒนาโปรแกรม Business Central ช่วยให้ทำงานได้่ง่าย และสะดวกขึ้นเยอะ

ภายใน Feature ของ Z AL Dev Tools/AL Code Outline Extension จะมีตัวที่ชื่อว่า Symbols browser

ปกติแล้วเมื่อเรากำลังพัฒนา AL Extension หลังจากที่เรา Setup เสร็จแล้ว เราจำเป็นจะต้อง Download symbols เสมอเพื่อให้ Base code เข้ามาถูกติดตั้งใน Project ของเรา ถึงจะถูกเก็บไว้ที่ โฟลเดอร์ .alpackages จะประกอบไปด้วย app ที่เป็น Base Application และ System Application

เมื่อเราคลิกที่ไฟล์ Microsoft_Base_Application ก็จะได้หน้าต่าง Symbols browser ขึ้นมาทางด้านขวามือ และแสดงทุก object ที่มีอยู่ใน app นั้น

event-recorder-business-central-4

สมมติว่าเราอยากดู Base code ของ Codeunit 80: Sales Post ก็สามารถคลิกที่ที่ช่อง Codeunit แล้วเลื่อนลงมาหา Codeunit 80: Sales Post หรือจะใช้งานจากช่อง Search ด้านบนก็ได้

เมื่อเจอ Object ที่ต้องการแล้วก็ให้กดคลิกขวาแล้วเลือก Go to definition (project file or server definition)

event-recorder-business-central-5

ก็จะเจอ Source Code ของ Codeunit 80: Sales Post

event-recorder-business-central-6

วิธีการหา Event Subscriber ด้วย Symbols Browser อาจจะเป็นวิธีที่มีประสิทธิภาพมากกว่าเปิดผ่าน C/SIDE เนื่องจากมั่นใจได้ว่าเป็น Base Code ที่ตรงกับ Version ที่ใช้งานจริง ๆ และเป็นโค้ดล่าสุด

บทความที่คุณอาจสนใจ

วิธีทำให้ Notepad++ เห็นสีโค้ดของภาษา AL
Record Deletion Tool ที่ใช้สำหรับล้างข้อมูลของ Table

3. Event Recorder

วิธีสุดท้ายคือหา Event Subscriber ผ่าน Event Recorder ซึ่งเป็น Feature ที่ทาง Microsoft นั้นเตรียมไว้ให้สำหรับคนที่พัฒนาโปรแกรม Dynamics 365 Business Central และเป็นพระเอกในบทความนี้

ซึ่งการทำงานของ Event Recorder นั้นจะช่วย Register ว่ามี Events อะไรบ้างที่เกิดขึ้นในระหว่าง Process การใช้งาน โดยที่คุณไม่ต้องไปโค้ดเองจาก Base code ซึ่งถือว่ามีประโยชน์อย่างมากในการทำงาน

สำหรับการใช้งาน Feature นี้สามาถทำตามได้ตามขั้นตอนดังนี้

3.1 หลังจากเปิด Business Central ขึ้นมาแล้วที่ปุ่ม Search ให้พิมพ์ว่า Event Recorder

event-recorder-business-central-7

3.2 เราก็จะเจอกับหน้าต่าง Event Recorder จากนั้นให้กดปุ่ม Start

event-recorder-business-central-8

3.3 กดปุ่ม Yes เพื่อยืนยันการใช้งาน Event Recorder

event-recorder-business-central-9

3.4 เมื่อ Event Recorder เริ่มทำการ Recording แล้ว ตรงนี้เป็นจุดสำคัญเนื่องจาก Feature นี้จะทำงานผ่าน Session ดังนั้น Session ที่ Recording กับ Session ที่ Process การทำงาน ต้องเป็น Session เดียวกัน

ดังนั้นให้คลิกที่ Open this page in a new window. ที่อยู่ทางด้านมุมขวาบน เพื่อเปิดอีกหน้าจอหนึ่งที่เป็น Session เดียวกันขึ้นมา

event-recorder-business-central-10

3.5 เมื่อได้อีกหน้าจอหนึ่งขึ้นมา เราจะไปของสร้าง Sales Order ขึ้นมาหนึ่งใบดูว่า การสร้าง Sales Order นั้นผ่าน Event Subscriber อะไรบ้าง โดยที่ปุ่ม Search ให้พิมพ์ว่า Sales Order

event-recorder-business-central-11

3.6 ที่หน้า Sales Order ให้กดปุ่ม New

event-recorder-business-central-12

3.7 จากนั้นใส่ข้อมูล Customer No.

event-recorder-business-central-13

3.8 ทีนี้ให้กลับมาที่หน้า Event Recorder แล้วกดปุ่ม Stop

event-recorder-business-central-14

3.9 ระบบจะแสดงว่า มี Event ที่ถูกเรียกใช้อยู่เป็นจำนวนเท่าไร ให้กดปุ่ม Yes

event-recorder-business-central-15

3.10 เราก็จะได้ List ของ Event Subscriber ทั้งหมดออกมา โดยจะมีทั้ง Event ที่เป็นของ Base code และจาก Custom extension

event-recorder-business-central-16

3.11 สมมติว่าเราต้องการ Subscribe ตัวไหนให้คลิกที่ Get AL Snippet ก็จะได้ Pop-up โครงสร้างของ Event Subscriber ขึ้นมา สามารถ copy ไปวางไว้ใน Codeunit ของเราได้เลย

event-recorder-business-central-17

เพียงเท่านี้เราก็ได้ EventSubscriber ที่ต้องต้องการจะ Subscribe แล้ว

อีกหนึ่งจุดที่สำคัญคือ Events ที่ถูก Recorded นั้นจะไม่ถูกเก็บไว้ ทันทีที่เปิด Event Recorder ขึ้นมาข้อมูลจะหายหมด จำเป็นจะต้องทำการ Record ใหม่เสมอ

และนี่ก็คือหนึ่งใน Feature ที่ช่วยให้ Developer ทำงานกับ standard events จาก Visual Studio Code และ Dynamics 365 Business Central platform โดยไม่ต้องใช้ C/SIDE

ERP Consultant ที่อยากแชร์ความรู้เกี่ยวกับการพัฒนาโปรแกรม Microsoft Dynamics NAV / 365 Business Central ทั้งทางด้าน Business และ Technical ให้กับเหล่านักศึกษา, ผู้ที่เริ่มต้นอาชีพนี้ หรือต้องการที่จะเพิ่มเติมความรู้ด้าน ERP ในรูปแบบ blog ที่เป็นภาษาไทย Contact: amaddev90@gmail.com

Leave a Reply

Your email address will not be published. Required fields are marked *