...

Giải ngố các ký hiệu BPMN

Cập nhật 01:09, 25/06/2023

1353 lượt xem

Admin

Giải ngố các ký hiệu BPMN

Tiếp nối chủ đề của bài một về BPMN, hôm nay mình sẽ tiếp tục đi sâu hơn vào BPMN với chủ đề: Giải ngố các ký hiệu BPMN.

Vì tính chất bài này là giới thiệu, giải thích, nên mình sợ nó sẽ hơi khô khan với anh em. Do đó bài này mình đã cố tình chôm chỉa khá nhiều hình ảnh bỏ vào. Một phần để nhìn cho nó nguy hiểm, phần khác nó sẽ giúp anh em đỡ ngán, và dễ hình dung hơn.

Okay, let’s gooooo!!!

Điều đầu tiên mình muốn nói là nhìn BPMN nó tùm lum tùm la vậy thôi, chứ thật ra nó chỉ có… 6 cục chính.

Nắm chắc được ý nghĩa 6 cục này, thì dù có gặp hình BPMN phức tạp thế nào đi chăng nữa, anh em vẫn dễ dàng bỏ túi cái một.

1. Swimlane

Swimlane được xem như là linh hồn của BPMN, làm nó khác hẳn những diagram khác. Swimlane bao gồm Pool và Lane.

Pool thể hiện một tổ chức, một bộ phận, một phòng ban, một vai trò hoặc một hệ thống nào đó. Còn Lane thể hiện các cá nhân riêng lẻ, người sẽ làm các hoạt động cụ thể.

2. Activities

2.1. Có 4 loại chính

Activity tập trung trả lời câu hỏi làm gì. Tức là nó mô tả tất cả các công việc có trong quy trình. Activity gồm 4 loại sau.

Task và Sub-Process chắc anh em cũng dễ hiểu. Còn Transaction và Call Activity mình sẽ giải thích thêm chút xíu.

Transaction về cơ bản cũng tương tự Sub-Process, nhưng nó khác ở chỗ: transaction là một chuỗi các task thể hiện sự giao dịchtức là có payment trong đó. Còn Sub-Process thì rộng nghĩa hơn. Ví dụ dưới đây cho anh em dễ hiểu.

Còn Call Activity như mình có giải thích ở hình trên thì bản chất nó giống như: mình gọi lại (triệu hồi) một quy trình mà mình đã define trước đó rồi. Ví dụ.

Đó là tổng quan về 4 loại Activity:

  • Task: ô hình chữ nhật bình thường
  • Sub-Process: ô hình chữ nhật nét đứt, có dấu cộng ở giữa
  • Transaction: ô hình chữ nhật có 2 nét bao ngoài
  • Call Activity: ô hình chữ nhật có 1 nét bao ngoài rất đậm.

2.2. Các đồ nghề trang điểm khác

Anh em nắm rõ 4 loại trên là ô kê rồi. Tuy nhiên, để thể hiện được nhiều “ý đồ” nguy hiểm hơn thì anh em phải nắm thêm mấy cái lẻ tẻ khác, gọi là Activity Marker và Task Type.

Ngó có vẻ nhiều, nhưng anh em đừng hoang mang hồ ngọc hà quá. Cũng không quá phức tạp và khó nhớ lắm. Nói theo kiểu BA thì mình sẽ facilitate nó cho anh em, tức là làm cho nó dễ hiểu hơn.

Đầu tiên sẽ là…

Sub-Process

Cái này dễ ẹc, dẹp qua một bên.

Loop

Là hành động mà nó lặp đi lặp lại theo trình tự.

Ví dụ một hôm sếp yêu cầu anh em kể một câu chuyện hấp dẫn trong đêm Year-End Party của công ty. Anh em sẽ làm theo những bước sau: brainstorm với đồng bọn >> soạn thảo kịch bản nháp >> chỉnh sửa bản nháp >> hoàn thiện >> trình sếp để ổng duyệt.

Thì lúc này, bước Edit Draft là một bước được lặp đi lặp lại nhiều lần theo trình tự. Tức là sửa lần 1, sửa lần 2, sửa lần 3, sửa lần thứ “n”… Đến khi nào cảm thấy ổn rồi thì sẽ sang bước tiếp theo: Finalize story. Đó là Loop Task.

Multi-Instance

Đây là cái rất hay nhầm với Loop. Cái này cũng là hành động lặp đi lặp lại nhiều lần, nhưng nó cần các data set khác nhau.

Ví dụ làm quy trình duyệt report. Case study đặt ra là: mỗi tháng Director sẽ duyệt report của các Manager.

