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

v.1.6.0+
ประเภทบริบทที่แตกต่างกันจะกำหนดว่าเวิร์กโฟลว์นี้สามารถผูกกับปุ่มของบล็อกใดได้บ้างครับ/ค่ะ:

เมื่อประเภทบริบทเป็นข้อมูลแถวเดียวหรือข้อมูลหลายแถว คุณจำเป็นต้องเลือกคอลเลกชันที่ต้องการผูกกับโมเดลข้อมูลครับ/ค่ะ:

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

ฟิลด์เหล่านี้จะถูกโหลดล่วงหน้าเข้าสู่บริบทของเวิร์กโฟลว์โดยอัตโนมัติหลังจากเหตุการณ์ถูกทริกเกอร์ เพื่อให้สามารถนำไปใช้งานในเวิร์กโฟลว์ได้ครับ/ค่ะ
การตั้งค่าปุ่มการทำงานในบล็อกต่าง ๆ จะมีความแตกต่างกันไปตามประเภทบริบทที่กำหนดไว้ในเวิร์กโฟลว์ครับ/ค่ะ
v1.6.0+
ในแผงการทำงานและบล็อกข้อมูลอื่น ๆ สามารถเพิ่มปุ่ม "Trigger Workflow" ได้ครับ/ค่ะ:



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


ในบล็อกข้อมูลใด ๆ สามารถเพิ่มปุ่ม "Trigger Workflow" ในแถบการทำงานสำหรับข้อมูลแถวเดียวได้ เช่น ฟอร์ม, แถวข้อมูลในตาราง, รายละเอียด และอื่น ๆ ครับ/ค่ะ:



หลังจากเพิ่มปุ่มแล้ว ให้ผูกกับเวิร์กโฟลว์ที่สร้างไว้ก่อนหน้านี้ครับ/ค่ะ:


หลังจากนั้น คลิกปุ่มนี้เพื่อทริกเกอร์เหตุการณ์การทำงานแบบกำหนดเองครับ/ค่ะ:

v1.6.0+
ในแถบการทำงานของบล็อกตาราง เมื่อเพิ่มปุ่ม "Trigger Workflow" จะมีตัวเลือกเพิ่มเติมให้เลือกประเภทบริบทเป็น "ไม่มีบริบท" หรือ "ข้อมูลหลายแถว" ครับ/ค่ะ:

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

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

ตัวอย่างเช่น เรามีคอลเลกชัน "ตัวอย่าง" (Samples) สำหรับตัวอย่างที่มีสถานะ "เก็บรวบรวมแล้ว" เราต้องการให้มีการดำเนินการ "ส่งตรวจ" ซึ่งการส่งตรวจจะตรวจสอบข้อมูลพื้นฐานของตัวอย่างก่อน จากนั้นจึงสร้างข้อมูล "บันทึกการส่งตรวจ" และเปลี่ยนสถานะตัวอย่างเป็น "ส่งตรวจแล้ว" กระบวนการเหล่านี้ไม่สามารถทำได้ด้วยการคลิกปุ่มการดำเนินการพื้นฐานทั่วไป ในกรณีนี้เราสามารถใช้เหตุการณ์การทำงานแบบกำหนดเองเพื่อทำให้สำเร็จได้ครับ/ค่ะ
ขั้นแรก ให้สร้างคอลเลกชัน "ตัวอย่าง" และคอลเลกชัน "บันทึกการส่งตรวจ" พร้อมทั้งกรอกข้อมูลทดสอบพื้นฐานในตารางตัวอย่างครับ/ค่ะ:

จากนั้นสร้างเวิร์กโฟลว์ "เหตุการณ์การทำงานแบบกำหนดเอง" หากต้องการให้กระบวนการทำงานมีการตอบสนองที่รวดเร็ว สามารถเลือกโหมดซิงโครนัส (Synchronous) ได้ (ในโหมดซิงโครนัสจะไม่สามารถใช้โหนดประเภทอะซิงโครนัส เช่น การประมวลผลโดยบุคคลได้) ครับ/ค่ะ:

ในการตั้งค่าทริกเกอร์ ให้เลือกคอลเลกชันเป็น "ตัวอย่าง" ครับ/ค่ะ:

