เหตุการณ์ขอบเขต
เหตุการณ์ขอบเขตคืออะไร
เหตุการณ์ขอบเขต BPMN 2.0คือเหตุการณ์รับระดับกลางที่ติดอยู่กับขอบของกิจกรรม เหตุการณ์นี้จะรอรับสิ่งกระตุ้น เช่น กำหนดเวลา ข้อความ ข้อผิดพลาด สัญญาณ หรือการเปลี่ยนแปลงของข้อมูล ระหว่างที่กิจกรรมกำลังทำงาน เมื่อเกิดสิ่งกระตุ้น ก็จะเปิดเส้นทางออกจากกิจกรรมนั้น
- เหตุการณ์นี้จะอยู่ที่ขอบของงาน กระบวนการย่อย ธุรกรรม หรือ Call Activity เสมอ โดยติดกับเหตุการณ์หรือเกตเวย์ไม่ได้ และวางลอยอยู่ในลำดับการไหลไม่ได้
- มีลำดับการไหลขาออก แต่ไม่มีลำดับการไหลขาเข้า กิจกรรมที่ติดอยู่เป็นทางเข้าเพียงทางเดียว
- เหตุการณ์จะรอรับสิ่งกระตุ้นเฉพาะขณะที่กิจกรรมทำงานอยู่ หากกิจกรรมเสร็จก่อน เหตุการณ์ขอบเขตจะไม่ทำงาน ข้อยกเว้นคือ compensation ซึ่งจะเริ่มทำงานหลังจากกิจกรรมเสร็จแล้ว
- เมื่อเกิดสิ่งกระตุ้น โทเค็นจะออกจากเหตุการณ์ขอบเขตผ่านลำดับการไหลขาออก เหตุการณ์แบบขัดจังหวะจะแทนที่โทเค็นของกิจกรรม ส่วนแบบไม่ขัดจังหวะจะเพิ่มโทเค็นอีกหนึ่งรายการ
- ในสัญลักษณ์จะวาดเป็นวงกลมสองชั้นบนขอบกิจกรรม โดยมีสัญลักษณ์สิ่งกระตุ้นอยู่ด้านใน
ProcessMind รองรับเหตุการณ์ขอบเขตทุกประเภทที่ระบุในหน้านี้ ลากเหตุการณ์จากกลุ่มเหตุการณ์ขอบเขตหรือขอบเขตที่ไม่โต้ตอบ.ในแถบเครื่องมือองค์ประกอบ BPMNไปวางบนขอบกิจกรรมเพื่อติดเหตุการณ์ คุณยังลากเหตุการณ์รับระดับกลางที่มีอยู่ไปวางบนขอบกิจกรรมเพื่อติดได้ และลากออกเพื่อยกเลิกการติดได้ การติดเหตุการณ์และการตั้งค่าแบบขัดจังหวะจะยังคงอยู่เมื่อนำเข้าและส่งออก BPMN
แบบขัดจังหวะและไม่ขัดจังหวะต่างกันอย่างไร
เหตุการณ์ขอบเขตมี 2 รูปแบบ โดยรูปแบบจะกำหนดว่าเมื่อมีสิ่งกระตุ้นเกิดขึ้น กิจกรรมจะเป็นอย่างไร
| แบบขัดจังหวะ | แบบไม่ขัดจังหวะ | |
|---|---|---|
| ลักษณะ | วงแหวนคู่เส้นทึบ | วงแหวนคู่เส้นประ |
| ผลต่อกิจกรรม | ยกเลิกทันที งานที่กำลังทำอยู่จะถูกละทิ้ง | ทำงานต่อ ไม่มีการยกเลิกสิ่งใด |
| เส้นทางหลังเกิดเหตุการณ์ | ใช้เฉพาะเส้นทางจากขอบเขต ไม่ใช้ลำดับการไหลออกตามปกติของกิจกรรม | ใช้ทั้งสองเส้นทาง กิจกรรมดำเนินต่อไปตามปกติ พร้อมกับเส้นทางจากขอบเขตที่ทำงานควบคู่กัน |
| ความถี่ที่เกิดได้ | ครั้งเดียว เมื่อเกิดเหตุการณ์แล้วกิจกรรมจะสิ้นสุด | เกิดได้หลายครั้งขณะที่กิจกรรมยังทำงานอยู่ เช่น ทุกครั้งที่ตัวจับเวลาซ้ำครบกำหนด |
| แอตทริบิวต์ BPMN | cancelActivity="true" | cancelActivity="false" |
เหตุการณ์ขอบเขตแบบขัดจังหวะเข้ามาแทนที่การดำเนินกิจกรรมตามปกติ ส่วนเหตุการณ์ขอบเขตแบบไม่ขัดจังหวะจะแยกเส้นทางออกจากกิจกรรมเดิม
ใช้แบบขัดจังหวะเมื่อเหตุการณ์ทำให้กิจกรรมไม่มีประโยชน์หรือไม่ปลอดภัยที่จะทำต่อ เช่น พ้นกำหนดเวลา เกิดข้อผิดพลาด หรือมีการถอนคำขอ ใช้แบบไม่ขัดจังหวะเมื่อเหตุการณ์ทำให้ต้องทำงานเพิ่มเติมควบคู่ไปกับกิจกรรม หรือเมื่อต้องการส่งการแจ้งเตือนโดยไม่ทิ้งงานที่กำลังดำเนินการ
ทั้งสองแบบใช้ได้เฉพาะขณะที่กิจกรรมยังทำงานอยู่ เมื่อเหตุการณ์แบบขัดจังหวะเกิดขึ้น กิจกรรมจะถูกยกเลิก และเหตุการณ์ขอบเขตอื่นๆ ของกิจกรรมนั้นจะหยุดทำงานไปพร้อมกัน ส่วนเหตุการณ์แบบไม่ขัดจังหวะจะไม่ยกเลิกกิจกรรมหรือเหตุการณ์ขอบเขตอื่นๆ
กิจกรรมเดียวมีเหตุการณ์ขอบเขตได้หลายรายการ ตัวอย่างเช่น งานอนุมัติอาจใช้เหตุการณ์เหล่านี้ร่วมกัน:
- ตัวจับเวลาแบบขัดจังหวะหลังผ่านไป 2 วันทำการ: ยกระดับเรื่องและหยุดงาน
- ตัวจับเวลาแบบไม่ขัดจังหวะทุก 4 ชั่วโมง: ส่งการแจ้งเตือนและให้งานดำเนินต่อ
- ข้อผิดพลาดแบบขัดจังหวะที่ Subprocess ซึ่งทำการตรวจสอบจริง: จัดการข้อผิดพลาดทางเทคนิค
ประเภทของเหตุการณ์ขอบเขต
ProcessMind รองรับประเภทต่อไปนี้ เหตุการณ์แบบขัดจังหวะมีหลายประเภทกว่า เพราะเหตุการณ์บางอย่างจะมีความหมายก็ต่อเมื่อหยุดกิจกรรม
เหตุการณ์ขอบเขตแบบขัดจังหวะ
| ประเภท | ความหมาย | ตัวอย่างทั่วไป |
|---|---|---|
| Message | รอข้อความเฉพาะที่ส่งถึงกิจกรรมนี้ | กิจกรรม “รอใบเสนอราคาจากผู้จัดหา” ถูกขัดจังหวะด้วยข้อความ “ถอนใบเสนอราคา” แล้วดำเนินต่อไปยัง “จัดหาผู้จัดหารายอื่น” |
| Timer | กำหนดเวลา ซึ่งอาจเป็นระยะเวลา วันที่ หรือรอบที่คำนวณจากเวลาที่กิจกรรมเริ่มต้น | กิจกรรม “อนุมัติค่าใช้จ่าย” มีตัวจับเวลา 2 วัน หากยังไม่เสร็จ เคสจะไปยัง “ยกระดับเรื่องให้ผู้จัดการฝ่ายการเงิน” |
| Error | รับข้อผิดพลาดที่เกิดขึ้นภายในกิจกรรมและหยุดกิจกรรมนั้น เหตุการณ์ขอบเขต Error จะเป็นแบบขัดจังหวะเสมอ | Subprocess “ตรวจสอบเครดิต” ส่งข้อผิดพลาด “ตรวจสอบไม่สำเร็จ” เส้นทางขอบเขตจะไปยัง “ขอให้พิจารณาสินเชื่อด้วยตนเอง” |
| Escalation | หยุดกิจกรรมเพื่อให้ผู้รับผิดชอบระดับสูงกว่าเข้ามาดำเนินการต่อ | กิจกรรม “แก้ไขเหตุขัดข้อง” ถูกยกระดับเรื่องเมื่อพ้นเป้าหมายเวลาตอบสนองครั้งแรก แล้วไปยัง “ผู้บัญชาการเหตุขัดข้องเข้ารับช่วงต่อ” |
| Cancel | รับเหตุการณ์สิ้นสุดแบบยกเลิกของ Transaction Subprocess ใช้ได้เฉพาะกับ Transaction | Transaction “จองการเดินทาง” ถูกลูกค้ายกเลิก เส้นทางขอบเขตจะไปยัง “คืนเงินและยกเลิกการจอง” |
| Compensation (กรณีพิเศษ) | เรียกใช้ตัวจัดการการชดเชยสำหรับกิจกรรมที่เสร็จสิ้นแล้ว เพื่อย้อนผลที่เกิดขึ้น โดยไม่ยกเลิกงานที่กำลังดำเนินการ | กิจกรรม “เรียกเก็บเงินมัดจำ” ถูกชดเชยด้วย “คืนเงินมัดจำ” เมื่อมีการยกเลิกคำสั่งซื้อในภายหลัง |
| Conditional | เกิดขึ้นเมื่อเงื่อนไขทางธุรกิจเป็นจริงระหว่างที่กิจกรรมกำลังทำงาน | กิจกรรม “สำรองสินค้า” ถูกขัดจังหวะเมื่อ availableStock < orderedQuantity แล้วเคสจะไปยัง “สั่งสินค้าค้างส่งและแจ้งลูกค้า” |
| Signal | รับสัญญาณที่ส่งถึงผู้ฟังทุกคน สัญญาณไม่ได้ส่งถึงกิจกรรมใดกิจกรรมหนึ่งโดยเฉพาะ ผู้ฟังที่ตรงกันทุกตัวจึงตอบสนองได้ | กิจกรรม “รวบรวมเอกสารที่ขาด” ถูกขัดจังหวะด้วยสัญญาณทั่วทั้งบริษัท “ถอนเคส” แล้วปิดเคส |
| Multiple | เกิดขึ้นเมื่อมีเหตุการณ์ใดเหตุการณ์หนึ่งจากหลายเหตุการณ์ | กิจกรรม “รอคำตอบจากลูกค้า” รับได้ทั้งข้อความ “ได้รับคำตอบแล้ว” หรือตัวจับเวลา 10 วัน เหตุการณ์ที่เกิดก่อนจะยกเลิกการรอ |
| Parallel Multiple | เกิดขึ้นเมื่อเหตุการณ์ที่กำหนดไว้ทั้งหมดเกิดขึ้นแล้ว | กิจกรรม “รวบรวมการอนุมัติเพื่อเผยแพร่” รอทั้งข้อความอนุมัติจากฝ่ายกฎหมายและข้อความอนุมัติจากฝ่ายความปลอดภัยก่อนดำเนินการต่อ |
หลักการคร่าวๆ สำหรับกลุ่มนี้มีดังนี้:
- ข้อผิดพลาด ควรอยู่บนกระบวนการย่อย กิจกรรมเรียกใช้ หรือธุรกรรม ซึ่งเป็นกิจกรรมที่อาจเกิดข้อผิดพลาดได้จริง งานทั่วไปไม่มีขั้นตอนภายในให้เกิดข้อผิดพลาด
- ยกเลิก ควรอยู่บนกระบวนการย่อยประเภทธุรกรรมเท่านั้น เพราะที่อื่นไม่มีเหตุการณ์ให้รับ
- ค่าตอบแทน เป็นกรณีพิเศษ โดยจะพร้อมทำงานหลังจากกิจกรรมเสร็จสิ้น และถูกเรียกใช้ด้วยเหตุการณ์ส่งค่าตอบแทนจากที่อื่นในกระบวนการ ใช้แทนความหมายว่า “ย้อนขั้นตอนที่เกิดขึ้นแล้ว” ไม่ใช่ “หยุดขั้นตอนที่กำลังทำอยู่”
- หลายเหตุการณ์ คือการแข่งขันระหว่างเหตุการณ์ที่อาจเกิดขึ้น หลายเหตุการณ์แบบขนาน คือเกตเวย์ที่รอให้เกิดครบทุกเหตุการณ์
เหตุการณ์ขอบเขตแบบไม่ขัดจังหวะ
| ประเภท | ความหมาย | ตัวอย่างทั่วไป |
|---|---|---|
| Message | มีข้อความเข้ามาขณะที่กิจกรรมยังดำเนินต่อ ข้อความจะเริ่มเส้นทางแยก | กิจกรรม “ร่างข้อเสนอ” ยังทำงานต่อเมื่อข้อความ “ได้รับความเห็นจากผู้ตรวจสอบ” เริ่มกิจกรรม “บันทึกความเห็นจากผู้ตรวจสอบ” |
| Timer | การแจ้งเตือนหรือการตรวจสอบเป็นระยะ โดยไม่หยุดกิจกรรม | กิจกรรม “จัดการคำขอรับการสนับสนุน” มีตัวจับเวลาซ้ำทุก 8 ชั่วโมงเพื่อเริ่ม “ส่งการอัปเดตสถานะ” ขณะที่การจัดการยังดำเนินต่อ |
| Escalation | ยกระดับเรื่องควบคู่ไปกับกิจกรรม โดยไม่ทำให้กิจกรรมสิ้นสุด | กิจกรรม “แก้ไขข้อร้องเรียน” ยังดำเนินต่อ ขณะที่การยกระดับเรื่อง “ลูกค้ารายนี้เป็นลูกค้ากลยุทธ์” เริ่มกิจกรรม “แจ้งผู้อำนวยการฝ่ายลูกค้าสัมพันธ์” |
| Conditional | เงื่อนไขเริ่มเส้นทางแยกขณะที่กิจกรรมยังดำเนินต่อ | กิจกรรม “ดำเนินการคำขอสินเชื่อ” ยังทำงานต่อเมื่อ riskScore > 70 เริ่มกิจกรรม “ทำเครื่องหมายเพื่อให้ตรวจสอบ” |
| Signal | สัญญาณเริ่มเส้นทางแยกสำหรับผู้ฟังทุกคน โดยกิจกรรมยังดำเนินต่อ | กิจกรรม “เรียกใช้งานชุดคำสั่งกลางคืน” ยังทำงานต่อเมื่อสัญญาณ “ตลาดปิดแล้ว” เริ่มกิจกรรม “บันทึกยอดรวมระหว่างทาง” |
| Multiple | เหตุการณ์ใดเหตุการณ์หนึ่งจากหลายเหตุการณ์เริ่มเส้นทางแยก โดยกิจกรรมยังดำเนินต่อ | กิจกรรม “เจรจาสัญญา” ยังคงเปิดอยู่ เมื่อมีข้อความโต้แย้งจากคู่สัญญาหรือตัวจับเวลา 3 วัน จะเริ่มกิจกรรม “ส่งข้อความติดตาม” |
| Parallel Multiple | เหตุการณ์ทั้งหมดร่วมกันเริ่มเส้นทางแยก โดยกิจกรรมยังดำเนินต่อ | กิจกรรม “รอผลการตรวจสอบทั้งหมด” ยังทำงานอยู่จนกว่าจะได้รับทั้งข้อความและสัญญาณ จากนั้นจึงเริ่มกิจกรรม “บันทึกความพร้อม” |
ใช้เหตุการณ์ขอบเขตแบบไม่ขัดจังหวะสำหรับการแจ้งเตือน การติดตาม การสังเกตการณ์ และการยกระดับเรื่องควบคู่กัน เหตุการณ์เหล่านี้ไม่เปลี่ยนลำดับการไหลหลัก แต่เพิ่มเส้นทางแยกไว้ข้างๆ
ประเภทเหตุการณ์ที่ไม่ใช่เหตุการณ์ขอบเขต
เหตุการณ์บางประเภทดูเหมือนจะใช้เป็นเหตุการณ์ขอบเขตได้ แต่จริงๆ แล้วใช้ไม่ได้:
- Link ใช้เชื่อมส่วนต่างๆ ของลำดับการไหล โดยเป็นเหตุการณ์รับหรือส่งระหว่างทาง ไม่ใช่เหตุการณ์ที่แนบกับกิจกรรม
- Terminate ใช้สิ้นสุดอินสแตนซ์ของกระบวนการทั้งหมด และใช้ได้เฉพาะเป็นเหตุการณ์สิ้นสุด
- ไม่มี ไม่ใช่ตัวกระตุ้น ดังนั้นเหตุการณ์ขอบเขตจึงเป็น “ไม่มี” ไม่ได้ เพราะทุกเหตุการณ์ขอบเขตต้องมีสิ่งที่รอรับ
เพิ่มเหตุการณ์ขอบเขตใน ProcessMind
- เปิดแถบเครื่องมือ องค์ประกอบ BPMN
- เลือกประเภทจากกลุ่ม เหตุการณ์ขอบเขต สำหรับเหตุการณ์แบบขัดจังหวะ หรือเลือกจากกลุ่ม ขอบเขตที่ไม่โต้ตอบ. สำหรับเหตุการณ์แบบไม่ขัดจังหวะ
- ลากไปวางบนขอบของงาน, Subprocess, Transaction หรือ Call Activity
- ปล่อยเมาส์ เหตุการณ์จะจัดตำแหน่งชิดขอบที่ใกล้ที่สุด และกิจกรรมนั้นจะเป็นกิจกรรมหลัก
- ลากลำดับการไหลจากเหตุการณ์ขอบเขตไปยังขั้นตอนแรกของเส้นทางข้อยกเว้นหรือเส้นทางแยก
เคล็ดลับการใช้งาน:
- เมื่อลากเหตุการณ์ระหว่างทางไปวางบนขอบกิจกรรม เหตุการณ์จะถูกแนบเข้ากับกิจกรรมนั้น หากวางเหตุการณ์เดียวกันบนพื้นที่ว่าง เหตุการณ์จะเป็นเหตุการณ์รับระหว่างทางตามปกติ คุณสามารถลากไปวางบนขอบภายหลังเพื่อแนบ หรือจะลากออกจากขอบเพื่อถอดออกก็ได้
- เหตุการณ์ขอบเขตจะย้าย ซ่อน และลบไปพร้อมกับกิจกรรมหลักเสมอ โดยไม่สามารถวางแยกจากกิจกรรมได้
- เหตุการณ์แบบไม่ขัดจังหวะเป็นรายการแยกในแถบเครื่องมือ ไม่ใช่ตัวเลือกในช่องทำเครื่องหมาย หากต้องการให้กิจกรรมทำงานต่อ ให้เลือกประเภทนี้ก่อนลาก
- เมื่อส่งออก ระบบจะบันทึกการแนบเป็น
attachedToRefและการตั้งค่าแบบขัดจังหวะเป็นcancelActivityเมื่อนำเข้าไฟล์อีกครั้ง ระบบจะคืนค่าทั้งสองอย่างให้
ข้อผิดพลาดที่พบบ่อย
- เหตุการณ์ขอบเขตไม่มีลำดับการไหลออก เหตุการณ์รับตัวกระตุ้นแล้วแต่ไม่มีเส้นทางไปต่อ ทำให้เส้นทางข้อยกเว้นสิ้นสุดลงโดยไม่มีการดำเนินการ
- ใช้ตัวจับเวลาแบบไม่ขัดจังหวะทั้งที่ต้องหยุดกิจกรรม กิจกรรมยังทำงานต่อ จึงไม่มีการหยุดงานเมื่อถึงกำหนดเวลา ให้ใช้แบบขัดจังหวะเมื่อต้องการกำหนดเวลาให้หยุดงาน
- แนบเหตุการณ์ขอบเขต Error กับงานทั่วไป ให้แนบกับ Subprocess หรือ Call Activity ที่มีขั้นตอนซึ่งอาจเกิดข้อผิดพลาด
- คาดหวังให้เหตุการณ์ขอบเขตเกิดขึ้นหลังจากกิจกรรมเสร็จสิ้น เหตุการณ์จะเกิดหลังจากกิจกรรมเสร็จสิ้นไม่ได้ ยกเว้น Compensation ซึ่งพร้อมทำงานหลังจากกิจกรรมเสร็จแล้ว
- ใช้ Cancel นอก Transaction เหตุการณ์ขอบเขต Cancel กำหนดให้ใช้กับ Transaction Subprocess เท่านั้น
- ใส่เหตุการณ์แบบขัดจังหวะ 2 รายการในกิจกรรมเดียว แล้วคาดหวังให้ทั้งสองเส้นทางทำงาน ตัวกระตุ้นที่เกิดก่อนจะทำงานก่อน กิจกรรมและเหตุการณ์ขอบเขตอื่นๆ จะถูกยกเลิกไปพร้อมกัน
เหตุการณ์ทั้งหมดและสัญลักษณ์ที่เกี่ยวข้อง
| เริ่มต้น | ระหว่างทาง | สิ้นสุด | ||||||
|---|---|---|---|---|---|---|---|---|
| Type | ปกติ | Event Sub process | เหตุการณ์ กระบวนการย่อย ไม่ขัดจังหวะ | จับเหตุการณ์ | ขอบเขต | ขอบเขตแบบไม่ขัดจังหวะ | ส่งเหตุการณ์ | |
| ไม่มี | | |||||||
| ข้อความ | | | | | | | | |
| ตัวจับเวลา | | | | | | | ||
| เงื่อนไข | | | | | | | ||
| Link | | | | |||||
| สัญญาณ | | | | | | | | |
| ข้อผิดพลาด | | | | |||||
| การยกระดับ | | | | | | | ||
| การยุติ | | |||||||
| การชดเชย | | | | | ||||
| ยกเลิก | | | ||||||
| Multiple | | | | | | | | |
| Multiple Parallel | | | | | | | ||
สร้างโมเดล BPMN แบบกำหนดเอง
หัวข้อที่เกี่ยวข้อง
- Events: ประเภทเหตุการณ์ทั้งหมด
- Intermediate Event: เหตุการณ์ที่เกิดขึ้นระหว่างลำดับการไหล
- กิจกรรม: งานและ Subprocess ที่สามารถแนบเหตุการณ์ขอบเขตได้
- องค์ประกอบ BPMN ที่รองรับ: สิ่งที่ ProcessMind นำเข้าและส่งออกได้
- BPMN 2.0: คู่มือฉบับใช้งานจริง: สัญกรณ์พร้อมตัวอย่างประกอบ
ออกแบบกระบวนการให้ดีขึ้น วางโครงสร้างที่เชื่อมโยงกัน และควบคุมได้.
เริ่มใช้งานได้ทันที ไม่ต้องใช้บัตรเครดิตและไม่ต้องรอ เปลี่ยนวิธีทำงานขององค์กรให้เป็นแบบจำลองกระบวนการที่ชัดเจนและเชื่อมโยงกัน.
สร้างสถาปัตยกรรมกระบวนการ กำหนดเจ้าของและการควบคุม พร้อมจัดบทบาทและความรับผิดชอบให้สอดคล้องกันในทุกระดับ.
เริ่มทดลองใช้ฟรี แล้วสร้างรากฐานที่เชื่อถือได้สำหรับกำกับดูแล จัดการ และปรับปรุงกระบวนการอย่างต่อเนื่อง.