Hành động duyệt các report này được thể hiện bằng một Task (tạm gọi là Evaluate Report)lặp đi lặp lại nhiều lần. Nhưng với mỗi lần duyệt, sẽ là một report khác nhau, được gửi từ các ông Manager khác nhau. Đó là các data khác nhau. Gộp lại sẽ thành một data set gồm nhiều data khác nhau.

BPMN 2.0 hơi màu mè hoa lá hẹ một chút là nó chia Multi-Instance ra làm 2 loại: song song (parallel) và tuần tự (sequential).

  • Song song tức là lặp đi lặp lại nhưng làm đồng thời, cùng một lúc. Ví dụ như ông sếp cùng một lúc duyệt các report.
  • Còn tuần tự là xong cái này, mới tới cái khác. Ví dụ ông sếp duyệt report cho Manager A rồi mới tới duyệt report cho Manager B.

Quay lại với Loop, anh em có thể thấy Multi-Instance (MI) giống với Loop. Nhưng như mình nói, MI khác Loop ở chỗ nó đến từ nhiều data set khác nhau. Lấy luôn ví dụ phía trên cho anh em dễ đối chiếu.

Ví dụ ở bước Edit Draft, thay vì anh em phải tự edit lặp đi lặp lại nhiều lần, thì anh em có thể nhờ bạn bè, đồng bọn edit dùm.

Điều này có nghĩa: khi mỗi người bạn sửa dùm, họ sẽ gửi lại bản nháp mà họ sửa, tức đó là một data. Mỗi người bạn là mỗi bản nháp khác nhau, là mỗi data khác nhau. Các data này gộp lại sẽ thành một bộ data set gồm các bản nháp khác nhau.

Khi dùng MI Parallel, tức là cùng một lúc gửi cho cả 1 đống đứa cùng sửa.

Còn MI Sequential là gửi cho thằng A sửa, rồi lấy cái bản nháp của thằng A, gửi cho thằng B sửa, thằng A xong thì mới tới thằng B. Tiếp tục như vậy, sẽ gửi cho thẳng C, thằng D…

Để chi tiết hơn thì anh em có thể note vào quy trình, lặp lại bao nhiêu lần (hoặc một điều kiện bất kỳ) thì mới cho phép quy trình chuyển qua bước tiếp theo.

Ad Hoc

Cái này thì cũng không khó hiểu, nghĩa sao dịch vậy. Ad hoc tức là được hình thành khi cần thiết và dành cho một mục đích cụ thể nhất định. Bà con hay gọi nôm na là “tùy cơ ứng biến”.

Vậy Ad Hoc Task sẽ thể hiện các task đặc biệt, có một mục đích chuyên dụng cụ thể.

Ví dụ một dealer bán xe, họ có quy trình làm việc với các ngân hàng rất rõ ràng. Nhưng riêng với ngân hàng BuTaLo-BaTaCho thì lại có quy trình làm việc khá đặc biệt, chỉ dành riêng cho ngân hàng này.

Do đó, anh em sẽ đưa quy trình này thuộc diện Ad Hoc. Và thường thì nó sẽ nằm trong một Sub-Process.

Compensation

Cái tên nói lên quá rõ. Compensation = Đền bù. Tức là phải có cái gì đó, thì mới đền bù.

Compensation task cũng chỉ là một task bình thường. Nhưng nó khác task bình thường ở chỗ: chỉ duy nhất xảy ra sau một task cụ thể nào đó.

Ví dụ: ăn bánh thì phải trả tiền. Task trả tiền là compensation, luôn xảy ra ngay sau task ăn bánh. Quay trở lại với ví dụ ban nãy.

Tóm váy lần một, Activity Marker giúp anh em thể hiện được hành vi khi thực hiện một hành động nào đó. Ví dụ thực hiện hành động một cách lặp đi lặp lại (Loop), hoặc chỉ thực hiện khi có một hành động cụ thể trước đó (Compensation).

Send Task/ Receive Task

Cái này thì quá rõ. Một task thể hiện sự nhận/ gửi thông tin, tài liệu, hoặc một data object.

User Task

User Task là task được thực hiện bởi người dùngtrên hệ thống và không thể tách nhỏ ra được nữa.

Manual Task

Manual Task là task được thực hiện bởi người dùngngoài hệ thống và được thực hiện một cách thủ công. 

Service Task

Service Task là task được thực hiện tự động bởi hệ thống.

Script Task

Script Task là task được thực hiện dựa trên một engine nào đó của hệ thống. Từ “script” ở đây có nghĩa là một đoạn code được viết ra để engine có thể parse đoạn code này chạy và thực hiện công việc.

Loại này mình thấy hiếm xuất hiện, bản thân mình thì cũng chưa từng dùng bao giờ hết. Nên thôi next nhẹ qua nhé anh em.