จัดเรียงตรรกะในกระบวนการตามความต้องการทางธุรกิจ เช่น อนุญาตให้ส่งตรวจได้เมื่อพารามิเตอร์ตัวบ่งชี้มากกว่า 90 เท่านั้น มิฉะนั้นจะแจ้งเตือนปัญหาที่เกี่ยวข้องครับ/ค่ะ:

โหนด "Response Message" สามารถใช้ในเหตุการณ์การทำงานแบบกำหนดเองโหมดซิงโครนัส เพื่อส่งข้อความแจ้งเตือนกลับไปยังไคลเอนต์ได้ครับ/ค่ะ แต่ไม่สามารถใช้ในโหมดอะซิงโครนัสได้
หลังจากตั้งค่ากระบวนการและเปิดใช้งานแล้ว ให้กลับไปที่หน้าตาราง และเพิ่มปุ่ม "Trigger Workflow" ในคอลัมน์การทำงานของตารางครับ/ค่ะ:

จากนั้นในเมนูการตั้งค่าของปุ่ม ให้เลือกผูกเวิร์กโฟลว์เพื่อเปิดหน้าต่างการตั้งค่าครับ/ค่ะ:

เพิ่มเวิร์กโฟลว์ที่เปิดใช้งานไว้ก่อนหน้านี้ครับ/ค่ะ:

หลังจากส่งค่าแล้ว ให้เปลี่ยนข้อความบนปุ่มเป็นชื่อการทำงาน เช่น "ส่งตรวจ" เท่านี้กระบวนการตั้งค่าก็เสร็จสมบูรณ์แล้วครับ/ค่ะ
เมื่อใช้งาน ให้เลือกข้อมูลตัวอย่างหนึ่งรายการในตารางและคลิกปุ่ม "ส่งตรวจ" เพื่อทริกเกอร์เหตุการณ์ ตามตรรกะที่จัดเรียงไว้ หากพารามิเตอร์ตัวบ่งชี้น้อยกว่า 90 จะมีการแจ้งเตือนดังนี้ครับ/ค่ะ:

หากพารามิเตอร์ตัวบ่งชี้มากกว่า 90 กระบวนการจะทำงานตามปกติ โดยสร้างข้อมูล "บันทึกการส่งตรวจ" และเปลี่ยนสถานะตัวอย่างเป็น "ส่งตรวจแล้ว" ครับ/ค่ะ:

