Giao diện
@digiforce-nc/plugin-workflow-parallel
Plugin đăng ký node chạy song song (parallel) trong workflow, mở rộng plugin-workflow. Thực thi nhiều nhánh đồng thời với các chế độ: all (chờ tất cả), any (chờ bất kỳ), hoặc race (nhánh đầu tiên hoàn thành).
Plugin này làm gì?
Node Parallel chia workflow thành nhiều nhánh (branch) và thực thi chúng đồng thời. Tùy theo mode, node sẽ chờ tất cả nhánh hoàn thành, chỉ cần một nhánh bất kỳ, hoặc lấy kết quả nhánh nhanh nhất. Sau khi điều kiện đạt, workflow tiếp tục.
Ba chế độ hoạt động:
- All: Chờ tất cả nhánh hoàn thành, thu thập mọi kết quả (giống
Promise.all) - Any: Tiếp tục khi bất kỳ nhánh nào thành công (giống
Promise.any) - Race: Lấy kết quả nhánh nhanh nhất, hủy các nhánh còn lại (giống
Promise.race)
Cấu hình
| Tham số | Kiểu | Mô tả |
|---|---|---|
mode | string | Chế độ: all (chờ tất cả), any (bất kỳ), race (nhanh nhất) |
branches | array | Danh sách nhánh con cần thực thi |
continueOnError | boolean | Tiếp tục nhánh khác nếu một nhánh lỗi |
Input / Output
| Hướng | Dữ liệu | Mô tả |
|---|---|---|
| Input | context | Context workflow chung cho tất cả nhánh |
| Output | results | Mảng kết quả từ các nhánh (mode all) |
| Output | result | Kết quả nhánh đầu tiên hoàn thành (mode any/race) |
| Output | errors | Mảng lỗi từ các nhánh thất bại |
Tính năng chính
| # | Tính năng | Chi tiết |
|---|---|---|
| 1 | Mode All | Chờ tất cả nhánh hoàn thành, thu thập mọi kết quả |
| 2 | Mode Any | Tiếp tục khi bất kỳ nhánh nào hoàn thành thành công |
| 3 | Mode Race | Lấy kết quả nhánh nhanh nhất, hủy các nhánh còn lại |
| 4 | Error handling | Cấu hình tiếp tục hoặc dừng khi nhánh lỗi |
| 5 | Tăng hiệu suất | Giảm thời gian xử lý bằng cách chạy đồng thời |
Trường hợp sử dụng
| # | Kịch bản | Mô tả |
|---|---|---|
| 1 | Gửi thông báo đồng thời | Song song: gửi email + push notification + SMS |
| 2 | Query nhiều nguồn | Đồng thời query DB nội bộ + API bên ngoài, gộp kết quả |
| 3 | Fastest provider | Race giữa nhiều API provider, lấy response nhanh nhất |
| 4 | Fan-out processing | Xử lý đồng thời nhiều tác vụ độc lập rồi tổng hợp |
So sánh các mode
| Mode | Chờ | Kết quả | Khi 1 nhánh lỗi | Tương tự |
|---|---|---|---|---|
all | Tất cả | Mảng results | Dừng (hoặc tiếp) | Promise.all |
any | Bất kỳ thành công | Result đầu tiên | Tiếp tục chờ | Promise.any |
race | Nhánh nhanh nhất | Result nhanh nhất | Lấy luôn (kể cả lỗi) | Promise.race |
Lưu ý quan trọng
- Tất cả nhánh nhận cùng context (read-only) - thay đổi context trong 1 nhánh không ảnh hưởng nhánh khác
- Mode
race: nhánh còn lại có thể vẫn chạy xong nhưng kết quả bị bỏ qua - Mode
all+continueOnError: false: 1 nhánh lỗi sẽ dừng toàn bộ - Không nên lồng quá nhiều parallel (2-3 cấp max) để tránh phức tạp debug
- Mỗi nhánh có thể chứa nhiều node nối tiếp nhau
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/plugin-workflow | Workflow engine (peer) |
@digiforce-nc/server | Server framework (peer) |