Bỏ qua, đến nội dung

@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ểuMô tả
modestringChế độ: all (chờ tất cả), any (bất kỳ), race (nhanh nhất)
branchesarrayDanh sách nhánh con cần thực thi
continueOnErrorbooleanTiếp tục nhánh khác nếu một nhánh lỗi

Input / Output

HướngDữ liệuMô tả
InputcontextContext workflow chung cho tất cả nhánh
OutputresultsMảng kết quả từ các nhánh (mode all)
OutputresultKết quả nhánh đầu tiên hoàn thành (mode any/race)
OutputerrorsMảng lỗi từ các nhánh thất bại

Tính năng chính

#Tính năngChi tiết
1Mode AllChờ tất cả nhánh hoàn thành, thu thập mọi kết quả
2Mode AnyTiếp tục khi bất kỳ nhánh nào hoàn thành thành công
3Mode RaceLấy kết quả nhánh nhanh nhất, hủy các nhánh còn lại
4Error handlingCấu hình tiếp tục hoặc dừng khi nhánh lỗi
5Tăng hiệu suấtGiả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ảnMô tả
1Gửi thông báo đồng thờiSong song: gửi email + push notification + SMS
2Query nhiều nguồnĐồng thời query DB nội bộ + API bên ngoài, gộp kết quả
3Fastest providerRace giữa nhiều API provider, lấy response nhanh nhất
4Fan-out processingXử lý đồng thời nhiều tác vụ độc lập rồi tổng hợp

So sánh các mode

ModeChờKết quảKhi 1 nhánh lỗiTương tự
allTất cảMảng resultsDừng (hoặc tiếp)Promise.all
anyBất kỳ thành côngResult đầu tiênTiếp tục chờPromise.any
raceNhánh nhanh nhấtResult nhanh nhấtLấ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

PackageVai trò
@digiforce-nc/plugin-workflowWorkflow engine (peer)
@digiforce-nc/serverServer framework (peer)

Mục lục chi tiết