Trình dựng Quy trình
Trình dựng Quy trình biến một quy tắc nghiệp vụ thành tự động hóa. Một quy trình theo dõi một loại thực thể (hóa đơn, đơn mua hàng, đơn xin nghỉ, cơ hội bán hàng, v.v.), chờ một sự kiện trigger, kiểm tra một tập điều kiện, rồi chạy các hành động — có thể bao gồm điều phối bản ghi qua một chuỗi phê duyệt.

Trước khi bắt đầu
- Xác nhận các cờ tính năng liên quan đã bật trong Workflow → Settings (ví dụ
require_po_approval,multi_level_approval,parallel_approval). - Cân nhắc xem quyết định “bản ghi này có cần phê duyệt không” nên thuộc về một Chính sách (ngưỡng số) thay vì bản thân quy trình. Giữ quy trình tập trung vào ai và điều gì.
Tạo một quy trình
Bước 1 — Chọn thực thể
Vào Workflow → Workflows và bấm New Workflow. Chọn loại thực thể mà quy trình áp dụng (ví dụ Đơn mua hàng, Hóa đơn, Đơn xin nghỉ, Cơ hội). Mỗi quy trình gắn với đúng một thực thể — điều kiện và trường của nó lấy từ thực thể đó.
Bước 2 — Chọn trigger
Chọn sự kiện khởi động quy trình:
| Trigger | Kích hoạt khi… | Dùng điển hình |
|---|---|---|
| Khi tạo | Một bản ghi mới được lưu | Điều phối mọi đơn mua hàng mới để phê duyệt |
| Khi cập nhật | Bất kỳ trường nào của bản ghi thay đổi | Kiểm tra lại khi số tiền hóa đơn bị sửa |
| Khi đổi trạng thái | Trạng thái bản ghi chuyển (ví dụ nháp → đã gửi) | Bắt đầu phê duyệt chỉ sau khi người dùng gửi |
Ưu tiên Khi đổi trạng thái cho luồng phê duyệt — tránh kích hoạt trong khi người dùng còn đang soạn bản ghi.
Bước 3 — Thêm điều kiện (JSONLogic)
Thêm một hoặc nhiều điều kiện, tất cả phải đúng thì quy trình mới hành động. Điều kiện được đánh giá bằng JSONLogic dựa trên các trường của bản ghi. Dùng trình dựng điều kiện trực quan, hoặc sửa trực tiếp JSONLogic.
Ví dụ — chỉ cho đơn mua hàng lớn, ngoài Việt Nam:
{ "and": [
{ ">": [ { "var": "totalAmount" }, 50000000 ] },
{ "!=": [ { "var": "supplierCountry" }, "VN" ] }
] }Xem bảng tham chiếu toán tử bên dưới.
Bước 4 — Định nghĩa hành động
Chọn điều gì xảy ra khi trigger kích hoạt và điều kiện thỏa:
| Hành động | Tác dụng |
|---|---|
| Tạo phê duyệt | Khởi động một chuỗi phê duyệt (xem Bước 5) |
| Tự động gửi | Chuyển bản ghi sang trạng thái đã gửi/đang chờ tự động |
| Tự động thực thi | Chạy bước vòng đời tiếp theo của bản ghi tự động (ví dụ hạch toán, xác nhận) |
| Gán | Gán bản ghi cho một người dùng hoặc vai trò |
| Thông báo | Gửi thông báo trong ứng dụng / email cho người dùng hoặc vai trò |
| Đặt trường | Ghi một giá trị vào một trường của bản ghi |
Một quy trình có thể chạy nhiều hành động trong một lượt — ví dụ đặt một trường, thông báo người yêu cầu, và tạo phê duyệt.
Bước 5 — Dựng chuỗi phê duyệt
Nếu bạn thêm Tạo phê duyệt, hãy định nghĩa các cấp. Mỗi cấp có thể tuần tự hoặc song song:
- Tuần tự (A → B → C): cấp 2 chỉ bắt đầu sau khi cấp 1 duyệt. Dùng cho thang leo bậc (Quản lý → Tài chính → CFO).
- Song song (A VÀ B): tất cả người duyệt ở cấp đó phải duyệt trước khi chuỗi tiến tiếp. Dùng cho kiểm soát kép hoặc ký duyệt liên phòng ban.
Bạn có thể trộn: chạy cấp 1 và 2 song song, rồi yêu cầu cấp 3 tuần tự cuối cùng.
Chuỗi đa cấp cần cờ multi_level_approval; cấp song song cần parallel_approval. Không có chúng, chỉ một bước một-người-duyệt được thực thi.

