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 หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ

#ลูป (Loop)

This feature is provided by the plugin «เวิร์กโฟลว์: โหนดวนซ้ำ»

#บทนำ

ลูป (Loop) เปรียบเสมือนโครงสร้างทางไวยากรณ์ เช่น for/while/forEach ในภาษาโปรแกรมครับ/ค่ะ คุณสามารถใช้โหนดลูปได้เมื่อต้องการทำซ้ำการทำงานบางอย่างตามจำนวนครั้งที่กำหนด หรือกับชุดข้อมูล (อาร์เรย์) ครับ/ค่ะ

#การติดตั้ง

ปลั๊กอินนี้เป็นปลั๊กอินในตัว ไม่จำเป็นต้องติดตั้งครับ/ค่ะ

#การสร้างโหนด

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

การสร้างโหนดลูป

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

#การตั้งค่าโหนด

20241016135326

#ออบเจกต์ลูป (Loop Object)

ลูปจะจัดการกับออบเจกต์ลูปที่มีชนิดข้อมูลต่างกันด้วยวิธีที่แตกต่างกันครับ/ค่ะ

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

  2. ตัวเลข (Number): เมื่อตัวแปรที่เลือกเป็นตัวเลข จะใช้ตัวเลขนั้นเป็นจำนวนรอบการวนซ้ำครับ/ค่ะ ค่าของตัวเลขรองรับเฉพาะจำนวนเต็มบวกเท่านั้น จำนวนลบจะไม่เข้าสู่ลูป และส่วนทศนิยมของตัวเลขจะถูกละเว้น ดัชนีของจำนวนรอบการวนซ้ำในตัวแปรโลคัลก็คือค่าของออบเจกต์ลูปนั่นเองครับ/ค่ะ ค่านี้เริ่มต้นจาก 0 ตัวอย่างเช่น หากออบเจกต์ลูปเป็นตัวเลข 5 ออบเจกต์และดัชนีในแต่ละรอบการวนซ้ำจะเป็น: 0, 1, 2, 3, 4 ตามลำดับครับ/ค่ะ

  3. สตริง (String): เมื่อตัวแปรที่เลือกเป็นสตริง จะใช้ความยาวของสตริงนั้นเป็นจำนวนรอบการวนซ้ำ โดยจะประมวลผลแต่ละอักขระในสตริงตามดัชนีในแต่ละรอบครับ/ค่ะ

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

นอกจากการเลือกตัวแปรแล้ว สำหรับชนิดตัวเลขและสตริง คุณยังสามารถป้อนค่าคงที่ (constants) ได้โดยตรงครับ/ค่ะ ตัวอย่างเช่น หากป้อน 5 (ชนิดตัวเลข) โหนดลูปจะวนซ้ำ 5 ครั้ง หรือหากป้อน abc (ชนิดสตริง) โหนดลูปจะวนซ้ำ 3 ครั้ง โดยจะประมวลผลอักขระ a, b, และ c ตามลำดับ ในเครื่องมือเลือกตัวแปร ให้เลือกชนิดที่คุณต้องการใช้สำหรับค่าคงที่ครับ/ค่ะ

#เงื่อนไขลูป (Loop Condition)

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

เงื่อนไข (Condition)

คล้ายกับการตั้งค่าเงื่อนไขในโหนดเงื่อนไข (Condition node) คุณสามารถรวมการตั้งค่าได้ และสามารถใช้ตัวแปรจากลูปปัจจุบันได้ครับ/ค่ะ เช่น ออบเจกต์ลูป, ดัชนีลูป เป็นต้น

ช่วงเวลาที่ตรวจสอบ (Check Timing)

คล้ายกับโครงสร้าง while และ do/while ในภาษาโปรแกรม คุณสามารถเลือกที่จะประเมินเงื่อนไขที่ตั้งค่าไว้ก่อนเริ่มแต่ละรอบลูป หรือหลังจากสิ้นสุดแต่ละรอบลูปได้ครับ/ค่ะ การประเมินเงื่อนไขแบบหลัง (post-condition evaluation) จะช่วยให้โหนดอื่น ๆ ภายในลูปทำงานไปหนึ่งรอบก่อน แล้วจึงค่อยตรวจสอบเงื่อนไขครับ/ค่ะ

เมื่อเงื่อนไขไม่เป็นจริง (When Condition is Not Met)

คล้ายกับคำสั่ง break และ continue ในภาษาโปรแกรม คุณสามารถเลือกที่จะออกจากลูป หรือดำเนินการวนซ้ำในรอบถัดไปได้ครับ/ค่ะ

#การจัดการเมื่อโหนดภายในลูปเกิดข้อผิดพลาด

