Introduction
Trong quá trình tìm hiểu dự án, việc hiểu rõ quy trình nghiệp vụ là vô cùng quan trọng. Bạn cần hiểu rõ mình đang làm gì, thực trạng thế nào, pain point của khách hàng là ở đâu, cần cải thiện điều gì. Từ đó sinh ra nhu cầu thể hiện một quy trình nghiệp vụ bằng một ngôn ngữ hình tượng hóa mọi sự kiện để quy trình trở nên đơn giản, dễ hiểu nhất. Hôm nay, hãy cùng mình tìm hiểu về BPMN - ngôn ngữ mô hình hóa trực quan cho các ứng dụng trong phân tích nghiệp vụ mà mọi BA đều cần thành thục nhé!
Bài viết sẽ gồm những giới thiệu cơ bản về BPMN, bao gồm:
- BPMN là gì? BPMN dùng để làm gì?
- Những thành phần chính trong BPMN
Now, let's get started!
Body
BPMN là gì? BPMN dùng để làm gì?
Business Process Model and Notation (BPMN) is a graphical representation for specifying business processes in a business process model.
(Wikipedia)
Hiểu đơn giản, BPMN là một loại ngôn ngữ ký hiệu thông dụng được sử dụng để mô hình hóa quy trình nghiệp vụ của một tổ chức. Nó là một bộ ký hiểu quy chuẩn, với các ký hiệu thân thuộc, dễ hiểu để tất cả các bên có thể dễ dàng thống nhất về mặt quy trình.
Vậy khi nào thì BA cần vẽ BPMN?
- Khi có nhiều bên cùng tương tác với nhau, việc bắt đầu với BPMN sẽ giúp cho BA xác nhận được mình đang hiểu đúng quy trình hiện tại, cũng như quy trình mong muốn của doanh nghiệp, từ đó làm tiền đề xây dựng các tài liệu chuyên sâu hơn như design, SRS, user story,...
- Khi quy trình của khách hàng chưa đủ chuẩn, BA cần đưa ra mô hình quy trình hiện tại và quy trình sau khi apply phần mềm, để khách hàng và các bên liên quan có thể hiểu, xác nhận thay đổi phù hợp với nhu cầu để bắt đầu xây dựng sản phẩm.
- Khi khách hàng chưa hiểu pain point ở đâu, BA có thể sử dụng BPMN để giải thích và chỉ ra pain point trong quy trình hiện tại.
Nói một cách ngắn gọn, hầu hết tất cả dự án BA sẽ đều cần vẽ BPMN vì phải hiểu quy trình mới có thể thực sự hiểu thực trạng và nhu cầu của khách hàng. Ngoại trừ các trường hợp quy trình của khách hàng quá đơn giản.
Vì vậy, kiến thức về mô hình hóa quy trình bằng BPMN là một kiến thức cơ bản và thiết yếu cho bất kỳ BA nào. Mọi người nhớ đọc kỹ những phần sau để nắm được rõ hơn về mô hình này nhé!
Những thành phần chính trong BPMN
Pool và Lane
Tưởng tượng trong một bể bơi, pool là toàn bộ bể còn lane là các đường bơi
Trong BPMN:
- Pool đại diện cho 1 tổ chức, tập thể, phòng ban
- Lane đại diện cho 1 cá nhân trong pool
- 1 Pool có thể có 1 hoặc nhiều lane
Ví dụ cách thể hiện Pool và Lane: Trong bộ phận HR, sẽ có các vị trí như Recruiter, Compensation, Training,... Pool: HR Department
Lane: Training, Compensation, Recruiter
Activity
Activity là những công việc cần được hoàn thành trong quy trình, được đặt trong ô chữ nhật bo góc. Activity được đặt trong Lane của chủ thể thực hiện hành động đó.
Ví dụ cách thể hiện activity:
Một nhóm các hành động phức tạp có thể được tách ra thành Sub-process, đặt trong ô chữ nhật bo góc có dấu cộng bên dưới. Khi click vào dấu (+) có thể xem toàn bộ quy trình nhỏ bên trong. Sử dụng khi quy trình quá phức tạp và người xem tổng thể không cần biết về những bước bên trong Sub-process.
Ví dụ về Sub-process:
Ngoài Sub-process, các activity còn có nhiều các thuộc tính với các ý nghĩa khác nhau, tuy nhiên ở bài này mình chỉ dừng ở mức độ cơ bản nên sẽ không nhắc đến các loại activity khác.
Event
Event diễn tả các sự kiện diễn ra trong quy trình, được ký hiệu bằng hình tròn.
Có 3 loại event:
- Start: đánh dấu sự kiện bắt đầu 1 quy trình
- Intermediate: xảy ra trong quy trình
- End: kết thúc quy trình
3 loại event này được thể hiện bằng vòng tròn bao quanh.
- Start event: 1 vòng tròn mỏng
- Intermediate event: 2 vòng tròn mỏng
- End event: 1 vòng tròn dày
Những ký hiệu bên trong thể hiện các đối tượng của event đó. Một event có thể có đối tượng hoặc không. Có nhiều loại đối tượng, tuy nhiên đối tượng mình cảm thấy được dùng nhiều nhất là message và timer.
Ở mức độ cơ bản, chúng ta sẽ hay gặp các event phổ biến như dưới đây:
Flow
Flow là các mũi tên thể hiện chiều đi của quy trình.
Các loại flow thường gặp:
- Message Flow: thể hiện một message được gửi từ quy trình này sang quy trình khác, dùng để kết nối 2 pool với nhau.
- Sequence Flow: kết nối các đối tượng trong cùng 1 quy trình, thể hiện tính thứ tự (task nào thực hiện trước, task nào thực hiện sau).
- Association: thể hiện quan hệ giữa sự vật (artifacts) và các đối tượng thuộc quy trình.
Ngoài ra, có thể bắt gặp một số flow khác như:
- Default flow: luồng mặc định sẽ đi qua nếu không thỏa mãn điều kiện
- Conditional flow: khi đạt điều kiện đưa ra thì sẽ đi theo luồng này
Gateway
Gateway (cổng) đánh dấu điểm tách ra hoặc ghép lại trong quy trình. Hiểu nôm na, khi nào quy trình cần rẽ thành nhiều hướng, hoặc từ nhiều hướng cần ghép về làm 1 đường thì chúng ta sử dụng gateway.
Quy trình sẽ diễn biến thế nào tùy thuộc vào loại gateway mà chúng ta sử dụng. Có cách loại gateway phổ biến như sau:
- Exclusive gateway: Quy trình sẽ chỉ đi theo 1 và chỉ 1 nhánh duy nhất sau gateway
Mỗi nhánh sau gateway luôn đi cùng với 1 điều kiện, các điều kiện phải loại trừ lẫn nhau (không có trường hợp nào có hơn 1 điều kiện cùng thỏa mãn)
Ví dụ:
Như trong ví dụ, sau khi editor review, nếu điểm >=7 thì sẽ upload, còn ngược lại điểm <7 sẽ send back. Sẽ chỉ xảy ra 1 trong 2 trường hợp khi quy trình đi đến gateway này.
- Parallel gateway: Quy trình sẽ đi qua tất cả các nhánh sau gateway
Nếu các task có thể hoàn thành cùng thời điểm, không task nào phụ thuộc vào task nào thì có thể sử dụng 1 parallel gateway để các task có thể được thực hiện song song.
Ví dụ:
Như trong ví dụ, trong quá trình onboard cho nhân viên mới, sau khi hiring manager điền form thông tin nhân viên mới, sẽ có 2 task có thể thực hiện song song, không liên quan đến nhau: bên IT setup máy và bên facilities set up khu vực làm việc. Vì vậy chúng ta dùng parallel gateway ở đây.
Lưu ý: tất cả các task cần được hoàn thành trước khi đóng gateway và thực hiện task khác trong quy trình.
- Event-based gateway: Quy trình sẽ đi qua nhánh thỏa mãn điều kiện
Tương tự với exclusive gateway, tuy nhiên nếu như với exclusive gateway bạn lựa chọn task nào để thực hiện qua điều kiện (điều kiện này có liên quan đến task trước đó) thì ở event-based gateway, bạn lựa chọn phụ thuộc vào các sự kiện diễn ra tại thời điểm đó (thời gian, nhận được message,...)
Ví dụ: Như trong ví dụ, Sau khi nhận được message, nếu hệ thống nhận được payment update thì sẽ xử lý thanh toán, còn trong trường hợp 1 giờ sau vẫn không nhận được update, hệ thống sẽ tự động hủy order.
Event-based gateway cũng thường đi với default flow, trong trường hợp nếu không xảy ra bất kỳ sự kiện nào được nhắc đến, quy trình sẽ tự động đi theo luồng mặc định (default).
- Inclusive gateway: Quy trình sẽ đi qua ít nhất 1 nhánh sau gateway tùy theo điều kiện
Sau gateway, mỗi nhánh sẽ có 1 điều kiện khác nhau. Nếu thỏa mãn bất kỳ điều kiện ở nhánh nào thì quy trình sẽ thực hiện các task của nhánh đó. Các điều kiện này không cần loại trừ lẫn nhau như ở exclusive gateway, hay có thể nói nếu exclusive gateway là phép XOR thì inclusive là OR.
Ví dụ: Như trong ví dụ, sau khi thực hiện khảo sát, sẽ có 3 điều kiện có thể xảy ra như trong hình. Vì vậy, sẽ có những trường hợp khách hàng hài lòng với cả sản phẩm A và B, hoặc hài lòng với sản phẩm B nhưng không hài lòng với sản phẩm A. Vì vậy inclusive gateway sinh ra để giải quyết các trường hợp này.