Giao diện
@digiforce-nc/plugin-workflow-request-interceptor
Plugin đăng ký trigger chặn API request (interceptor), mở rộng plugin-workflow. Hoạt động như middleware chặn các request khớp điều kiện, chạy workflow xử lý, rồi quyết định cho phép tiếp tục hoặc trả lỗi.
Plugin này làm gì?
Request Interceptor đăng ký một middleware vào pipeline xử lý request. Khi request khớp điều kiện (collection, action), middleware sẽ chặn request, chạy workflow, và dựa trên kết quả workflow để quyết định tiếp tục xử lý request hay trả về response tùy chỉnh.
Interceptor hỗ trợ hai thời điểm can thiệp:
- Pre-action: Chặn trước khi handler xử lý (validation, enrichment)
- Post-action: Chặn sau khi handler xử lý (audit, notification)
Cấu hình
| Tham số | Kiểu | Mô tả |
|---|---|---|
collection | string | Collection cần chặn request |
action | string | Action cần chặn: create, update, destroy, list, get |
global | boolean | Chặn tất cả collection (bỏ qua filter collection) |
onError | string | Hành vi khi workflow lỗi: continue hoặc reject |
Input / Output
| Hướng | Dữ liệu | Mô tả |
|---|---|---|
| Input | request.params | Tham số request (filter, values, ...) |
| Input | request.action | Tên action đang thực hiện |
| Input | request.body | Body của HTTP request |
| Input | user | Thông tin người gửi request |
| Output | status | pass (cho phép) hoặc reject (từ chối) |
| Output | message | Thông báo lỗi khi reject |
Tính năng chính
| # | Tính năng | Chi tiết |
|---|---|---|
| 1 | Middleware chặn | Chặn request trước khi handler xử lý |
| 2 | Validation nâng cao | Dùng workflow để validate dữ liệu phức tạp |
| 3 | Quyết định động | Cho phép hoặc từ chối dựa trên logic workflow |
| 4 | Response tùy chỉnh | Trả message lỗi tùy chỉnh khi từ chối |
| 5 | Pre-processing | Biến đổi dữ liệu request trước khi handler nhận |
Trường hợp sử dụng
| # | Kịch bản | Mô tả |
|---|---|---|
| 1 | Validation phức tạp | Kiểm tra đơn hàng vượt hạn mức tín dụng trước khi tạo |
| 2 | Approval gate | Chặn update trạng thái nếu chưa đủ số lần phê duyệt |
| 3 | Data enrichment | Tự động bổ sung field (mã đơn, timestamp) trước khi lưu |
| 4 | Rate limiting | Giới hạn số lần tạo bản ghi mỗi user trong khoảng thời gian |
| 5 | Audit logging | Ghi log chi tiết mỗi request thay đổi dữ liệu quan trọng |
Lưu ý quan trọng
- Interceptor chạy đồng bộ - workflow phải hoàn thành trước khi request tiếp tục
- Workflow trong interceptor nên chạy nhanh (dưới vài giây) để tránh timeout client
- Cấu hình
onError: "continue"để tránh block request khi workflow lỗi - Không nên dùng node delay hoặc manual bên trong workflow interceptor
- Kiểm tra kỹ điều kiện match để tránh chặn nhầm request hệ thống
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/plugin-workflow | Workflow engine (peer) |
@digiforce-nc/server | Server framework - middleware pipeline (peer) |
@digiforce-nc/database | Database ORM (peer) |