ตั้งแต่เวอร์ชัน v1.4.0-beta เป็นต้นไป เมื่อโหนดภายในลูปทำงานล้มเหลว (เช่น เงื่อนไขไม่เป็นไปตามที่กำหนด, เกิดข้อผิดพลาด ฯลฯ) คุณสามารถกำหนดทิศทางการทำงานต่อไปได้ผ่านการตั้งค่าครับ/ค่ะ รองรับวิธีการจัดการ 3 แบบดังนี้ครับ/ค่ะ

  • ออกจากเวิร์กโฟลว์ (เหมือน throw ในการเขียนโปรแกรม)
  • ออกจากลูปและดำเนินการเวิร์กโฟลว์ต่อ (เหมือน break ในการเขียนโปรแกรม)
  • ดำเนินการวนซ้ำไปยังออบเจกต์ลูปถัดไป (เหมือน continue ในการเขียนโปรแกรม)

ค่าเริ่มต้นคือ "ออกจากเวิร์กโฟลว์" ซึ่งสามารถเลือกใช้ได้ตามความต้องการครับ/ค่ะ

#ตัวอย่าง

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

  1. สร้าง 3 คอลเลกชัน ได้แก่ คอลเลกชันสินค้า <-(1:m)-- คอลเลกชันรายละเอียดคำสั่งซื้อ --(m:1)-> คอลเลกชันคำสั่งซื้อ โดยมีโมเดลข้อมูลดังนี้ครับ/ค่ะ

    คอลเลกชันคำสั่งซื้อ (Orders Collection)

    ชื่อฟิลด์ชนิดฟิลด์
    รายละเอียดคำสั่งซื้อหนึ่งต่อหลาย (รายละเอียดคำสั่งซื้อ)
    ราคารวมของคำสั่งซื้อตัวเลข

    คอลเลกชันรายละเอียดคำสั่งซื้อ (Order Details Collection)

    ชื่อฟิลด์ชนิดฟิลด์
    สินค้าหลายต่อหนึ่ง (สินค้า)
    จำนวนตัวเลข

    คอลเลกชันสินค้า (Products Collection)

    ชื่อฟิลด์ชนิดฟิลด์
    ชื่อสินค้าข้อความบรรทัดเดียว
    ราคาตัวเลข
    สต็อกจำนวนเต็ม
  2. สร้างเวิร์กโฟลว์ สำหรับทริกเกอร์ ให้เลือก "เหตุการณ์คอลเลกชัน" (Collection Event) และเลือกคอลเลกชัน "คำสั่งซื้อ" เพื่อให้ทริกเกอร์ "เมื่อมีการเพิ่มข้อมูลใหม่" ครับ/ค่ะ นอกจากนี้ คุณต้องตั้งค่าให้โหลดข้อมูลความสัมพันธ์ของคอลเลกชัน "รายละเอียดคำสั่งซื้อ" และคอลเลกชันสินค้าภายใต้รายละเอียดล่วงหน้าด้วยครับ/ค่ะ

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

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

    โหนดลูป_ตัวอย่าง_การตั้งค่าโหนดลูป

  4. ภายในโหนดลูป ให้สร้างโหนด "เงื่อนไข" (Condition) เพื่อตรวจสอบว่าสต็อกสินค้าเพียงพอหรือไม่ครับ/ค่ะ

    โหนดลูป_ตัวอย่าง_การตั้งค่าโหนดเงื่อนไข

  5. หากสต็อกเพียงพอ ให้ในสาขา "ใช่" (Yes) สร้าง "โหนดคำนวณ" (Calculation node) และ "โหนดอัปเดตข้อมูล" (Update record node) เพื่ออัปเดตสต็อกที่ถูกหักลบแล้วไปยังบันทึกสินค้าที่เกี่ยวข้องครับ/ค่ะ

    โหนดลูป_ตัวอย่าง_การตั้งค่าโหนดคำนวณ

    โหนดลูป_ตัวอย่าง_การตั้งค่าโหนดอัปเดตสต็อก

  6. มิฉะนั้น ในสาขา "ไม่" (No) ให้สร้าง "โหนดอัปเดตข้อมูล" (Update record node) เพื่ออัปเดตสถานะของรายละเอียดคำสั่งซื้อเป็น "ไม่ถูกต้อง" (invalid) ครับ/ค่ะ

    โหนดลูป_ตัวอย่าง_การตั้งค่าโหนดอัปเดตรายละเอียดคำสั่งซื้อ

โครงสร้างเวิร์กโฟลว์โดยรวมเป็นดังภาพด้านล่างครับ/ค่ะ

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

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