ถึงตรงนี้ เหตุการณ์การทำงานแบบกำหนดเองอย่างง่ายก็เสร็จสมบูรณ์แล้วครับ/ค่ะ ในทำนองเดียวกัน สำหรับธุรกิจที่มีการดำเนินการที่ซับซ้อน เช่น การประมวลผลคำสั่งซื้อ หรือการส่งรายงาน ก็สามารถใช้เหตุการณ์การทำงานแบบกำหนดเองเพื่อทำให้สำเร็จได้เช่นกันครับ/ค่ะ
การทริกเกอร์เหตุการณ์การทำงานแบบกำหนดเองไม่ได้จำกัดอยู่เพียงการดำเนินการผ่านอินเทอร์เฟซผู้ใช้เท่านั้น แต่ยังสามารถทริกเกอร์ผ่านการเรียก HTTP API ได้ด้วย โดยเฉพาะอย่างยิ่ง เหตุการณ์การทำงานแบบกำหนดเองได้เพิ่มประเภทการทำงานใหม่ trigger สำหรับการดำเนินการของคอลเลกชันทั้งหมดเพื่อทริกเกอร์เวิร์กโฟลว์ ซึ่งสามารถเรียกใช้ได้ตามมาตรฐาน Action API ของ NocoBase ครับ/ค่ะ
เนื่องจากการเรียกใช้จากภายนอกจำเป็นต้องอิงตามตัวตนของผู้ใช้ด้วย ดังนั้นเมื่อเรียกใช้ผ่าน HTTP API จะต้องระบุข้อมูลการรับรองความถูกต้องเช่นเดียวกับคำขอทั่วไปจากอินเทอร์เฟซ ซึ่งรวมถึงส่วนหัว Authorization หรือพารามิเตอร์ token (โทเค็นที่ได้จากการเข้าสู่ระบบ) และส่วนหัว X-Role (ชื่อบทบาทปัจจุบันของผู้ใช้) ครับ/ค่ะ
เวิร์กโฟลว์ที่ไม่มีบริบทจำเป็นต้องทริกเกอร์ผ่านทรัพยากร workflows ครับ/ค่ะ:
เวิร์กโฟลว์ที่ทริกเกอร์โดยปุ่มตามตัวอย่าง สามารถเรียกใช้ได้ดังนี้ครับ/ค่ะ:
เนื่องจากการดำเนินการนี้มุ่งเป้าไปที่ข้อมูลแถวเดียว เมื่อเรียกใช้กับข้อมูลที่มีอยู่ คุณต้องระบุ ID ของแถวข้อมูลโดยแทนที่ส่วน <:id> ใน URL ครับ/ค่ะ
หากเรียกใช้ผ่านฟอร์ม (เช่น การเพิ่มหรืออัปเดต) สำหรับฟอร์มที่เพิ่มข้อมูลใหม่ไม่จำเป็นต้องส่ง ID แต่ต้องส่งข้อมูลที่ส่งเข้ามาเพื่อเป็นบริบทในการทำงานครับ/ค่ะ:
สำหรับฟอร์มอัปเดต จำเป็นต้องส่งทั้ง ID ของแถวข้อมูลและข้อมูลที่อัปเดตครับ/ค่ะ:
หากส่งทั้ง ID และข้อมูล ระบบจะโหลดแถวข้อมูลที่ตรงกับ ID ก่อน จากนั้นจะใช้คุณสมบัติในออบเจกต์ข้อมูลที่ส่งมาเขียนทับแถวข้อมูลเดิมเพื่อให้ได้บริบทข้อมูลสุดท้ายที่ใช้ทริกเกอร์ครับ/ค่ะ
หากมีการส่งข้อมูลความสัมพันธ์เข้ามา ข้อมูลนั้นจะถูกเขียนทับด้วยเช่นกัน โดยเฉพาะเมื่อมีการตั้งค่าให้โหลดข้อมูลความสัมพันธ์ล่วงหน้า ควรจัดการข้อมูลที่ส่งเข้ามาอย่างระมัดระวังเพื่อหลีกเลี่ยงการเขียนทับข้อมูลความสัมพันธ์ที่ไม่เป็นไปตามคาดครับ/ค่ะ
นอกจากนี้ พารามิเตอร์ URL triggerWorkflows คือ key ของเวิร์กโฟลว์ หากมีหลายเวิร์กโฟลว์ให้คั่นด้วยเครื่องหมายจุลภาค คุณสามารถดู key นี้ได้โดยการวางเมาส์เหนือชื่อเวิร์กโฟลว์ที่ด้านบนของหน้าเวิร์กโฟลว์ครับ/ค่ะ:

หลังจากเรียกใช้สำเร็จ จะเป็นการทริกเกอร์เหตุการณ์การทำงานแบบกำหนดเองของคอลเลกชัน samples ที่เกี่ยวข้องครับ/ค่ะ
เมื่อทริกเกอร์เหตุการณ์ผ่านการเรียก HTTP API ควรตรวจสอบสถานะการเปิดใช้งานของเวิร์กโฟลว์และการตั้งค่าคอลเลกชันว่าตรงกันหรือไม่ มิฉะนั้นการเรียกใช้อาจไม่สำเร็จหรือเกิดข้อผิดพลาดได้ครับ/ค่ะ
คล้ายกับการเรียกใช้ข้อมูลแถวเดียว แต่ข้อมูลที่ส่งเข้ามาต้องการเพียงพารามิเตอร์คีย์หลักหลายรายการ (filterByTk[]) และไม่จำเป็นต้องส่งส่วน data ครับ/ค่ะ:
การเรียกใช้นี้จะทริกเกอร์เหตุการณ์การทำงานแบบกำหนดเองในโหมดข้อมูลหลายแถว และใช้ข้อมูลที่มี id เป็น 1 และ 2 เป็นข้อมูลในบริบทของทริกเกอร์ครับ/ค่ะ