Giao diện
@digiforce-nc/plugin-workflow-subflow
Plugin đăng ký node gọi workflow con (subflow) trong workflow, mở rộng plugin-workflow. Gọi một workflow khác như một sub-routine, truyền tham số vào và nhận kết quả trả về.
Plugin này làm gì?
Node Subflow cho phép gọi một workflow khác (workflow con) từ trong workflow hiện tại (workflow cha). Tham số được truyền vào workflow con, và kết quả return từ workflow con được đưa lại cho workflow cha tiếp tục xử lý. Giúp tái sử dụng logic và chia nhỏ workflow phức tạp.
Lợi ích chính:
- Tái sử dụng: Viết logic một lần, gọi từ nhiều workflow
- Modular: Chia workflow lớn thành các module nhỏ, dễ quản lý
- Testing: Test từng workflow con độc lập
Cấu hình
| Tham số | Kiểu | Mô tả |
|---|---|---|
workflowId | string | ID hoặc key của workflow con cần gọi |
params | object | Tham số truyền vào workflow con (mapping từ biến cha) |
timeout | number | Thời gian tối đa chờ workflow con hoàn thành (ms) |
async | boolean | true: không chờ kết quả, false: chờ kết quả |
Input / Output
| Hướng | Dữ liệu | Mô tả |
|---|---|---|
| Input | workflowId | Workflow con cần gọi |
| Input | params | Tham số truyền vào (mapping từ biến cha) |
| Output | result | Kết quả trả về từ workflow con |
| Output | status | resolved / rejected / timed_out |
Tính năng chính
| # | Tính năng | Chi tiết |
|---|---|---|
| 1 | Tái sử dụng | Gọi cùng một workflow con từ nhiều workflow cha |
| 2 | Truyền params | Map biến từ workflow cha sang input workflow con |
| 3 | Nhận kết quả | Lấy result từ workflow con tiếp tục xử lý |
| 4 | Async mode | Gọi workflow con chạy nền, không chờ |
| 5 | Timeout | Bảo vệ khỏi workflow con chạy quá lâu |
| 6 | Chia nhỏ logic | Tách workflow phức tạp thành các module nhỏ |
Trường hợp sử dụng
| # | Kịch bản | Mô tả |
|---|---|---|
| 1 | Logic dùng chung | Workflow "tính thuế" được gọi từ nhiều workflow đơn hàng |
| 2 | Chia nhỏ quy trình | Workflow tuyển dụng gọi sub: screening, interview, offer |
| 3 | Gọi async | Trigger workflow gửi email nền, không chờ kết quả |
| 4 | Đệ quy | Workflow xử lý cây danh mục gọi chính mình cho node con |
So sánh Sync vs Async
| Đặc điểm | Sync | Async |
|---|---|---|
| Chờ kết quả | Có | Không |
| Nhận result | Có | Không |
| Timeout | Áp dụng | Không áp dụng |
| Workflow cha | Dừng chờ | Tiếp tục ngay |
| Use case | Logic phụ thuộc kết quả | Fire-and-forget |
Lưu ý quan trọng
- Workflow con phải tồn tại và ở trạng thái enabled khi subflow node chạy
- Đệ quy (gọi chính mình) cần cẩn thận - đặt maxDepth hoặc condition dừng
- Params là bản copy - thay đổi trong workflow con không ảnh hưởng workflow cha
- Async mode: workflow cha tiếp tục ngay, không nhận result từ workflow con
- Timeout chỉ áp dụng cho sync mode - async mode không có timeout
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/plugin-workflow | Workflow engine (peer) |
@digiforce-nc/server | Server framework (peer) |
@digiforce-nc/database | Database ORM (peer) |