Business Rule Task

Lại một lần nữa, cái tên nói lên quá rõ. Business Rule Task thể hiện một task, mà task đó dựa vào một cái rule nào đó. Anh này thì cũng mới có trong BPMN 2.0 thôi. Ví dụ một phát cho nóng.

Sau khi dùng Business Rules Task, anh em sẽ có được một quy trình gọn gàng, đẹp chai ngời ngợi dưới đây.

Tóm váy lần hai, Task Type giúp anh em thể hiện được tính chất, bản chất của các hoạt động. Biết được: à, task này làm trong hệ thống hay ngoài hệ thống (user task hay manual task). Hoặc task này chạy tự động hay user sẽ làm (service task hay user task).

Ô kê, anh em sẽ cùng overview lại bằng hình dưới đây.

3. Flow

Anh em xem hình cho ngắn gọn, súc tích nhé.

4. Gateways

Gateway nghĩa là cái cổng, mà khi qua cái cổng này, luồng đi của hệ thống sẽ bị thay đổi tùy vào các điều kiện khác nhau.

BPMN thì có rất nhiều Gateway, khoảng… 68 cái. Tuy nhiên dùng nhiều nhất mình thấy chỉ có 4 loại sau.

4.1. Exclusive Gateway

Exclusive, hay còn gọi là XOR Gateway. Nó thể hiện: nhánh này hoặc nhánh kia, nhưng chỉ được phép một trong hai (hoặc nhiều) nhánh.

4.2. Inclusive Gateway

Inclusive Gateway cũng tương tự Exclusive Gateway, nhưng khác ở chỗ nó cho phép xảy ra nhiều nhánh, chứ không duy nhất một nhánh như XOR. Tuy nhiên một khi các nhánh được activate, nó phải được complete hết trước khi merge lại.

4.3. Parallel Gateway

Parallel Gateway nghĩa là các nhánh phải cùng xảy ra song song với nhau. Chỉ cần một trong các nhánh chưa được complete thì các nhánh khác không thể merge lại, và quy trình không thể đi tiếp được.

4.4. Event-Driven Gateway

Event-Driven, tức là dựa vào Event, hướng theo Event mà chạy. Về cơ bản, Event-Driven Gateway khá giống với Exclusive Gateway (XOR) vì hai tụi này chỉ cho phép một nhánh chạy duy nhất.

Nhưng nó khác ở chỗ Exclusive Gateway thì dựa vào điều kiện để chạy, còn Event-Driven Gateway dựa vào event để chạy. Tức là khi có một sự kiện nào đó xảy ra thì nó sẽ kích nhánh của sự kiện đó chạy.

Có thể anh em sẽ hơi bị confuse giữa condition và event, thấy nó cứ giống giống nhau. Nhưng mục đích dùng của hai anh này là hoàn toàn khác nhau, do đó mục đích dùng Exclusive Gateway hay Event-Driven Gateway cũng sẽ khác nhau.

  • Condition: thường đơn giản, và nó trả lời cho câu hỏi ở task trước đó. Ví dụ về quê thì về quê bằng máy bay hay về quê bằng tàu lửa? It’s very simple.
  • Event: còn event thường phức tạp hơn. Các event được gán vào các nhánh sẽ trả lời chi tiết hơn về các thông tin như: thời gian, ai là người làm, làm như thế nào… Hay nói nôm na là trả lời cho câu hỏi: sự việc gì xảy ra? 

Để hiểu chi tiết hơn về Event thì anh em cùng chuyển qua phần số 5.

5. Events

Như ở trên mình có nói thì Event diễn tả một sự việc xảy ra trong quy trình, thường mang yếu tố bên ngoài. Chứ không phải một việc gì đó được chủ đích làm bởi user (vì nếu vậy thì nó là Activity mất rồi). Event được chia làm 3 giai đoạn:

  • Start: bắt đầu
  • Intermediate: ngay tức thì/ ở giữa
  • End: kết thúc.

Tiếp đến, Event có rất nhiều loại. Mỗi loại thể hiện một ý nghĩa khác nhau. Anh em xem hình sau sẽ rõ.

Mặc dù Event có rất nhiều loại, nhưng không phải lúc cũng sử dụng đủ các loại này hết.

Ở bài này mình chỉ giới thiệu cho anh em 2 loại Event được dùng nhiều nhất, đó là: Timer Event và Message Event.

  • Message Event: diễn tả sự việc gửi và nhận thông tin, có đầy đủ Start, Intermediate và End.
  • Time Event: diễn tả một sự việc liên quan đến thời gian, nhưng chỉ có Start và Intermediate, không có End.

