Execute Script
Execute Script 是用於執行自定義 JavaScript 程式碼的 processor。
基本用法
執行 Execute Script 時,會在指定的 JavaScript 執行環境中執行設定的腳本程式碼。
配置參數
節點的屬性面板:

Name
顯示在畫布上的名稱,用於在工作流程中識別此 processor。
Description
用於補充此 processor 的用途,提升工作流程的可讀性。
Properties
Engine(必填)
選擇 JavaScript 執行引擎,目前只支援 ECMA5。
Script(必填)
要執行的 JavaScript 程式碼。
資料存取方式
Execute Script 提供一個名為 payload 的全域物件,讓您可以存取工作流程中的所有資料,包括:
- 當前工作流程的 payload 資料
- 內建變數(如
prevMessage、prevPayload等)
讀取資料
假設您的工作流程中有以下資料:
{
"user": {
"name": "Alice",
"email": "zhang@example.com"
}
}
您可以在腳本中這樣存取:
// "Alice"
const userName = payload.user.name
// "zhang@example.com"
const userEmail = payload.user.email
修改資料
您也可以修改 payload 資料,這些變更會傳遞到後續的 processor:
// 修改現有資料
payload.user.name = "Bob"
// 新增資料
payload.processedAt = new Date().toISOString()
payload.status = "completed"
存取內建變數
您可以透過 payload 存取 Asgard 的內建變數:
// 取得使用者的最後一則訊息
const lastMessage = payload.prevMessage
// 取得前一個 processor 的 payload
const previousData = payload.prevPayload
// 存取巢狀資料
const specificValue = payload.prevPayload.someProperty
使用限制
在 Execute Script 中,您無法直接使用 Asgard 的內建函數(如 history()、vecToStr() 等)。如需使用這些功能,請考慮使用其他 processor 類型。
在 Workflow CRD 中的設定
- name: proc-transform
type: execute-script
labels:
display_name: 整理查詢結果
configs:
- name: engine
value: javascript
- name: script
expression: |-
(() => {
return rows.map(r => r.name).join("、");
})()
連接關係
Success
當腳本成功執行完成時,工作流程會從此連接點繼續執行。腳本執行的結果無法預測。
Failure
當腳本執行發生錯誤時,工作流程會從此連接點繼續執行,並產生 prevError 變數儲存錯誤資訊。
一個實際的例子
把前一步查到的陣列整理成一句話。
| 欄位 | 值 |
|---|---|
| Engine | ECMA5 |
| Script | 下面那段 |
var names = [];
for (var i = 0; i < low_stock.length; i++) {
names.push(low_stock[i].sku_name);
}
return names.join('、');
寫成 var 和 for 而不是 const 和 map,是因為引擎是 ECMA5。
注意事項
- Engine 目前只有一個有效值
ECMA5,底層跑的是 goja。填其他值會得到Unknown script engine。 - 因為是 ECMA5,ES6 之後的語法(箭頭函式、
let/const、樣板字串)不能用。