logologo
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
หน้าหลัก
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
หน้าหลัก
logologo
เวิร์กโฟลว์
ภาพรวม
เริ่มต้นใช้งานอย่างรวดเร็ว

ทริกเกอร์

ภาพรวม
เหตุการณ์คอลเลกชัน
งานที่กำหนดเวลา
เหตุการณ์ก่อนการดำเนินการ
เหตุการณ์หลังการดำเนินการ
เหตุการณ์การดำเนินการที่กำหนดเอง
การอนุมัติ
Webhook

โหนด

ภาพรวม

AI

โมเดลภาษาขนาดใหญ่ (LLM)

การควบคุมกระบวนการ

เงื่อนไข
สาขาหลายเงื่อนไข
การวนซ้ำ
ตัวแปร
สาขาแบบขนาน
เรียกใช้เวิร์กโฟลว์
ผลลัพธ์กระบวนการ
การแมปตัวแปร JSON
การหน่วงเวลา
สิ้นสุด

การคำนวณ

การคำนวณ
การคำนวณวันที่
การคำนวณ JSON

การจัดการข้อมูล

เพิ่มข้อมูล
อัปเดตข้อมูล
สอบถามข้อมูล
ลบข้อมูล
การดำเนินการ SQL

การประมวลผลโดยบุคคล

การประมวลผลโดยบุคคล
การอนุมัติ
สำเนา (CC)

ประเภทส่วนขยาย

คำขอ HTTP
สคริปต์ JavaScript
การแจ้งเตือน
ส่งอีเมล
การตอบกลับ
ข้อความตอบกลับ
ตัวแปร
บันทึกการดำเนินการ
การจัดการเวอร์ชัน
ตัวเลือกขั้นสูง

การพัฒนาส่วนขยาย

ภาพรวม
ขยายประเภททริกเกอร์
ขยายประเภทโหนด
การอ้างอิง API
Previous Pageเหตุการณ์หลังการดำเนินการ
Next Pageการอนุมัติ
การแจ้งเตือนการแปลด้วย AI

เอกสารนี้แปลโดย AI สำหรับข้อมูลที่ถูกต้อง กรุณาดูเวอร์ชันภาษาอังกฤษ

#เหตุการณ์การทำงานแบบกำหนดเอง

Workflow: เหตุการณ์ Custom ActionCommunity Edition+

#บทนำ

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

#การสร้างเวิร์กโฟลว์

เมื่อสร้างเวิร์กโฟลว์ ให้เลือก "เหตุการณ์การทำงานแบบกำหนดเอง" ครับ/ค่ะ:

สร้างเวิร์กโฟลว์ "เหตุการณ์การทำงานแบบกำหนดเอง"

#การตั้งค่าทริกเกอร์

#ประเภทบริบท

v.1.6.0+

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

  • ไม่มีบริบท: คือเหตุการณ์ระดับโกลบอล สามารถผูกกับปุ่มการทำงานในแผงการทำงาน (Action Panel) หรือปุ่มการทำงานในบล็อกข้อมูลได้ครับ/ค่ะ
  • ข้อมูลแถวเดียว: สามารถผูกกับปุ่มการทำงานในบล็อกข้อมูล เช่น แถวข้อมูลในตาราง, ฟอร์ม, รายละเอียด และอื่น ๆ ได้ครับ/ค่ะ
  • ข้อมูลหลายแถว: สามารถผูกกับปุ่มการทำงานแบบกลุ่ม (Bulk Action) ของตารางได้ครับ/ค่ะ

การตั้งค่าทริกเกอร์_ประเภทบริบท

#คอลเลกชัน

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

การตั้งค่าทริกเกอร์_เลือกคอลเลกชัน

#ข้อมูลความสัมพันธ์ที่ต้องการใช้งาน

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

การตั้งค่าทริกเกอร์_เลือกข้อมูลความสัมพันธ์ที่ต้องการใช้งาน

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

#การตั้งค่าการทำงาน

การตั้งค่าปุ่มการทำงานในบล็อกต่าง ๆ จะมีความแตกต่างกันไปตามประเภทบริบทที่กำหนดไว้ในเวิร์กโฟลว์ครับ/ค่ะ

#ไม่มีบริบท

v1.6.0+

ในแผงการทำงานและบล็อกข้อมูลอื่น ๆ สามารถเพิ่มปุ่ม "Trigger Workflow" ได้ครับ/ค่ะ:

เพิ่มปุ่มการทำงานในบล็อก_แผงการทำงาน

เพิ่มปุ่มการทำงานในบล็อก_ปฏิทิน

เพิ่มปุ่มการทำงานในบล็อก_แผนภูมิแกนต์

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

ผูกเวิร์กโฟลว์กับปุ่ม_แผงการทำงาน

เลือกเวิร์กโฟลว์ที่ต้องการผูก_ไม่มีบริบท

#ข้อมูลแถวเดียว

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

