ป้ายกำกับ: Process Flow

UML: Activity Diagram แผนภาพแสดงขั้นตอนการทำงานของระบบ คล้ายผังงาน (Flowchart)UML: Activity Diagram แผนภาพแสดงขั้นตอนการทำงานของระบบ คล้ายผังงาน (Flowchart)

ในฐานะ Senior Architect การออกแบบระบบซอฟต์แวร์ที่แข็งแกร่งไม่ได้เริ่มต้นจากการเขียนโค้ด แต่เริ่มต้นจากการทำความเข้าใจ ‘กระบวนการ’ (Process) ทางธุรกิจทั้งหมดเสียก่อน เครื่องมือที่ทรงพลังที่สุดในการวิเคราะห์และแสดงภาพกระบวนการเหล่านี้คือ Activity Diagram (AD) ซึ่งเป็นส่วนหนึ่งของ Unified Modeling Language (UML) แม้ว่า AD จะดูคล้ายกับผังงาน (Flowchart) ทั่วไป แต่ในทางวิศวกรรมซอฟต์แวร์ AD มีความสามารถในการจำลองพฤติกรรมที่ซับซ้อน เช่น การทำงานพร้อมกัน (Concurrency) และการแยกความรับผิดชอบ (Swimlanes) ได้อย่างเป็นมาตรฐานสากล

Activity Diagram: การจำลองพฤติกรรมสู่การปฏิบัติงานจริง

Activity Diagram ถูกออกแบบมาเพื่อตอบคำถามว่า “เกิดอะไรขึ้น” ตั้งแต่จุดเริ่มต้นจนถึงจุดสิ้นสุดของงานใดงานหนึ่ง มันไม่ได้เพียงแค่แสดงเส้นทางการไหล (Flow) แต่ยังกำหนดขอบเขต (Scope) และผู้รับผิดชอบ (Actor) ในแต่ละขั้นตอนได้อย่างชัดเจน ความแตกต่างที่สำคัญเมื่อเทียบกับ Flowchart คือการรองรับแนวคิดเชิงโมเดลลิ่งที่สูงกว่า โดยเฉพาะการจัดการกิจกรรมที่เกิดขึ้นพร้อมกัน (Concurrency) ซึ่งเป็นหัวใจสำคัญของการออกแบบระบบขนาดใหญ่

การแปลงกระบวนการ (AD) สู่การทำงานของฐานข้อมูล (PostgreSQL)

ในทางปฏิบัติ การทำความเข้าใจ AD จะช่วยให้เรากำหนดขอบเขตของ Transaction และ Logic ที่ต้องเกิดขึ้นในระบบ เมื่อเรานำแนวคิดนี้มาใช้กับ PostgreSQL ซึ่งเป็นระบบฐานข้อมูลเชิงสัมพันธ์ (Relational Database) เราจะใช้คุณสมบัติของ Transaction Management (BEGIN/COMMIT) เพื่อจำลองความสมบูรณ์ของกระบวนการ (Atomicity) ที่ AD ได้กำหนดไว้

สมมติว่าเรากำลังออกแบบกระบวนการ ‘การสั่งซื้อสินค้า’ (Order Fulfillment) ซึ่งเป็นกระบวนการที่ต้องมีการตรวจสอบสต็อก (Activity 1) และการบันทึกรายการสั่งซื้อ (Activity 2) ซึ่งสองกิจกรรมนี้ต้องเกิดขึ้นพร้อมกันและสำเร็จทั้งหมดจึงจะถือว่าเสร็จสมบูรณ์ (Concurrency/Join Node) เราสามารถจำลองสิ่งนี้ด้วย Transaction ใน PostgreSQL:

SQL

-- 1. เริ่มต้นกระบวนการ (BEGIN Transaction) เพื่อให้มั่นใจว่าทุกขั้นตอนต้องสำเร็จพร้อมกัน
BEGIN;

-- 2. กิจกรรมที่ 1: ตรวจสอบและลดสต็อก (Stock Check & Deduction)
UPDATE inventory SET stock_quantity = stock_quantity - 1 WHERE product_id = 'apple';

-- 3. กิจกรรมที่ 2: บันทึกรายการสั่งซื้อ (Order Record Creation)
INSERT INTO orders (product_id, quantity, status) VALUES ('apple', 1, 'Processing');

-- 4. หากทุกขั้นตอนสำเร็จ จึงทำการยืนยัน (COMMIT) 
-- หากมีขั้นตอนใดล้มเหลว ระบบจะ ROLLBACK กลับสู่สถานะเดิม
COMMIT;

บทสรุป: การออกแบบที่ครบวงจร

Activity Diagram ไม่ใช่เพียงภาพวาด แต่เป็นแผนผังทางความคิดที่ช่วยให้เราคิดเชิงระบบ (System Thinking) ก่อนลงมือเขียนโค้ด การทำความเข้าใจการไหลของงาน (Flow) และการจัดการความพร้อมกัน (Concurrency) ผ่าน UML ทำให้เราสามารถออกแบบขอบเขตของ Transaction ในระดับฐานข้อมูลได้อย่างแม่นยำ การใช้ PostgreSQL ด้วยคำสั่ง Transaction (BEGIN/COMMIT) จึงเป็นวิธีการที่สมบูรณ์แบบในการนำโมเดลกระบวนการที่ซับซ้อนจาก AD มาทำให้เป็นจริงในระดับโค้ด ทำให้มั่นใจได้ว่าระบบจะทำงานได้อย่างถูกต้องและเชื่อถือได้ตามที่ออกแบบไว้ตั้งแต่ต้น