Bỏ qua, đến nội dung

@digiforce-nc/plugin-workflow-javascript

Plugin đăng ký node chạy JavaScript tùy chỉnh trong workflow, mở rộng plugin-workflow. Thực thi code JavaScript trong môi trường sandbox an toàn, cho phép xử lý logic phức tạp không thể cấu hình bằng UI.

Plugin này làm gì?

Node JavaScript cho phép viết và chạy code JS tùy ý trong workflow. Code được thực thi trong sandbox có kiểm soát - có quyền truy cập biến workflow nhưng không truy cập trực tiếp hệ thống file hay network. Kết quả return được lưu vào biến workflow.

Đây là node mạnh nhất cho xử lý logic tùy chỉnh. Khi các node cấu hình (condition, calculation, mapping) không đáp ứng được yêu cầu phức tạp, JavaScript node là giải pháp cuối cùng.

Cấu hình

Tham sốKiểuMô tả
codestringCode JavaScript cần thực thi
timeoutnumberThời gian tối đa chạy (ms), mặc định 5000
scopeobjectBiến từ workflow context inject vào scope của code

Input / Output

HướngDữ liệuMô tả
InputscopeCác biến workflow được inject vào execution context
InputcodeCode JavaScript (hỗ trợ async/await)
OutputresultGiá trị return từ code (bất kỳ kiểu)
OutputerrorThông tin lỗi nếu code throw exception

Tính năng chính

#Tính năngChi tiết
1Full JavaScriptViết logic phức tạp: vòng lặp, điều kiện, string manipulation
2Sandbox an toànCode chạy trong VM sandbox, không truy cập OS
3Async/AwaitHỗ trợ code bất đồng bộ
4TimeoutTự động dừng nếu chạy quá lâu
5Scope injectionBiến workflow tự động khả dụng trong code
6Error handlingBắt exception và lưu vào biến error

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

#Kịch bảnMô tả
1Transform dữ liệuChuyển đổi cấu trúc object phức tạp giữa hai hệ thống
2Business logicTính giá theo bảng chiết khấu nhiều tầng
3String processingParse email content, extract thông tin từ text
4Data validationKiểm tra logic nghiệp vụ phức tạp không thể cấu hình UI
5Array processingLọc, sắp xếp, nhóm dữ liệu phức tạp từ nhiều nguồn

API khả dụng trong sandbox

APICó sẵnGhi chú
Math, Date, JSONBuilt-in JavaScript
String, Array, ObjectPrototype methods
console.logGhi vào workflow log
setTimeout, setIntervalKhôngDùng async/await thay thế
require, importKhôngSandbox restriction
fetch, XMLHttpRequestKhôngDùng HTTP Request node
fs, process, child_processKhôngOS access bị chặn

Lưu ý quan trọng

  • Sandbox không có require, fetch, fs - chỉ xử lý dữ liệu thuần
  • Code phải return giá trị cuối cùng - giá trị này trở thành result của node
  • Timeout mặc định 5 giây - tăng lên nếu xử lý dữ liệu lớn
  • Infinite loop sẽ bị kill khi timeout - cẩn thận với while loop
  • Kết quả phải serialize được (JSON) - không return function, Symbol, hoặc circular reference

Dependencies

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

Mục lục chi tiết