Giao diện
Cấu hình node - Dynamic Calculation
Node tính toán động sử dụng biểu thức (expression) hoặc công thức (formula) tại runtime, hỗ trợ nhiều evaluator engine.
Bảng tham số cấu hình
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
engine | string | Không | built-in | Evaluator sử dụng: math.js, formula.js, hoặc built-in |
expression | string | Có | — | Biểu thức tính toán (VD: price * quantity * (1 - discount)) |
scope | object | Không | {} | Mapping tên biến trong biểu thức sang giá trị từ workflow context |
outputType | string | Không | number | Kiểu kết quả mong muốn: number, string, boolean |
Dữ liệu đầu ra (Output)
| Tên | Kiểu | Mô tả |
|---|---|---|
result | any | Kết quả tính toán (ép kiểu theo outputType) |
type | string | Kiểu dữ liệu thực tế của kết quả |
So sánh với các node tính toán khác
| Đặc điểm | Simple Function | Dynamic Calculation | JavaScript |
|---|---|---|---|
| Độ phức tạp | Thấp | Trung bình | Cao |
| UI | Biểu thức đơn giản | Biểu thức + scope mapping | Code editor |
| Engine | Built-in | math.js, formula.js, built-in | VM sandbox |
| Phù hợp | Phép tính đơn giản | Công thức phức tạp | Logic tùy ý |
Hướng dẫn chọn engine
| Engine | Mạnh về | Ví dụ biểu thức |
|---|---|---|
built-in | Phép tính cơ bản, nhanh | price * qty |
math.js | Toán học phức tạp, hàm thống kê | pow(1 + rate, n), sqrt(x) |
formula.js | Công thức dạng spreadsheet | IF(score >= 80, "A", "B") |
Lưu ý quan trọng
- 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ề
InfinityhoặcNaNtù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
- Chọn engine phù hợp:
math.jscho phép tính phức tạp,built-incho biểu thức đơn giản