เพิ่มปุ่มการทำงานในบล็อก_ฟอร์ม

เพิ่มปุ่มการทำงานในบล็อก_แถวตาราง

เพิ่มปุ่มการทำงานในบล็อก_รายละเอียด

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

ผูกเวิร์กโฟลว์กับปุ่ม

เลือกเวิร์กโฟลว์ที่ต้องการผูก

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

ผลลัพธ์ของการคลิกปุ่ม

#ข้อมูลหลายแถว

v1.6.0+

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

เพิ่มปุ่มการทำงานในบล็อก_ตาราง

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

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

20250215224436

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

20250215224736

#ตัวอย่าง

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

ขั้นแรก ให้สร้างคอลเลกชัน "ตัวอย่าง" และคอลเลกชัน "บันทึกการส่งตรวจ" พร้อมทั้งกรอกข้อมูลทดสอบพื้นฐานในตารางตัวอย่างครับ/ค่ะ:

ตัวอย่าง_คอลเลกชันตัวอย่าง

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

ตัวอย่าง_สร้างเวิร์กโฟลว์

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

ตัวอย่าง_การตั้งค่าทริกเกอร์

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

ตัวอย่าง_การจัดเรียงตรรกะทางธุรกิจ

เคล็ดลับ

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

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

ตัวอย่าง_เพิ่มปุ่มการทำงาน

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

ตัวอย่าง_เปิดหน้าต่างผูกเวิร์กโฟลว์

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

ตัวอย่าง_เลือกเวิร์กโฟลว์

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

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

ตัวอย่าง_ตัวบ่งชี้ไม่เป็นไปตามเกณฑ์การส่งตรวจ

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

ตัวอย่าง_ส่งตรวจสำเร็จ

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

#การเรียกใช้จากภายนอก

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

เคล็ดลับ

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

#ไม่มีบริบท

เวิร์กโฟลว์ที่ไม่มีบริบทจำเป็นต้องทริกเกอร์ผ่านทรัพยากร workflows ครับ/ค่ะ:

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' \
  "http://localhost:3000/api/workflows:trigger?triggerWorkflows=workflowKey"

#ข้อมูลแถวเดียว

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

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' \
  "http://localhost:3000/api/samples:trigger/<:id>?triggerWorkflows=workflowKey"

เนื่องจากการดำเนินการนี้มุ่งเป้าไปที่ข้อมูลแถวเดียว เมื่อเรียกใช้กับข้อมูลที่มีอยู่ คุณต้องระบุ ID ของแถวข้อมูลโดยแทนที่ส่วน <:id> ใน URL ครับ/ค่ะ

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

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "title": "Sample 1",
    "id": 91
  }'
  "http://localhost:3000/api/samples:trigger?triggerWorkflows=workflowKey"

สำหรับฟอร์มอัปเดต จำเป็นต้องส่งทั้ง ID ของแถวข้อมูลและข้อมูลที่อัปเดตครับ/ค่ะ:

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "title": "Sample 1",
    "id": 91
  }'
  "http://localhost:3000/api/samples:trigger/<:id>?triggerWorkflows=workflowKey"

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

ข้อควรระวัง

หากมีการส่งข้อมูลความสัมพันธ์เข้ามา ข้อมูลนั้นจะถูกเขียนทับด้วยเช่นกัน โดยเฉพาะเมื่อมีการตั้งค่าให้โหลดข้อมูลความสัมพันธ์ล่วงหน้า ควรจัดการข้อมูลที่ส่งเข้ามาอย่างระมัดระวังเพื่อหลีกเลี่ยงการเขียนทับข้อมูลความสัมพันธ์ที่ไม่เป็นไปตามคาดครับ/ค่ะ

นอกจากนี้ พารามิเตอร์ URL triggerWorkflows คือ key ของเวิร์กโฟลว์ หากมีหลายเวิร์กโฟลว์ให้คั่นด้วยเครื่องหมายจุลภาค คุณสามารถดู key นี้ได้โดยการวางเมาส์เหนือชื่อเวิร์กโฟลว์ที่ด้านบนของหน้าเวิร์กโฟลว์ครับ/ค่ะ:

เวิร์กโฟลว์_วิธีดู_key

หลังจากเรียกใช้สำเร็จ จะเป็นการทริกเกอร์เหตุการณ์การทำงานแบบกำหนดเองของคอลเลกชัน samples ที่เกี่ยวข้องครับ/ค่ะ

เคล็ดลับ

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

#ข้อมูลหลายแถว

คล้ายกับการเรียกใช้ข้อมูลแถวเดียว แต่ข้อมูลที่ส่งเข้ามาต้องการเพียงพารามิเตอร์คีย์หลักหลายรายการ (filterByTk[]) และไม่จำเป็นต้องส่งส่วน data ครับ/ค่ะ:

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' \
  "http://localhost:3000/api/samples:trigger?filterByTk[]=1&filterByTk[]=2&triggerWorkflows=workflowKey"

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