Bỏ qua, đến nội dung

@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ểuMô tả
workflowIdstringID hoặc key của workflow con cần gọi
paramsobjectTham số truyền vào workflow con (mapping từ biến cha)
timeoutnumberThời gian tối đa chờ workflow con hoàn thành (ms)
asyncbooleantrue: không chờ kết quả, false: chờ kết quả

Input / Output

HướngDữ liệuMô tả
InputworkflowIdWorkflow con cần gọi
InputparamsTham số truyền vào (mapping từ biến cha)
OutputresultKết quả trả về từ workflow con
Outputstatusresolved / rejected / timed_out

Tính năng chính

#Tính năngChi tiết
1Tái sử dụngGọi cùng một workflow con từ nhiều workflow cha
2Truyền paramsMap biến từ workflow cha sang input workflow con
3Nhận kết quảLấy result từ workflow con tiếp tục xử lý
4Async modeGọi workflow con chạy nền, không chờ
5TimeoutBảo vệ khỏi workflow con chạy quá lâu
6Chia nhỏ logicTách workflow phức tạp thành các module nhỏ

Trường hợp sử dụng

#Kịch bảnMô tả
1Logic dùng chungWorkflow "tính thuế" được gọi từ nhiều workflow đơn hàng
2Chia nhỏ quy trìnhWorkflow tuyển dụng gọi sub: screening, interview, offer
3Gọi asyncTrigger workflow gửi email nền, không chờ kết quả
4Đệ quyWorkflow xử lý cây danh mục gọi chính mình cho node con

So sánh Sync vs Async

Đặc điểmSyncAsync
Chờ kết quảKhông
Nhận resultKhông
TimeoutÁp dụngKhông áp dụng
Workflow chaDừng chờTiếp tục ngay
Use caseLogic 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

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

Mục lục chi tiết