TÓM TẮT
- 1 1. Giới thiệu chung về Activity Diagram
- 2 2. Các thành phần cơ bản của Activity Diagram
- 3 3. Quy trình vẽ Activity Diagram từ A đến Z
- 3.1 Bước 1: Xác định phạm vi và mục tiêu
- 3.2 Bước 2: Thu thập thông tin và liệt kê các hành động
- 3.3 Bước 3: Xác định các điểm quyết định và vòng lặp
- 3.4 Bước 4: Chọn công cụ vẽ
- 3.5 Bước 5: Tạo Swimlane (nếu cần)
- 3.6 Bước 6: Vẽ các thành phần cơ bản
- 3.7 Bước 7: Thêm các yếu tố nâng cao (nếu cần)
- 3.8 Bước 8: Kiểm tra và tinh chỉnh
- 3.9 Bước 9: Ghi chú và tài liệu hoá
- 3.10 Bước 10: Xuất bản và chia sẻ
- 4 4. Ví dụ thực tế: Vẽ Activity Diagram cho quy trình “Xử lý đơn hàng”
- 5 5. Các lỗi thường gặp khi vẽ Activity Diagram và cách khắc phục
- 6 6. Các mẹo nâng cao để làm Activity Diagram chuyên nghiệp
- 7 7. Khi nào nên sử dụng Activity Diagram thay vì các loại diagram khác?
- 8 8. Tổng kết
1. Giới thiệu chung về Activity Diagram
Activity Diagram (biểu đồ hoạt động) là một trong những loại biểu đồ quan trọng trong UML (Unified Modeling Language). Nó giúp mô tả luồng công việc (workflow), các hành động (action) và các quyết định (decision) trong một hệ thống hoặc một quy trình nghiệp vụ. Khi bạn muốn hiểu cách một quy trình diễn ra, từ bước đầu tiên cho đến khi hoàn thành, Activity Diagram là công cụ lý tưởng. Không chỉ giúp các nhà phân tích nghiệp vụ, lập trình viên mà còn hỗ trợ các bên liên quan (stakeholder) nắm bắt nhanh chóng luồng công việc.
1.1 Lợi ích của việc vẽ Activity Diagram
- Trực quan hóa quy trình: Biểu đồ giúp mọi người nhìn thấy toàn bộ quy trình một cách rõ ràng, giảm thiểu hiểu lầm.
- Phát hiện lỗi và cải tiến: Khi mô tả quy trình dưới dạng đồ họa, bạn dễ dàng nhận ra các bước thừa, vòng lặp vô nghĩa hay điểm nghẽn.
- Giao tiếp hiệu quả: Các thành viên trong dự án có thể cùng nhau thảo luận, chỉnh sửa và đồng thuận về quy trình.
- Tài liệu hóa: Hoạt động được ghi lại dưới dạng biểu đồ là tài liệu quan trọng cho việc bảo trì và nâng cấp hệ thống.
2. Các thành phần cơ bản của Activity Diagram
Trước khi bắt đầu vẽ, bạn cần nắm rõ các ký hiệu (notation) tiêu chuẩn trong UML:
| Thành phần | Ký hiệu | Mô tả |
|---|---|---|
| Initial Node | ◉ (điểm tròn đen) | Điểm bắt đầu của quy trình. |
| Final Node | ◉ (điểm tròn đen trong vòng tròn trắng) | Kết thúc của toàn bộ quy trình. |
| Action / Activity | Hình chữ nhật với góc bo | Một hành động cụ thể hoặc một công việc. |
| Decision Node | Hình thoi | Điểm quyết định, cho phép luồng đi theo các nhánh khác nhau dựa trên điều kiện. |
| Merge Node | Hình thoi | Kết hợp các nhánh lại thành một luồng duy nhất. |
| Fork Node | Đường thẳng ngang (hoặc dọc) với các đường xuất phân nhánh | Tạo ra các luồng song song. |
| Join Node | Đường thẳng ngang (hoặc dọc) với các đường vào hợp nhất | Đồng bộ hoá các luồng song song lại thành một. |
| Swimlane (Lane) | Hình chữ nhật dài chia thành các “lane” | Phân chia các hành động theo người thực hiện, hệ thống, hoặc bộ phận. |
| Object Flow | Mũi tên kèm “object” | Dòng dữ liệu hoặc tài nguyên di chuyển giữa các hành động. |
| Control Flow | Mũi tên đơn | Dòng điều khiển, xác định thứ tự thực hiện các hành động. |
| Signal | Mũi tên gạch chéo | Gửi/nhận tín hiệu (event) giữa các phần của biểu đồ. |
3. Quy trình vẽ Activity Diagram từ A đến Z
Bước 1: Xác định phạm vi và mục tiêu