Bước 6 — Kiểm thử
Dùng Test (hoặc chạy một bản ghi mẫu từ phân hệ nguồn) để xác nhận quy trình kích hoạt, điều kiện khớp và chuỗi điều phối đến đúng người duyệt — mà không ảnh hưởng bản ghi thật.
Bước 7 — Kích hoạt
Bật quy trình Active. Nó nay chạy trên mọi sự kiện phù hợp. Quy trình không hoạt động được lưu nhưng không bao giờ kích hoạt.
Tham chiếu toán tử điều kiện
Các toán tử JSONLogic có trong trình dựng điều kiện:
| Toán tử | Ý nghĩa | Ví dụ |
|---|---|---|
== / === | Bằng | trạng thái bằng submitted |
!= / !== | Khác | phòng ban khác IT |
> >= < <= | So sánh số | số tiền > 50.000.000 |
in | Giá trị nằm trong danh sách | danh mục in ["capex","opex"] |
and | Tất cả điều kiện con đúng | số tiền lớn VÀ nhà cung cấp mới |
or | Bất kỳ điều kiện con đúng | quá hạn HOẶC bị gắn cờ |
! | Phủ định | KHÔNG được duyệt |
var | Tham chiếu một trường bản ghi | { "var": "totalAmount" } |
Tên trường trong var là khóa trường được lưu của thực thể (thường camelCase, ví dụ totalAmount, discountPercent, supplierId). Trình dựng trực quan liệt kê các trường hợp lệ cho thực thể đã chọn nên bạn không phải đoán.
Tham chiếu loại trigger
| Trigger | Phạm vi | Ghi chú |
|---|---|---|
| Khi tạo | Chỉ bản ghi mới | Kích hoạt một lần, lúc thêm mới |
| Khi cập nhật | Thay đổi trường | Có thể kích hoạt lặp lại; giới hạn bằng điều kiện để tránh vòng lặp |
| Khi đổi trạng thái | Chuyển trạng thái | Tốt nhất để khởi động phê duyệt; đi kèm vòng đời của thực thể |
Tham chiếu hành động
| Hành động | Chặn? | Kết hợp thường gặp |
|---|---|---|
| Tạo phê duyệt | Có — giữ bản ghi cho tới khi có quyết định | Thông báo người duyệt |
| Tự động gửi | Không | Trigger khi tạo |
| Tự động thực thi | Không | Sau phê duyệt cuối |
| Gán | Không | Thông báo người được gán |
| Thông báo | Không | Bất kỳ bước nào |
| Đặt trường | Không | Đóng dấu mức rủi ro / mã điều phối |
Xử lý sự cố
| Triệu chứng | Nguyên nhân có thể | Khắc phục |
|---|---|---|
| Quy trình không kích hoạt | Sai trigger, hoặc quy trình không hoạt động | Xác nhận trigger khớp sự kiện thực; đặt Active |
| Kích hoạt nhưng không tới người duyệt | Điều kiện không bao giờ khớp | Kiểm thử điều kiện với giá trị trường của bản ghi thật |
| Chỉ một người duyệt dù đa cấp | multi_level_approval tắt | Bật trong Workflow → Settings |
| Cấp song song lại chạy tuần tự | parallel_approval tắt | Bật cờ |
| Lặp mỗi lần lưu | Trigger Khi cập nhật quá rộng | Thêm điều kiện chặn kích hoạt lại (ví dụ khóa theo trạng thái) |
| Người duyệt nghỉ, chuỗi tắc | Không có ủy quyền | Tạo quy tắc Ủy quyền |
Câu hỏi thường gặp
Hỏi: Một quy trình có thể bao nhiều thực thể không? Đáp: Không. Mỗi quy trình gắn với một thực thể. Tạo quy trình riêng (hoặc bắt đầu từ mẫu) cho mỗi thực thể.
Hỏi: Tên trường trong điều kiện lấy từ đâu? Đáp: Là các trường được lưu của thực thể. Trình dựng trực quan liệt kê chúng cho thực thể bạn chọn ở Bước 1.
Hỏi: Làm sao dừng một luồng phê duyệt tôi không còn muốn? Đáp: Bật quy trình Inactive. Các phê duyệt đang chạy vẫn tiếp tục; không có phê duyệt mới bắt đầu.