logologo
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
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การอนุมัติ
TIP

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

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

This feature is provided by the commercial plugin «เวิร์กโฟลว์: เหตุการณ์การทำงานแบบกำหนดเอง», please purchase to use

#บทนำ

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

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

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

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

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

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

v.1.6.0+

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

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

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

#คอลเลกชัน

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

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

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

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

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

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

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

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

#ไม่มีบริบท

v.1.6.0+

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

v.1.6.0+

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

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

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

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

เลือก เวิร์กโฟลว์ สำหรับข้อมูลหลายแถว

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

ต้องเลือกแถวข้อมูลก่อนเรียกใช้ เวิร์กโฟลว์

#ตัวอย่าง

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

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

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

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

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

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

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

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

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

เคล็ดลับ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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",
    "indicator": 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",
    "indicator": 91
  }'
  "http://localhost:3000/api/samples:trigger/<:id>?triggerWorkflows=workflowKey"

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

ข้อควรระวัง

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

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

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

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

เคล็ดลับ

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

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

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

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

เคล็ดลับ

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