Có thể bạn quan tâm: Học Cách Vẽ Tranh: Hành Trình Từ Người Mới Đến Nghệ Sĩ
Trước khi mở bất kỳ công cụ vẽ nào, hãy trả lời các câu hỏi sau:
- Mục tiêu của quy trình là gì? (Ví dụ: Đăng ký tài khoản, xử lý đơn hàng, duyệt yêu cầu nghỉ phép)
- Ai là người thực hiện các bước? (Người dùng, hệ thống, bộ phận kế toán, …)
- Kết quả cuối cùng muốn đạt được là gì? (Xác nhận, báo cáo, cập nhật dữ liệu)
Việc có câu trả lời rõ ràng sẽ giúp bạn quyết định số lượng swimlane, các quyết định (decision) cần có và mức độ chi tiết.
Bước 2: Thu thập thông tin và liệt kê các hành động
Sử dụng các kỹ thuật như:
- Phỏng vấn các bên liên quan.
- Quan sát quy trình thực tế.
- Phân tích tài liệu (hướng dẫn, SOP).
Sau đó, viết ra danh sách các hành động theo thứ tự logic. Ví dụ cho quy trình “Đăng ký tài khoản”:
- Người dùng mở trang đăng ký.
- Nhập thông tin cá nhân.
- Kiểm tra tính hợp lệ của dữ liệu.
- Gửi email xác thực.
- Người dùng xác thực qua email.
- Hoàn tất đăng ký.
Bước 3: Xác định các điểm quyết định và vòng lặp
Mỗi quyết định (if/else) trong quy trình sẽ trở thành một Decision Node. Ví dụ:
- Kiểm tra tính hợp lệ: Nếu dữ liệu hợp lệ → bước 4; ngược lại → trả về lỗi và yêu cầu sửa lại.
Nếu quy trình có các vòng lặp (ví dụ: “Yêu cầu người dùng nhập lại thông tin cho đến khi hợp lệ”), bạn sẽ dùng Loop Node (thường biểu diễn bằng một decision node quay lại một action).
Bước 4: Chọn công cụ vẽ

Có thể bạn quan tâm: Hướng Dẫn Cách Vẽ: Từ Cơ Bản Đến Nâng Cao Cho Người Mới Bắt Đầu
Có nhiều công cụ hỗ trợ vẽ Activity Diagram:
- Microsoft Visio: Đầy đủ ký hiệu UML, dễ sử dụng cho người đã quen Office.
- Lucidchart / draw.io (diagrams.net): Trực tuyến, chia sẻ dễ dàng.
- StarUML, Enterprise Architect, PlantUML (dành cho lập trình viên muốn tạo diagram từ code).
- Miro, Mural: Thích hợp cho brainstorming nhóm.
Chọn công cụ phù hợp với quy mô dự án và thói quen làm việc của đội ngũ.
Bước 5: Tạo Swimlane (nếu cần)
Nếu quy trình có nhiều bên thực hiện, hãy chia biểu đồ thành các lane:
- Lane 1: Người dùng.
- Lane 2: Hệ thống.
- Lane 3: Email Server.
Việc này giúp người xem nhanh chóng hiểu ai chịu trách nhiệm cho mỗi hành động.
Bước 6: Vẽ các thành phần cơ bản
- Initial Node: Đặt ở đầu mỗi lane (hoặc chung nếu không cần phân lane).
- Action: Vẽ các hình chữ nhật, ghi ngắn gọn mô tả công việc (max 5-7 từ).
- Control Flow: Kết nối các action bằng mũi tên.
- Decision Node: Đặt sau các action cần quyết định, gắn nhãn điều kiện trên mỗi nhánh (ví dụ: “Hợp lệ?”, “Có gửi email?”).
- Merge / Join: Khi các nhánh quay lại chung, sử dụng merge node để hợp nhất.
Bước 7: Thêm các yếu tố nâng cao (nếu cần)
- Fork & Join: Khi có các công việc thực hiện đồng thời (ví dụ: “Gửi email” và “Ghi log” có thể chạy song song).
- Object Flow: Đánh dấu dữ liệu truyền qua các action (ví dụ: “UserInfo”, “VerificationToken”).
- Signal: Khi có event bất đồng bộ (ví dụ: “User clicks link trong email”).
Bước 8: Kiểm tra và tinh chỉnh
- Kiểm tra tính toàn vẹn: Đảm bảo mọi đường đi từ Initial Node đều tới Final Node, không có “dangling” (đường không kết thúc).
- Loại bỏ vòng lặp vô nghĩa: Nếu có vòng lặp nhưng không có điều kiện dừng, hãy thêm điều kiện hoặc giới hạn.
- Đánh giá độ rõ ràng: Nhờ một người không tham gia dự án đọc và hiểu biểu đồ. Nếu họ gặp khó khăn, bạn cần cải thiện nhãn hoặc cấu trúc.
Bước 9: Ghi chú và tài liệu hoá

