Tab "Quản lý Quy trình"
Route:
/admin/approval/workflows→ Tab Quản lý quy trình
Tab này dành riêng cho quản trị viên để tạo, chỉnh sửa và quản lý các quy trình phê duyệt (workflow). Mỗi workflow định nghĩa ai phê duyệt, theo thứ tự nào, và hành vi khi duyệt/từ chối.
Giao diện danh sách

Thông tin hiển thị trong bảng
| Cột | Ý nghĩa |
|---|---|
| Quy trình | Tên hiển thị và mã (code) của workflow |
| Module | Phân hệ áp dụng (Tài liệu, Dự án...) |
| Số bước | Tổng số bước phê duyệt trong workflow |
| Trạng thái | Xanh = Hoạt động / Xám = Tắt |
| Ngày tạo | Ngày tạo workflow |
| Thao tác | Nút chỉnh sửa ✏️ và xóa 🗑️ |
Xem chi tiết bước (Expand row)
Click vào mũi tên ▶ ở đầu mỗi dòng để xem chi tiết workflow mà không cần mở modal:

Thông tin hiển thị khi expand:
- Mô tả: Giải thích mục đích quy trình
- Entity Type: Loại đối tượng kỹ thuật áp dụng
- Chế độ: Tuần tự (sequential) hoặc Song song (parallel)
- Các bước: Danh sách các bước kèm người duyệt và SLA (nếu có)
Tạo quy trình mới
Click nút + Tạo quy trình (góc phải trên).

Thông tin cơ bản
| Trường | Bắt buộc | Mô tả |
|---|---|---|
| Tên hiển thị | ✅ Có | Tên người dùng thấy khi chọn quy trình. VD: "Phê duyệt xuất bản tài liệu" |
| Mã workflow | Không (tự điền) | Mã kỹ thuật định danh duy nhất. VD: document_publish. Không thể thay đổi sau khi tạo |
| Phân hệ | ✅ Có | Module áp dụng: Tài liệu, Dự án, Sinh viên... |
| Entity Type | ✅ Tự động | Tự động điền theo Phân hệ. Không cần nhập tay |
| Mô tả | Không | Ghi chú giải thích mục đích workflow |
| Chế độ duyệt | Không | Tuần tự: Bước 1 → Bước 2 → ... (mặc định) | Song song: Tất cả bước cùng lúc |
| Trạng thái | Không | Bật/Tắt workflow. Workflow tắt sẽ không xuất hiện khi tạo yêu cầu mới |
Sau khi tạo, Mã workflow (code) bị khóa chỉnh sửa vì nhiều yêu cầu phê duyệt đang tham chiếu đến mã này. Hãy đặt tên mã rõ ràng ngay từ đầu.
Cấu hình các bước phê duyệt

