Bỏ qua, đến nội dung

@digiforce-nc/plugin-workflow-dynamic-calculation

Plugin đăng ký node tính toán động trong workflow, mở rộng plugin-workflow. Thực thi biểu thức hoặc công thức tại runtime bằng evaluator engine, cho phép tính toán phức tạp dựa trên dữ liệu workflow.

Plugin này làm gì?

Node Dynamic Calculation nhận một biểu thức (expression) hoặc công thức (formula) và tính toán giá trị tại runtime. Biểu thức có thể tham chiếu biến workflow, dữ liệu bản ghi, kết quả node trước. Sử dụng evaluator engine để đảm bảo an toàn và hiệu suất.

So với Simple Function (biểu thức đơn giản), Dynamic Calculation hỗ trợ:

  • Nhiều evaluator engine (math.js, formula.js, built-in)
  • Biểu thức phức tạp hơn với hàm toán học, chuỗi, logic
  • Scope mapping linh hoạt giữa biến workflow và biến trong biểu thức

Cấu hình

Tham sốKiểuMô tả
enginestringEvaluator sử dụng: math.js, formula.js, hoặc built-in
expressionstringBiểu thức tính toán (ví dụ: price * quantity * (1 - discount))
scopeobjectMapping tên biến trong biểu thức sang giá trị từ workflow
outputTypestringKiểu kết quả mong muốn: number, string, boolean

Input / Output

HướngDữ liệuMô tả
InputexpressionBiểu thức cần tính toán
Inputscope variablesGiá trị các biến tham chiếu trong biểu thức
OutputresultKết quả tính toán
OutputtypeKiểu dữ liệu kết quả thực tế

Tính năng chính

#Tính năngChi tiết
1Biểu thức linh hoạtViết biểu thức toán học, logic, chuỗi tùy ý
2Nhiều evaluatorHỗ trợ math.js, formula.js, built-in
3Scope mappingMap biến workflow vào tên biến trong biểu thức
4An toànEvaluator sandbox, không truy cập hệ thống
5Type castingTự động ép kiểu kết quả theo outputType

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

#Kịch bảnMô tả
1Tính tổng đơn hàngsum(items.price * items.qty) + shippingFee - coupon
2Tính hoa hồngrevenue * commissionRate với rate từ cấu hình role
3Điểm ưu tiênage * 0.3 + orderCount * 0.5 + loyaltyYears * 0.2
4Phân loạiscore >= 80 ? "A" : score >= 60 ? "B" : "C"
5Lãi suất képprincipal * pow(1 + rate/12, months) - principal

So sánh với các node tính toán khác

Đặc điểmSimple FunctionDynamic CalculationJavaScript
Độ phức tạpThấpTrung bìnhCao
UIBiểu thức đơnBiểu thức + scopeCode editor
EngineBuilt-inmath.js, formula.jsVM sandbox
Phù hợpPhép tính đơn giảnCông thức phức tạpLogic tùy ý

Lưu ý quan trọng

  • Chọn engine phù hợp: math.js cho phép tính phức tạp, built-in cho biểu thức đơn giản
  • Biến scope phải được khai báo đầy đủ - biến không tồn tại sẽ gây lỗi runtime
  • Kết quả chia cho 0 trả về Infinity hoặc NaN tùy engine - cần xử lý trong node sau
  • Biểu thức quá phức tạp có thể ảnh hưởng hiệu suất - cân nhắc dùng JavaScript node
  • Type casting có thể mất dữ liệu: number sang string OK, string sang number có thể NaN

Dependencies

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

Mục lục chi tiết