Có thể bạn quan tâm: Cách Vẽ Đồng Lúa: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- Thêm chú thích (notes) cho các action phức tạp.
- Ghi lại các giả định (assumptions) và ràng buộc (constraints) nếu có.
- Đánh số các bước (optional) để dễ tham chiếu trong tài liệu.
Bước 10: Xuất bản và chia sẻ
- Export dưới dạng PDF, PNG hoặc SVG để đưa vào tài liệu dự án.
- Upload lên hệ thống quản lý tài liệu (Confluence, SharePoint) hoặc repository (Git) để mọi người có thể truy cập và cập nhật.
4. Ví dụ thực tế: Vẽ Activity Diagram cho quy trình “Xử lý đơn hàng”
Sau đây là một ví dụ chi tiết, từng bước, mô tả cách vẽ Activity Diagram cho quy trình bán hàng trực tuyến.
4.1. Xác định phạm vi
- Mục tiêu: Từ khi khách hàng đặt hàng đến khi giao hàng hoàn thành.
- Các bên liên quan: Khách hàng, Hệ thống web, Bộ phận kho, Bộ phận giao hàng, Hệ thống thanh toán.
- Kết quả: Đơn hàng được giao thành công, thông báo cho khách hàng.
4.2. Liệt kê các hành động
| Bước | Hành động |
|---|---|
| 1 | Khách hàng chọn sản phẩm và thêm vào giỏ |
| 2 | Khách hàng tiến hành thanh toán |
| 3 | Hệ thống kiểm tra tồn kho |
| 4 | Nếu đủ hàng → tạo đơn đặt hàng; nếu không → thông báo hết hàng |
| 5 | Hệ thống gửi yêu cầu thanh toán tới Payment Gateway |
| 6 | Payment Gateway trả về kết quả (thành công/ thất bại) |
| 7 | Nếu thanh toán thành công → cập nhật trạng thái “Đã thanh toán” |
| 8 | Bộ phận kho nhận yêu cầu lấy hàng |
| 9 | Kiểm tra lại tồn kho, lấy hàng và đóng gói |
| 10 | Gửi thông tin giao hàng tới bộ phận vận chuyển |
| 11 | Vận chuyển giao hàng tới khách |
| 12 | Khách hàng xác nhận nhận hàng |
| 13 | Hoàn thành đơn hàng, gửi email cảm ơn |
4.3. Xác định quyết định

Có thể bạn quan tâm: Cách Vẽ Đồ Chơi: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- Decision 1: Tồn kho? (Có / Không)
- Decision 2: Kết quả thanh toán? (Thành công / Thất bại)
- Decision 3: Nhận hàng? (Có / Không)
4.4. Vẽ Swimlane
| Lane | Chủ thể |
|---|---|
| Lane 1 | Khách hàng |
| Lane 2 | Hệ thống web |
| Lane 3 | Payment Gateway |
| Lane 4 | Bộ phận kho |
| Lane 5 | Bộ phận giao hàng |
4.5. Biểu đồ (mô tả bằng text)
Initial Node --> (Chọn sản phẩm) --> (Thêm vào giỏ) --> (Tiến hành thanh toán)
--> Decision: Tồn kho? - (Có) --> (Tạo đơn đặt hàng) --> (Gửi yêu cầu thanh toán) --> (Payment Gateway) --> Decision: Kết quả thanh toán? - (Thành công) --> (Cập nhật trạng thái "Đã thanh toán") --> (Bộ phận kho lấy hàng) --> (Kiểm tra tồn kho lần 2) --> (Đóng gói) --> (Gửi thông tin giao hàng) --> (Bộ phận giao hàng) --> (Giao hàng) --> Decision: Khách xác nhận? - (Có) --> (Gửi email cảm ơn) --> Final Node - (Không) --> (Gửi lại thông báo) --> (Quá trình kết thúc) - (Thất bại) --> (Thông báo lỗi thanh toán) --> Final Node - (Không) --> (Thông báo hết hàng) --> Final Node
4.6. Các lưu ý khi vẽ
- Sử dụng ký hiệu Fork/Join cho các công việc song song như “Gửi email xác nhận” và “Cập nhật hệ thống”.
- Object Flow: Dòng “OrderID”, “PaymentToken” nên được gắn nhãn để rõ ràng.
- Signal: Khi Payment Gateway trả về kết quả, có thể dùng Signal để biểu thị event bất đồng bộ.
5. Các lỗi thường gặp khi vẽ Activity Diagram và cách khắc phục
| Lỗi | Mô tả | Cách khắc phục |
|---|---|---|
| Quá chi tiết | Vẽ quá nhiều action nhỏ, gây rối mắt. | Tổng hợp các hành động liên tiếp thành một action chung, chỉ chi tiết ở mức quan trọng. |
| Thiếu Decision Node | Khi có điều kiện mà không dùng decision, dẫn tới luồng không rõ ràng. | Xác định mọi “if/else”, “switch” và biểu diễn bằng decision node. |
| Vòng lặp vô hạn | Không có điều kiện dừng hoặc điều kiện luôn true. | Thêm điều kiện dừng hợp lý, hoặc giới hạn số vòng lặp. |
| Không có Merge/Join | Khi các nhánh quay lại chung mà không dùng merge, khiến luồng rối. | Dùng merge node để hợp nhất các nhánh, dùng join cho các luồng song song. |
| Không sử dụng Swimlane khi cần | Khi có nhiều bên thực hiện, mà biểu đồ không chia lane, người xem khó theo dõi. | Phân lane theo người/ hệ thống thực hiện. |
| Thiếu chú thích | Các action phức tạp không có giải thích, gây hiểu lầm. | Thêm note hoặc comment cho các action quan trọng. |
| Kết nối không đúng hướng | Mũi tên đi ngược chiều hoặc không nối tới node tiếp theo. | Kiểm tra lại thứ tự các flow, sử dụng công cụ hỗ trợ “auto‑layout”. |
6. Các mẹo nâng cao để làm Activity Diagram chuyên nghiệp