Mỗi workflow có một hoặc nhiều bước. Click "Thêm bước phê duyệt" để thêm bước mới.
Thông tin của từng bước
| Trường | Bắt buộc | Mô tả |
|---|---|---|
| Tên bước | ✅ Có | Tên mô tả bước. VD: "Trưởng phòng duyệt", "Ban Giám đốc ký duyệt" |
| Duyệt theo? | ✅ Có | Cách xác định người duyệt (xem bảng bên dưới) |
| Giá trị người duyệt | ✅ Có | Giá trị cụ thể tương ứng với loại duyệt |
| Deadline (giờ) | Không | Thời gian tối đa (giờ) để phê duyệt bước này |
| Bắt buộc | Không | Bật = phải qua bước này. Tắt = có thể bỏ qua nếu điều kiện không thỏa |
| Điều kiện thực hiện (JSON) | Không | Điều kiện kỹ thuật để bước này có hiệu lực |
Các loại "Duyệt theo"
| Loại | Ý nghĩa | Ví dụ giá trị |
|---|---|---|
| Người dùng cụ thể | Chỉ định đúng một hoặc nhiều người dùng | Tìm và chọn từ danh sách |
| Vai trò | Bất kỳ ai có role đó đều có thể duyệt | Chọn role từ danh sách |
| Quyền hạn | Bất kỳ ai có permission đó đều có thể duyệt | Chọn permission từ danh sách |
| Quan hệ với người tạo | Tự động lấy quản lý của người tạo yêu cầu | manager hoặc department_head |
| Thuộc tính đối tượng | Lấy người duyệt từ trường dữ liệu của đối tượng | manager_id, created_by |
Thay vì chỉ định người dụng cụ thể, hãy dùng Vai trò để bất kỳ người nào có role phù hợp đều có thể duyệt. Điều này giúp quy trình không bị phụ thuộc vào một cá nhân.
Hành vi khi duyệt / từ chối
Mỗi bước có thể cấu hình thêm hành vi đặc biệt khi được phê duyệt hoặc từ chối:
Khi bước được Duyệt (✅):
| Hành vi | Ý nghĩa |
|---|---|
| Mặc định | Tiếp tục sang bước tiếp theo |
| Bỏ qua tất cả → Phê duyệt hoàn tất | Phê duyệt ngay, bỏ qua tất cả bước còn lại |
| Bỏ qua 1 bước tiếp theo | Bỏ qua bước kế tiếp, đi thẳng sang bước sau đó |
| Nhảy đến bước chỉ định | Nhảy đến bước được chọn trong danh sách |
| Gửi thông báo + Tiếp tục | Gửi email/thông báo và tiếp tục bình thường |
Khi bước bị Từ chối (❌):
| Hành vi | Ý nghĩa |
|---|---|
| Mặc định | Từ chối toàn bộ yêu cầu ngay |
| Từ chối ngay toàn bộ | Kết thúc ngay với trạng thái Từ chối |
| Quay lại bước đầu tiên | Đặt lại toàn bộ quy trình từ đầu |
| Quay lại bước trước | Quay về bước ngay trước đó |
| Nhảy đến bước chỉ định | Nhảy đến bước được chọn |
| Gửi thông báo + Từ chối | Gửi thông báo và từ chối |
Trường Điều kiện thực hiện cho phép bỏ qua bước nếu điều kiện không thỏa mãn.
Ví dụ: {"field":"amount","operator":">=","value":10000000} — bước này chỉ áp dụng khi giá trị amount ≥ 10 triệu.
Đây là tính năng kỹ thuật, chỉ dành cho quản trị viên có hiểu biết về cấu trúc dữ liệu.
Di chuyển và xóa bước
- Dùng nút ↑ / ↓ (mũi tên) để thay đổi thứ tự bước
- Click biểu tượng 🗑️ để xóa bước (cần xác nhận)
Không nên xóa hoặc di chuyển bước khi có yêu cầu phê duyệt đang hoạt động trên workflow đó. Điều này có thể gây lỗi luồng xử lý.
Chỉnh sửa quy trình
Click biểu tượng ✏️ trên dòng workflow cần chỉnh sửa. Modal tương tự modal tạo mới sẽ xuất hiện, với dữ liệu đã được điền sẵn.
Lưu ý khi chỉnh sửa:
- Mã workflow (code) bị khóa, không thể thay đổi
- Các thay đổi có hiệu lực với yêu cầu mới sau khi lưu
- Yêu cầu đang xử lý vẫn theo cấu hình cũ
Xóa quy trình
Click biểu tượng 🗑️ → Xác nhận trong hộp thoại.
Hệ thống từ chối xóa workflow nếu đang có yêu cầu phê duyệt sử dụng workflow đó (dù đã kết thúc hay đang xử lý). Cần tắt (is_active = Tắt) thay vì xóa trong trường hợp này.
Lọc bảng workflow
- Lọc theo Module: Click vào tiêu đề cột "Module" → Chọn phân hệ
- Lọc theo Trạng thái: Click vào tiêu đề cột "Trạng thái" → Chọn Hoạt động/Tắt