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

สำหรับโหมดทั่วไปนี้ อันดับแรกคุณต้องกำหนดเวลาเริ่มต้นเป็นจุดเวลาใดก็ได้ (แม่นยำถึงระดับวินาที) ครับ/ค่ะ คุณสามารถตั้งเวลาเริ่มต้นเป็นเวลาในอนาคต หรือเวลาในอดีตก็ได้ครับ/ค่ะ หากตั้งเวลาเริ่มต้นเป็นเวลาในอดีต ระบบจะตรวจสอบว่าถึงเวลาที่กำหนดตามเงื่อนไขการทำซ้ำหรือไม่ ถ้าไม่ได้กำหนดเงื่อนไขการทำซ้ำไว้ และเวลาเริ่มต้นเป็นเวลาในอดีต เวิร์กโฟลว์ นั้นจะไม่ถูกเรียกใช้งานอีกต่อไปครับ/ค่ะ
กฎการทำซ้ำสามารถตั้งค่าได้ 2 แบบครับ/ค่ะ:
หลังจากกำหนดกฎการทำซ้ำแล้ว คุณยังสามารถกำหนดเงื่อนไขการสิ้นสุดได้ด้วยครับ/ค่ะ โดยสามารถกำหนดให้สิ้นสุดที่จุดเวลาที่แน่นอน หรือจำกัดด้วยจำนวนครั้งที่เคยถูกเรียกใช้งานไปแล้วก็ได้ครับ/ค่ะ
การใช้ฟิลด์เวลาของ คอลเลกชัน เพื่อกำหนดเวลาเริ่มต้น เป็นโหมดการเรียกใช้งานที่รวมเอา งานตามกำหนดเวลา ทั่วไปเข้ากับฟิลด์เวลาของ คอลเลกชัน ครับ/ค่ะ การใช้โหมดนี้จะช่วยให้คุณลดความซับซ้อนของโหนดในบางกระบวนการเฉพาะทาง และยังตั้งค่าได้ง่ายขึ้นครับ/ค่ะ ตัวอย่างเช่น หากคุณต้องการเปลี่ยนสถานะคำสั่งซื้อที่ค้างชำระนานเกินกำหนดให้เป็น 'ยกเลิก' คุณสามารถตั้งค่า งานตามกำหนดเวลา ในโหมดฟิลด์เวลาของ คอลเลกชัน เพียงรายการเดียว โดยเลือกเวลาเริ่มต้นเป็น 30 นาทีหลังจากสร้างคำสั่งซื้อครับ/ค่ะ
หากเงื่อนไขเวลาที่ตั้งค่าไว้ตรงตามกำหนด แต่บริการแอปพลิเคชัน NocoBase ทั้งหมดอยู่ในสถานะที่ยังไม่ได้เริ่มทำงาน หรือหยุดทำงานอยู่ งานตามกำหนดเวลา ที่ควรจะถูกเรียกใช้งานในเวลานั้นจะถูกข้ามไปครับ/ค่ะ และหลังจากที่บริการกลับมาทำงานอีกครั้ง งานที่ถูกข้ามไปแล้วจะไม่ถูกเรียกใช้งานอีกครับ/ค่ะ ดังนั้น เมื่อใช้งาน คุณอาจต้องพิจารณาการจัดการสถานการณ์เหล่านี้ หรือมีมาตรการสำรองไว้ด้วยครับ/ค่ะ
เมื่อคุณตั้งค่าเงื่อนไขการสิ้นสุดแบบ 'ตามจำนวนครั้งที่ทำซ้ำ' ระบบจะนับจำนวนครั้งที่ เวิร์กโฟลว์ เดียวกันถูกเรียกใช้งานทั้งหมด ไม่ว่าจะอยู่ในเวอร์ชันใดก็ตามครับ/ค่ะ ตัวอย่างเช่น หาก งานตามกำหนดเวลา หนึ่งเคยถูกเรียกใช้งานไปแล้ว 10 ครั้งในเวอร์ชัน 1 และคุณตั้งค่าจำนวนครั้งที่ทำซ้ำไว้ที่ 10 ครั้ง เวิร์กโฟลว์ นี้จะไม่ถูกเรียกใช้งานอีกต่อไปครับ/ค่ะ แม้จะคัดลอกไปยังเวอร์ชันใหม่ ก็จะไม่ถูกเรียกใช้งาน เว้นแต่คุณจะเปลี่ยนจำนวนครั้งที่ทำซ้ำให้มากกว่า 10 ครับ/ค่ะ แต่ถ้าเป็นการคัดลอกเพื่อสร้างเป็น เวิร์กโฟลว์ ใหม่ จำนวนครั้งที่เคยถูกเรียกใช้งานจะถูกรีเซ็ตเป็น 0 และ เวิร์กโฟลว์ ใหม่นี้จะสามารถถูกเรียกใช้งานได้อีก 10 ครั้ง โดยไม่ต้องแก้ไขการตั้งค่าที่เกี่ยวข้องครับ/ค่ะ
การตั้งค่า 'ตามช่วงเวลา' ในกฎการทำซ้ำ จะอ้างอิงจากเวลาที่ถูกเรียกใช้งานครั้งล่าสุด (หรือเวลาเริ่มต้น) ครับ/ค่ะ ในขณะที่ 'โหมดขั้นสูง' จะเรียกใช้งานตามจุดเวลาที่กำหนดไว้ตายตัวครับ/ค่ะ ตัวอย่างเช่น หากตั้งค่าให้เรียกใช้งานทุก 30 นาที และครั้งล่าสุดถูกเรียกใช้งานเมื่อ 2021-09-01 12:01:23 เวลาที่จะถูกเรียกใช้งานครั้งถัดไปคือ 2021-09-01 12:31:23 ครับ/ค่ะ ส่วนโหมดขั้นสูง หรือโหมด Cron นั้น กฎที่ตั้งค่าไว้จะเรียกใช้งานตามจุดเวลาที่กำหนดตายตัวเสมอครับ/ค่ะ เช่น สามารถตั้งค่าให้เรียกใช้งานในนาทีที่ 01 และนาทีที่ 31 ของทุกชั่วโมงได้ครับ/ค่ะ
สมมติว่าเราต้องการตรวจสอบคำสั่งซื้อที่ยังไม่ได้ชำระเงินนานเกิน 30 นาทีหลังจากสร้างคำสั่งซื้อทุกนาที และเปลี่ยนสถานะเป็น 'ยกเลิก' โดยอัตโนมัติ เราจะมาดูวิธีการทำสิ่งนี้ด้วยทั้งสองโหมดกันครับ/ค่ะ
สร้าง เวิร์กโฟลว์ ที่อิงตาม งานตามกำหนดเวลา โดยในการตั้งค่าทริกเกอร์ ให้เลือกโหมด “กำหนดเวลาเอง” กำหนดเวลาเริ่มต้นเป็นจุดเวลาใดก็ได้ที่ไม่ช้ากว่าเวลาปัจจุบัน เลือกกฎการทำซ้ำเป็น “ทุกนาที” และเว้นเงื่อนไขการสิ้นสุดไว้ครับ/ค่ะ

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

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

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

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