BAHUB.VN
Glossary

Business Process Model and Notation(BPMN)

Process ModelingKý hiệu và Mô hình Quy trình Nghiệp vụ

Tiêu chuẩn quốc tế để mô hình hóa quy trình nghiệp vụ bằng ký hiệu đồ họa.

Định nghĩa

Vẽ quy trình bằng mấy cái hộp với mũi tên thì ai cũng vẽ được. Vấn đề là mỗi người vẽ một kiểu, đến lúc dev đọc lại hiểu khác ý BA, còn khách thì gật đầu cho xong. BPMN 2.0 là bộ ký hiệu chuẩn do OMG ban hành để chuyện đó bớt xảy ra: một hình thoi có dấu X luôn mang đúng một nghĩa, dù người vẽ ngồi ở Hà Nội hay ở Krakow.

BPMN là ngôn ngữ vẽ quy trình nghiệp vụ có ngữ pháp — mỗi ký hiệu một nghĩa cố định, đọc xong không phải quay lại hỏi tác giả.

Gồm những gì

Bản đặc tả BPMN 2.0 có hơn 100 ký hiệu, nhưng 90% sơ đồ ngoài đời chỉ dùng năm nhóm sau.

  • Event — hình tròn. Start event viền mảnh (cái gì kích hoạt quy trình), Intermediate event viền đôi (chờ tin nhắn, hết hạn timer), End event viền đậm. Một quy trình luôn phải có ít nhất một start và một end.
  • Activity — hình chữ nhật bo góc. Task là việc nguyên tử ("Kiểm tra tồn kho"); Sub-process có dấu + ở đáy, bung ra là một sơ đồ con. Đặt tên theo mẫu động từ + danh từ, đừng viết "Tồn kho".
  • Gateway — hình thoi, chỗ luồng tách ra hoặc gộp lại. Gateway tự nó không xử lý gì cả, nó chỉ định tuyến. Quyết định phải nằm ở task ngay trước đó.

Còn hai nhóm nữa thì nói bằng lời nhanh hơn là gạch đầu dòng. Mũi tên nét liền là sequence flow, chỉ được đi bên trong một pool; hai pool nói chuyện với nhau thì phải dùng message flow nét đứt. Pool là một bên tham gia — một công ty, một hệ thống ngoài — còn lane là vai trò bên trong pool đó: Sales, Kế toán, Hệ thống. Lane trả lời câu "ai làm việc này", và đây là phần khách soi kỹ nhất khi ngồi review sơ đồ.

Ba loại gateway phải phân biệt

GatewayKý hiệuNghĩaDùng khi
XOR (Exclusive)hình thoi có dấu XChọn đúng một nhánhĐơn hợp lệ thì đi tiếp, không hợp lệ thì huỷ
AND (Parallel)hình thoi có dấu +Chạy tất cả nhánh song songVừa gửi email vừa đẩy đơn sang kho
OR (Inclusive)hình thoi có dấu OChạy một hoặc nhiều nhánh tuỳ điều kiệnĐơn có hàng lạnh thì báo kho lạnh, có hàng cồng kềnh thì báo đội xe tải, có cả hai thì báo cả hai

Hình thoi để trống mặc định được hiểu là XOR. Nhiều BA vẽ hình thoi trống rồi trong đầu nghĩ là AND — đó là nguồn gốc của một đống bug luồng.

Ví dụ thực tế

"Đơn to thì em gọi điện xin sếp duyệt, sếp đi công tác thì đơn nằm đó." Trưởng nhóm bán hàng nói câu đó ở buổi khảo sát, cả phòng gật. Sàn thương mại điện tử nội địa này chạy 11.400 đơn mỗi ngày, đơn trên 20 triệu bắt buộc có người duyệt tay, và quy trình vẽ ra thì thế này:

flowchart TD
    S((Đơn hàng được tạo)) --> A[Kiểm tra tồn kho]
    A --> G1{Còn hàng?}
    G1 -- Không --> R[Gửi email báo hết hàng]
    R --> E1(((Kết thúc: huỷ đơn)))
    G1 -- Có --> G2{Giá trị đơn > 20 triệu?}
    G2 -- Không --> AUTO[Duyệt tự động]
    G2 -- Có --> SUP[Trưởng nhóm bán hàng duyệt]
    SUP --> G3{Kết quả duyệt}
    G3 -- Từ chối --> R2[Ghi lý do từ chối]
    R2 --> E2(((Kết thúc: từ chối)))
    G3 -- Đồng ý --> AUTO
    AUTO --> P[Đẩy đơn sang kho đóng gói]
    P --> E3(((Kết thúc: đơn được duyệt)))

Bản BPMN đầy đủ đặt sơ đồ này trong pool "Sàn TMĐT" với hai lane: Hệ thống (kiểm tra tồn kho, duyệt tự động, đẩy đơn) và Trưởng nhóm bán hàng (duyệt tay). Khách hàng tách thành pool riêng, nối bằng message flow nét đứt, vì khách không nằm trong tổ chức của bạn. Thêm một timer event gắn vào cạnh task duyệt tay: quá 4 giờ không ai bấm thì tự escalate lên giám đốc kinh doanh — đúng loại chi tiết mà flowchart không diễn tả nổi.

So sánh với Flowchart

Tiêu chíBPMNFlowchart
ChuẩnOMG BPMN 2.0, có file .bpmn chạy đượcKhông có chuẩn thống nhất
Ai làm việc gìPool/lane thể hiện rõPhải ghi chú thêm bằng tay
Sự kiện, timeout, lỗiCó event riêng (timer, message, error)Không diễn tả được
Song songAND gateway rõ ràngThường vẽ nhập nhằng
Người đọcBA, dev, cả BPM engineAi cũng đọc được, kể cả khách không quen

Flowchart không sai, nó chỉ ít thông tin hơn. Với một quy trình 6 bước tuyến tính, vẽ flowchart trên draw.io cho nhanh còn hơn ngồi tra ký hiệu.

Lỗi hay gặp

  • Nối hai pool bằng sequence flow nét liền. Sai ngữ pháp, giữa hai pool bắt buộc là message flow.
  • Nhồi 40 task vào một trang. Quá 15–20 phần tử thì gom lại thành sub-process.
  • Nhét cả happy path lẫn mọi ngoại lệ vào một sơ đồ. Tách theo mức: level 1 cho lãnh đạo, level 2 cho dev. Và nhớ đóng end event ở nhánh từ chối, thiếu nó thì người đọc không biết đơn đó cuối cùng đi đâu.

Camunda Modeler và bpmn.io là hai lựa chọn miễn phí xuất được file chuẩn; draw.io cũng có stencil BPMN nhưng file ra chỉ là hình vẽ, không chạy trên engine nào.