Một điểm nữa anh em cần chú ý là phải phân biệt được các Start Event, Intermediate Event  End Event.

  • Start Event là 1 vòng tròn nhạt bên ngoài.
  • Intermediate Event là 2 vòng tròn bên ngoài.
  • Và End Event là 1 vòng tròn đậm bên ngoài.

Ngoài ra, còn một khái niệm nữa về Event đó là Boundary Event. Boundary Event được thể hiện bởi các Event dính liền với hình chữ nhật bao quanh task. Ví dụ.

Task Subprocess A có dính một Boundary Event. Nghĩa là khi quy trình chạy tới task này, nếu trong thời gian X và hành động Y xảy ra, thì quy trình sẽ đi theo nhánh tới task Handle Timeout. Còn nếu không thì quy trình sẽ qua task Subprocess B.

Cách dùng như vầy trực diện và đơn giản hơn rất nhiều so với dùng Event-Drivent Gateway.

Mình nói Boundary Event, để bắc cầu qua một loại Event khác, đó là: Interrupting Event và Non-Interrupting Event. Vì 2 loại event này đều phải được dùng dưới dạng Boundary Event. Tức là event phải được vẽ dính liền với hình chữ nhật bao quanh task.

Interrupting Event là khi task Subprocess A đạt được điều kiện trong thời gian A và hành động Y xảy ra, thì khi đó quy trình chuyển qua nhánh Handle Timeout. Và dừng toàn bộ task Subprocess A.

Còn Non-Interrupting Event cũng tương tự. Nhưng khi chuyển qua nhánh Handle Timeout, task Subprocess A vẫn diễn ra bình thường.

6. Information Artifact

Và thành phần cuối cùng trong BPMN là Information Artifact – thể hiện một thứ rất quan trọng trong bất kỳ quy trình nào, đó là thông tin, dữ liệu.

Mình sẽ ví dụ một phát ngay cho nóng.

.

.

.

That’s it. Đó là những gì mình muốn chia sẻ trong bài ngày hôm nay. Nắm được những nội dung cơ bản trên là anh em đã có thể quẩy BPMN tới bến rồi. Mình sẽ summarize lại một tí trước khi kết thúc.

BPMN gồm 6 thành phần chính.

  • Swimlane: linh hồn của BPMN, thể hiện hành động theo các vai trò một cách rõ ràng.
  • Activity: thể hiện hành động.
  • Flow: thể hiện luồng đi của hành động.
  • Gateway: thể hiện các cổng điều kiện có trong quy trình.
  • Event: thể hiện sự việc xảy ra trong suốt quy trình.
  • Information Artifact: thể hiện các dữ liệu liên quan.

Hi vọng anh em sẽ rút chích được gì đó cho chính mình sau bài này. Hẹn gặp anh em ở bài post tiếp theo, nói về BPMN phần cuối: thực hành và các best practices khi vẽ BPMN.

Bái baiii, si du ờ gennnn!!!

 

Nguồn: Thinhnotes

CÓ THỂ BẠN QUAN TÂM

ITBA

CÂU CHUYỆN BẺ LÁI TỪ BA OUTSOURCING SANG PRODUCT OWNER

Riêng đối với PO business và PO toàn diện, trước khi chuyển đổi từ BA qua phải Brainwashing lại bản thân (Tẩy não toàn bộ tư duy gia công) vì các bạn làm BA 1 thời gian sẽ "bị" cái này vào lối mòn tư duy mà ko biết. Mục tiêu lúc nào cũng là tìm hiểu business problem, nghĩ giải pháp rồi bàn giao

ITBA

[ Góc chia sẻ ] XÂY DỰNG THƯƠNG HIỆU CÁ NHÂN NHƯ THẾ NÀO?

Bài viết này được viết hoàn toàn dựa trên trải nghiệm thực tế của bản thân và áp dụng hiệu quả trong cuộc sống của mình, hi vọng nó cũng giúp ích cho các bạn.

ITBA

Phương pháp MoSCoW là gì? Cách sử dụng Phương pháp MoSCoW như thế nào?

Trong bài viết dưới đây, True Skill sẽ giới thiệu cho bạn cách sử dụng phương pháp MoSCoW để ưu tiên các nhiệm vụ của dự án hiệu quả hơn và đảm bảo mọi người đều mong đợi những điều tương tự

ITBA

How to create a Tech Product Customers love

“INSPIRED is the authority on how to build a product that customers actually want. It’s not about hiring product managers - it’s about estab- lishing a culture that puts the user first, and builds the organization and teams around that customer to ensure that you are building the best product possible. From CEOs to APMs, this is required reading.” Nguồn: Marty Cagan

Đăng kí nhận tư vấn

Hãy nhập ngay email của bạn vào form bên dưới để được nhận tư vấn trực tiếp từ trung tâm.