- Sử dụng màu sắc: Màu xanh cho các hành động người dùng, màu cam cho hệ thống, màu đỏ cho lỗi. Tuy nhiên, không lạm dụng, tránh gây rối.
- Áp dụng chuẩn BPMN: Khi quy trình kinh doanh phức tạp, có thể kết hợp với BPMN (Business Process Model and Notation) để mô tả chi tiết hơn.
- Tạo reusable sub‑activities: Nếu một tập hợp hành động xuất hiện trong nhiều quy trình, hãy tạo một “sub‑activity” và tái sử dụng (UML hỗ trợ “call behavior action”).
- Tích hợp với tài liệu yêu cầu: Gắn link hoặc mã QR tới tài liệu chi tiết của mỗi action để người đọc nhanh chóng truy cập.
- Version control: Đặt tên file kèm ngày/version (vd: ActivityDiagram_Order_2024v2.uml) và lưu vào hệ thống quản lý mã nguồn để theo dõi thay đổi.
7. Khi nào nên sử dụng Activity Diagram thay vì các loại diagram khác?
| Trường hợp | Lý do chọn Activity Diagram |
|---|---|
| Mô tả luồng công việc | Activity Diagram tập trung vào thứ tự và điều kiện. |
| Cần biểu diễn đồng thời | Fork/Join cho phép mô tả các tác vụ song song. |
| Khi muốn thể hiện quyết định | Decision node giúp hiển thị các nhánh logic. |
| Không cần chi tiết lớp/đối tượng | Nếu không cần mô tả cấu trúc dữ liệu, lớp, thì Use Case hoặc Class Diagram không cần. |
| Quy trình nghiệp vụ | Khi muốn mô tả quy trình kinh doanh (order processing, hiring, …). |
Nếu mục tiêu là mô tả cấu trúc dữ liệu (Class Diagram), mối quan hệ tĩnh (Component Diagram) hoặc tương tác theo thời gian (Sequence Diagram), thì nên dùng loại diagram tương ứng.
8. Tổng kết
Việc vẽ Activity Diagram không chỉ là một bước trong thiết kế phần mềm mà còn là công cụ mạnh mẽ để hiểu, phân tích và tối ưu hoá quy trình nghiệp vụ. Bắt đầu từ việc xác định mục tiêu, liệt kê các hành động, xác định quyết định, sau đó chọn công cụ và thực hiện vẽ theo các quy tắc chuẩn UML, bạn sẽ có được một biểu đồ sạch sẽ, dễ hiểu và có giá trị thực tiễn cao.
Hãy luôn nhớ:
- Giữ sự đơn giản: Chỉ vẽ những gì cần thiết.
- Kiểm tra tính toàn vẹn: Mọi luồng phải bắt đầu và kết thúc hợp lệ.
- Giao tiếp: Đưa biểu đồ cho các bên liên quan để nhận phản hồi và cải thiện.
- Cập nhật: Khi quy trình thay đổi, biểu đồ cũng cần được chỉnh sửa kịp thời.
Với những hướng dẫn chi tiết trên, bạn đã sẵn sàng để tự tin vẽ Activity Diagram cho bất kỳ dự án nào, từ các quy trình nội bộ đơn giản cho tới các hệ thống doanh nghiệp phức tạp. Chúc bạn thành công và luôn tạo ra những mô hình rõ ràng, hiệu quả!
