เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
ทริกเกอร์ประเภทเหตุการณ์คอลเลกชันจะคอยตรวจสอบเหตุการณ์การสร้าง, อัปเดต, และลบข้อมูลบนคอลเลกชัน เมื่อมีการดำเนินการกับข้อมูลในคอลเลกชันนั้น และตรงตามเงื่อนไขที่กำหนดไว้ ระบบจะทริกเกอร์เวิร์กโฟลว์ที่เกี่ยวข้องครับ/ค่ะ ตัวอย่างเช่น สถานการณ์ที่ต้องการหักสต็อกสินค้าหลังจากมีการสร้างคำสั่งซื้อใหม่ หรือรอการตรวจสอบด้วยตนเองหลังจากมีการเพิ่มความคิดเห็นใหม่ เป็นต้น ครับ/ค่ะ
การเปลี่ยนแปลงข้อมูลในคอลเลกชันมีหลายกรณี ดังนี้ครับ/ค่ะ:

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

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

หลังจากเหตุการณ์คอลเลกชันถูกทริกเกอร์ แถวข้อมูลที่สร้างเหตุการณ์จะถูกแทรกเข้าไปในแผนการทำงานในฐานะข้อมูลบริบทของทริกเกอร์ เพื่อให้โหนดในขั้นตอนถัดไปสามารถเรียกใช้เป็นตัวแปรได้ครับ/ค่ะ อย่างไรก็ตาม เมื่อโหนดถัดไปต้องการใช้ฟิลด์ความสัมพันธ์ของข้อมูลนี้ คุณจะต้องกำหนดค่าการโหลดล่วงหน้าสำหรับข้อมูลความสัมพันธ์ก่อน ข้อมูลความสัมพันธ์ที่เลือกจะถูกแทรกเข้าไปในบริบทพร้อมกับการทริกเกอร์ และสามารถเลือกใช้งานได้ตามลำดับชั้นครับ/ค่ะ
เหตุการณ์คอลเลกชันยังไม่รองรับการทริกเกอร์ด้วยการดำเนินการข้อมูลแบบกลุ่มครับ/ค่ะ ตัวอย่างเช่น เมื่อสร้างบทความและเพิ่มข้อมูลแท็กหลายรายการสำหรับบทความนั้นพร้อมกัน (ข้อมูลความสัมพันธ์แบบหนึ่งต่อหลาย) จะทริกเกอร์เฉพาะเวิร์กโฟลว์สำหรับการสร้างบทความเท่านั้น ส่วนแท็กหลายรายการที่เพิ่มพร้อมกันจะไม่ทริกเกอร์เวิร์กโฟลว์สำหรับการสร้างแท็กครับ/ค่ะ และเมื่อมีการเชื่อมโยงหรือเพิ่มข้อมูลความสัมพันธ์แบบหลายต่อหลาย ก็จะไม่ทริกเกอร์เวิร์กโฟลว์ของคอลเลกชันกลางด้วยเช่นกันครับ/ค่ะ
การดำเนินการกับคอลเลกชันผ่านการเรียกใช้ HTTP API ไปยังอินเทอร์เฟซของแอปพลิเคชันก็สามารถทริกเกอร์เหตุการณ์ที่เกี่ยวข้องได้ครับ/ค่ะ อย่างไรก็ตาม หากมีการเปลี่ยนแปลงข้อมูลโดยตรงผ่านการดำเนินการกับฐานข้อมูล แทนที่จะผ่านแอปพลิเคชัน NocoBase เหตุการณ์ที่เกี่ยวข้องจะไม่ถูกทริกเกอร์ครับ/ค่ะ ตัวอย่างเช่น ทริกเกอร์ในฐานข้อมูลโดยตรงจะไม่เชื่อมโยงกับเวิร์กโฟลว์ในแอปพลิเคชัน
นอกจากนี้ การใช้โหนดการดำเนินการ SQL เพื่อดำเนินการกับฐานข้อมูลก็เทียบเท่ากับการดำเนินการกับฐานข้อมูลโดยตรง และจะไม่ทริกเกอร์เหตุการณ์คอลเลกชันครับ/ค่ะ
เวิร์กโฟลว์รองรับแหล่งข้อมูลภายนอกตั้งแต่เวอร์ชัน 0.20 เป็นต้นไปครับ/ค่ะ หากคุณใช้ปลั๊กอินแหล่งข้อมูลภายนอก และเหตุการณ์คอลเลกชันถูกกำหนดค่าสำหรับแหล่งข้อมูลภายนอก ตราบใดที่การดำเนินการกับข้อมูลในแหล่งข้อมูลนั้นเสร็จสมบูรณ์ภายในแอปพลิเคชัน (เช่น การสร้าง, อัปเดตข้อมูลโดยผู้ใช้ และการดำเนินการข้อมูลผ่านเวิร์กโฟลว์) เหตุการณ์คอลเลกชันที่เกี่ยวข้องก็จะถูกทริกเกอร์ได้ครับ/ค่ะ แต่หากการเปลี่ยนแปลงข้อมูลเกิดขึ้นผ่านระบบอื่น หรือเปลี่ยนแปลงโดยตรงในฐานข้อมูลภายนอก เหตุการณ์คอลเลกชันจะไม่ถูกทริกเกอร์ครับ/ค่ะ
เรามาดูตัวอย่างสถานการณ์ที่ต้องการคำนวณราคารวมและหักสต็อกสินค้าหลังจากมีการสร้างคำสั่งซื้อใหม่ครับ/ค่ะ
อันดับแรก เราจะสร้างคอลเลกชันสินค้าและคอลเลกชันคำสั่งซื้อ โดยมีโมเดลข้อมูลดังนี้ครับ/ค่ะ:
| ชื่อฟิลด์ | ประเภทฟิลด์ |
|---|---|
| ชื่อสินค้า | ข้อความบรรทัดเดียว |
| ราคา | ตัวเลข |
| สต็อก | จำนวนเต็ม |
| ชื่อฟิลด์ | ประเภทฟิลด์ |
|---|---|
| รหัสคำสั่งซื้อ | ลำดับอัตโนมัติ |
| สินค้าในคำสั่งซื้อ | หลายต่อหนึ่ง (สินค้า) |
| ราคารวมคำสั่งซื้อ | ตัวเลข |
และเพิ่มข้อมูลสินค้าพื้นฐานดังนี้ครับ/ค่ะ:
| ชื่อสินค้า | ราคา | สต็อก |
|---|---|---|
| iPhone 14 Pro | 7999 | 10 |
| iPhone 13 Pro | 5999 | 0 |
จากนั้น สร้างเวิร์กโฟลว์ที่อิงตามเหตุการณ์คอลเลกชันคำสั่งซื้อครับ/ค่ะ:

นี่คือตัวเลือกการกำหนดค่าบางส่วนครับ/ค่ะ:
จากนั้น กำหนดค่าโหนดอื่นๆ ตามตรรกะของเวิร์กโฟลว์ครับ/ค่ะ โดยจะตรวจสอบว่าสต็อกสินค้ามากกว่า 0 หรือไม่ หากมากกว่า 0 ให้หักสต็อกสินค้า มิฉะนั้น คำสั่งซื้อจะถือเป็นโมฆะและควรถูกลบออกครับ/ค่ะ:

การกำหนดค่าของโหนดจะมีการอธิบายโดยละเอียดในเอกสารแนะนำสำหรับโหนดประเภทเฉพาะครับ/ค่ะ
เปิดใช้งานเวิร์กโฟลว์นี้ และทดสอบโดยการสร้างคำสั่งซื้อใหม่ผ่านอินเทอร์เฟซครับ/ค่ะ หลังจากสั่งซื้อ "iPhone 14 Pro" สต็อกสินค้าที่เกี่ยวข้องจะถูกหักเหลือ 9 แต่หากสั่งซื้อ "iPhone 13 Pro" คำสั่งซื้อจะถูกลบเนื่องจากสต็อกไม่เพียงพอครับ/ค่ะ
