Thời gian và chi phí
Hai đại lượng, hai cách cộng gộp khác nhau.
Ba con số của một bước
| Ô nhập | Nghĩa | Ví dụ |
|---|---|---|
| Phút làm | Thời gian có người thật sự ngồi làm | Ký một bộ hồ sơ: 5 phút |
| Phút chờ | Hồ sơ nằm đó, chưa ai đụng tới | Chờ giám đốc rảnh: 1.410 phút (gần một ngày) |
| Chi phí | Tiền cho một lượt chạy bước đó | 600.000 VND |
Với quy trình phê duyệt, thời gian chờ thường lớn hơn thời gian làm nhiều lần. Gộp cả hai vào một ô thì báo cáo hoặc nói dối về thời hạn, hoặc nói dối về công sức. Tách ra thì có ngay hai con số mà mọi đề xuất cải tiến đều cần: quy trình mất bao lâu và tốn bao nhiêu giờ công.
Hai con số tổng hợp
- Thời gian trôi qua — từ lúc bắt đầu tới lúc xong một hồ sơ. Đây là con số để hẹn hạn với khách.
- Công sức thực làm — tổng phút người bỏ ra. Đây là con số để tính cần bao nhiêu nhân sự.
Trong khối song song hai con số này đi theo hai luật khác nhau:
| Tuần tự | Song song | |
|---|---|---|
| Thời gian trôi qua | Cộng | MAX — các nhánh chạy chồng lên nhau |
| Công sức | Cộng | TỔNG — mỗi nhánh có một người thật ngồi làm |
| Chi phí | Cộng | TỔNG |
Công sức chia cho thời gian trôi qua. Quy trình phê duyệt nội bộ thường rơi vào khoảng 2–10%: nghĩa là hơn 90% thời gian hồ sơ chỉ nằm chờ. Đây thường là chỗ cắt được nhiều nhất mà không cần ai làm nhanh hơn.
Bước chạy nhiều thực thể
Có những bước chạy nhiều lần trong cùng một lượt: ký 20 hợp đồng, duyệt 8 dòng chi tiết, gửi thư cho 50 khách. Trong hộp thoại Chi tiết của bước, khai Số thực thể và Cách chạy.
| Cách chạy | Thời gian trôi qua | Công sức | Chi phí |
|---|---|---|---|
| Song song (cùng lúc) | × 1 — các thực thể chồng lên nhau | × n | × n |
| Tuần tự (lần lượt) | × n | × n | × n |
Ví dụ ký 20 hợp đồng, mỗi bản 20 phút: chạy song song thì quy trình chỉ chậm thêm 20 phút nhưng tốn 400 phút công; chạy tuần tự thì mất trọn 400 phút đồng hồ. Cùng một công việc, hai con số thời hạn khác hẳn nhau — đó là lý do phải khai cách chạy.
Trên sơ đồ, bước nhiều thực thể có ký hiệu BPMN ở đáy hình: ba vạch
dọc là song song, ba vạch ngang là tuần tự, kèm
×n.
Sự kiện biên: đường ngoại lệ
Hồ sơ đang thẩm định thì quá hạn, khách rút đơn, hệ thống lỗi — những chuyện đó không đi theo luồng chính. Trong BPMN chúng là sự kiện biên (boundary event): một vòng tròn đôi nằm trên viền của bước. Mở Chi tiết của bước, chọn Loại Sự kiện, Phân loại Biên, rồi chọn Gắn trên bước.
Về con số, đây đúng là một nhánh rẽ khỏi bước với xác suất p: phần
p được trừ ra trước, rồi 1 − p còn lại mới
chia cho các nhánh thường. Khai “quá hạn 20%” cùng hai nhánh 50/50 thì kết quả là
20% / 40% / 40%, không phải 16,7% / 41,7% / 41,7%.
Sự kiện biên chưa có xác suất được tính là không bao giờ xảy ra — kết quả y hệt lúc công cụ chưa hiểu sự kiện biên. Công cụ sẽ nhắc bạn điền, chứ không tự chia đều 50/50 rồi đưa ra một con số bịa.
Nếu đường ngoại lệ rời khỏi một khối song song, công cụ hiểu là ngoại lệ ngắt cả khối: các nhánh còn lại dừng theo. Bạn sẽ thấy một dòng cảnh báo nói rõ điều đó, vì đây là một giả định về nghiệp vụ chứ không phải một quy tắc hiển nhiên.
Biên ngắt và biên không ngắt
Hai loại này là hai ngữ nghĩa nghiệp vụ ngược nhau, và công cụ tính chúng khác nhau:
- Ngắt — “quá hạn thì huỷ thẩm định”. Bước chủ bị huỷ, hồ
sơ rẽ hẳn sang nhánh ngoại lệ. Phần luồng chính phía sau chỉ chạy
1 − plần. - Không ngắt — “quá hạn thì nhắc, thẩm định vẫn chạy tiếp”. Bước chủ hoàn thành bình thường và nhánh nhắc chạy song song. Nên nó cộng thêm công sức và chi phí, nhưng không cộng thêm thời gian trôi qua trừ khi nhánh đó dài hơn chính bước chủ. Phần luồng chính phía sau vẫn chạy đủ 1 lần.
Thẩm định 60 phút · nhắc 20 phút, xảy ra 30% · trả kết quả 10 phút
Ngắt : 60 + 0,3×20 + 0,7×10 = 73 phút (trả kết quả chỉ chạy 0,7 lần)
Không ngắt: trôi qua 0,7×60 + 0,3×max(60,20) + 10 = 70 phút
công sức 60 + 0,3×20 + 10 = 76 phút
Đặt ở hộp thoại chi tiết bước, ô Ngắt bước chủ. Đọc từ thuộc tính
cancelActivity của file BPMN và ghi ngược ra khi xuất.
Một trường hợp còn là cận trên, và công cụ nói ra chứ không im lặng: nhánh không ngắt quay lại luồng chính thay vì kết thúc riêng. Cùng với sự kiện biên gắn trên bước nhiều thực thể — ở đó xác suất đang được hiểu là cho cả bước, rút thăm một lần mỗi lượt chạy, không phải cho từng thực thể.
Sự kiện hẹn giờ và cổng chờ sự kiện
Sự kiện trung gian kiểu hẹn giờ (timer) — “chờ 3 ngày”, “hết 48 giờ” — được tính thẳng vào thời gian chờ. Quy trình dài ra đúng bằng chừng ấy, nhưng không tốn một phút công nào: trong lúc đợi hết hạn không có ai ngồi làm.
Không chỉ hẹn giờ: sự kiện chờ thông điệp, chờ tín hiệu và chờ đủ điều kiện cũng là đứng đợi, nên cũng vào thời gian chờ. "Chờ khách bổ sung hồ sơ 2 ngày" khai bằng kiểu nào cũng cho một con số công sức như nhau.
Riêng bước kiểu chờ nhận (receive task) thì công cụ không tự đổi — nó là một bước nên bạn có thể cố ý khai thời gian làm cho nó. Công cụ chỉ nhắc, để bạn tự quyết.
Hẹn giờ ở điểm bắt đầu là chu kỳ kích hoạt quy trình, còn hẹn giờ trên viền một bước là ngưỡng kích hoạt ngoại lệ — cả hai đều không phải thời gian hồ sơ nằm trong quy trình, nên không được cộng vào đâu cả.
Cổng chờ sự kiện (event-based) là chỗ quy trình đứng đợi xem chuyện gì đến trước: khách trả lời, hay quá hạn. Về con số nó giống hệt cổng loại trừ — xác suất mỗi nhánh là khả năng nhánh đó “thắng”.
Thời gian trôi qua của cổng chờ sự kiện đang lấy trung bình có trọng số của các nhánh, chứ không phải nhánh nào đến trước. Với “khách trả lời trong 10 phút (70%) hoặc quá hạn 3 ngày (30%)”, con số là 0,7 × 10 + 0,3 × 4320, không phải 10. Nếu bạn cần đúng nghĩa “cái nào đến trước”, hãy khai thẳng thời lượng vào từng nhánh.
Sự kiện kết thúc kiểu dừng hẳn (terminate) — loại cắt luôn mọi nhánh khác đang chạy — chưa được hỗ trợ: công cụ tính nó như một điểm kết thúc bình thường nên các nhánh còn lại vẫn được cộng đủ. Khi nạp file có nó, bạn sẽ thấy dải cảnh báo nói rõ điều đó.
Cổng OR: mở một tập con các nhánh
Cổng OR (bao gồm) khác hẳn hai cổng kia: mỗi nhánh tự quyết định mở hay không, độc lập với các nhánh khác. "Cần thẩm định kỹ thuật 60%, cần thẩm định pháp lý 50%" nghĩa là hai sự kiện riêng biệt — tổng không cần bằng 100%, và có lượt cả hai cùng chạy.
Công cụ duyệt hết các tổ hợp mở được. Với hai nhánh trên (60 phút / 100k và 40 phút / 80k): 30% số lượt chỉ chạy nhánh một, 20% chỉ nhánh hai, 30% cả hai — cộng lại ra 55 phút và 125k. Tính như cổng AND (mọi nhánh đều chạy) sẽ ra 60 phút và 180k, tức là lệch 36% thời gian và 80% chi phí.
Với 60% và 50% thì khả năng “không nhánh nào mở” là 20%. BPMN không cho phép điều đó (hồ sơ sẽ kẹt lại ở cổng), nên phần 20% ấy được chia lại cho các tổ hợp còn lại. Khi tỉ lệ này đáng kể, công cụ hiện một dòng nói rõ.
Nhánh chưa khai xác suất được coi là luôn mở — đúng như cách công cụ đối xử với cổng OR trước đây, nên quy trình cũ không đổi lấy một con số. Công cụ sẽ nhắc bạn điền, và nhắc riêng trường hợp bạn điền vài nhánh rồi quên phần còn lại.
Cổng OR không có cổng gộp thì không tính được theo tổ hợp: lúc đó các nhánh không bao giờ cùng mở và xác suất mở bị hiểu thành tỉ lệ chia (60% và 50% thành 54,5% và 45,5%). Công cụ nói rõ con số bị đổi thành gì — thêm một cổng gộp OR là tính đúng trở lại.
Bộ phận, bên tham gia và luồng thông điệp
Mỗi bước có thể khai Vùng (vai trò trong quy trình) và
Bên tham gia (tổ chức riêng — pool trong BPMN). Nạp file BPMN thì
hai thứ này được đọc sẵn từ laneSet và participant.
Trên sơ đồ, các bước cùng một lane được xếp vào một dải ngang có tên ở mép trái — đúng cách vẽ swimlane quen thuộc.
Đây là chỉ số đáng giá nhất mà bộ phận mang lại: mỗi lần hồ sơ chuyển từ bộ phận này sang bộ phận khác là một lần nó vào hàng chờ của người tiếp theo. Đó thường là nguồn thời gian chờ lớn nhất, và là chỗ cắt được mà không ai phải làm nhanh hơn. Con số tính theo số lần chạy kỳ vọng: một vòng rework đi qua hai bộ phận hai lượt là bốn lần đổi tay, không phải hai.
Luồng thông điệp (message flow) là trao đổi giữa hai bên — hồ sơ không đi theo nó. Công cụ vẽ nó bằng nét đứt và không tính phần việc của bên kia vào thời gian, chi phí hay số lần chạy của quy trình này. Coi nó như luồng thường thì mọi con số phía sau sai hết: một quy trình 40 phút bị báo thành 70 phút vì đi vòng qua bên khách hàng.
Trong bảng Luồng, cột Loại cho phép đổi một luồng thành thông điệp. Luồng thông điệp không có xác suất, nên ô xác suất bị khoá lại.
Quy trình con
Một bước có thể chứa cả một quy trình bên trong: "Xác minh tài
sản" gồm khảo sát rồi định giá. Nạp file BPMN có subProcess thì phần
ruột được đọc vào luôn; trên sơ đồ nó hiện thành một bước có dấu ⊞
ở đáy, còn bảng chỉ số ghi rõ bên trong có bao nhiêu bước.
Cách tính: công cụ lấy kỳ vọng của cả đồ thị bên trong rồi gán cho một bước duy nhất ở quy trình cha — đúng cách nó đang thu gọn khối song song. Nhờ vậy ruột có cổng rẽ nhánh, vòng lặp hay khối song song riêng đều tính đúng, và vòng lặp hoặc số thực thể ở cấp cha tự nhân lên: khối 40 phút nằm trong một vòng chạy hai lượt là 80 phút.
Khi bước đã chọn nội dung (một quy trình khác, hoặc sơ đồ nhúng sẵn trong file), ba ô đó khoá lại và chỉ hiện số lấy từ bên trong. Cần thêm thời gian hay chi phí cho việc điều phối, quản lý cả khối thì thêm một bước bên trong quy trình con đó — ở đó nó hiện ra trên sơ đồ, đếm được và sửa được, thay vì nấp trong một ô ở quy trình cha mà không ai nhìn thấy.
Ba ô đó chỉ mở khi Loại là Quy trình con mà bạn chưa chọn nội dung nào.
Một quy trình con có hai kiểu nội dung. Liên kết tới một quy trình khác trong tài khoản của bạn: chỉ có một bản, nên sửa quy trình đó thì mọi quy trình đang dùng nó đổi theo — huy hiệu 🔗. Sơ đồ nhúng đến từ file bạn nhập vào: nó là một bản sao nằm trong chính quy trình này, sửa nơi khác không ảnh hưởng gì — huy hiệu ⊞.
Xuất ra file: bước liên kết ghi theo ký pháp chuẩn
callActivity, và quy trình được gọi đi kèm ngay trong cùng file —
mở ở Camunda hay Bizagi vẫn thấy đủ, nhập lại vào đây thì nối lại đúng
quy trình cũ thay vì đẻ ra một bản sao. Con số cũng được ghi kèm làm
mạng lưới hứng: file rơi vào tay công cụ khác thì vẫn đọc ra đúng số.
Người nhận file không đọc được quy trình được liên kết (nó thuộc tài khoản của bạn), nên với họ bước đó chỉ còn bốn con số đã chụp — kèm ngày chụp, và quá 30 ngày thì công cụ báo rõ là số đã cũ chứ không im lặng dùng tiếp.
Sơ đồ nhúng nhập từ file không sửa được bằng bảng Bước — bảng đó chỉ dựng dòng cho các bước ở cấp ngoài cùng. Nút “Tách thành quy trình riêng” trong hộp thoại Chi tiết bước biến ruột của nó thành một quy trình bình thường trong danh sách, còn bước cha chuyển sang liên kết tới quy trình đó. Tổng của quy trình hiện tại không đổi một con số nào; đổi lại là từ đó bạn sửa được nó, đánh phiên bản được, và dùng chung được cho nhiều quy trình khác.
Trang của một quy trình đang được dùng có khối “Đang được dùng bởi” liệt kê những quy trình gọi nó, kèm hệ số nhân: bên gọi bọc liên kết trong một bước 20 thực thể tuần tự thì bạn thêm 5 phút ở đây, bên đó tăng 100 phút. Cũng vì thế, xoá một quy trình đang được dùng bị chặn lại — công cụ liệt kê ai đang phụ thuộc trước khi bạn quyết.
Nếu quy trình được liên kết bị xoá, công cụ không tính bằng 0 mà dùng số liệu đã chụp ở lần lưu gần nhất, kèm một dòng đỏ ghi rõ ngày chụp. Ảnh chụp quá 30 ngày thì thôi dùng — số cũ một tuần là ước lượng, số cũ nửa năm là bịa. Vòng tròn (A gọi B, B gọi lại A) bị chặn ngay khi chọn.
Quy trình con rỗng (chưa nạp được ruột) hoặc không tính được kỳ vọng (ruột lặp vô hạn, không có điểm bắt đầu) thì cả khối tính bằng 0, và công cụ nói rõ điều đó trên màn hình chứ không lặng lẽ. Mọi cảnh báo về cấu trúc bên trong — bước mồ côi, cổng thiếu xác suất — cũng hiện lên kèm tên khối chứa nó.
Lồng nhau tối đa 5 tầng. Sâu hơn thì phần trong cùng bị cắt, và bạn được báo là đã cắt.
Bỏ trống thì sao
Để trống ô chờ thì bằng 0, số thực thể mặc định là 1, không có sự kiện biên thì không có nhánh ngoại lệ, và mọi con số y hệt như trước khi có các tính năng này — quy trình cũ không đổi lấy một chữ số. Vùng và bên tham gia chỉ là nhãn — chúng không đổi bất kỳ con số nào, chỉ thêm chỉ số “số lần đổi tay”.