跳到內容

代碼執行器節點

“代碼執行器”是FlowAI中的一個強大組件,它允許用戶編寫和執行JavaScript代碼來處理複雜的業務邏輯。通過代碼執行器,你可以實現比如字符串處理、條件判斷、循環操作等高級功能,極大地增強了工作流的靈活性和可擴展性。數據處理方面可以更加的隨心所欲,不拘泥於我們目前提供的節點的功能。

節點配置

基礎設置

代碼執行器節點基礎設置

  1. 節點名稱

    • 為代碼執行器設置一個描述性名稱,以便於識別和管理。
    • 建議使用能體現處理目的的名稱,如”數據轉換”、“字符串處理”等,確保團隊成員能夠快速理解節點的功能。
  2. 輸入參數 支持兩種參數輸入方式:

    • 手動輸入:直接輸入固定值,適用於簡單場景。
    • 從上下文獲取:引用之前節點的輸出值,適用於複雜的工作流。
  3. 代碼編輯區

    • 在此區域編寫JavaScript代碼,確保代碼邏輯清晰。
    • 必須使用return語句返回結果,以便後續節點能夠獲取到輸出。
    • 可以通過input.參數名訪問輸入參數,靈活處理不同的輸入。

代碼格式規範

代碼執行器會將你的代碼封裝在一個函數中執行,因此必須遵循以下格式:

// 處理邏輯
var result = someOperation();
// 必須使用return返回結果
return result;

使用示例

1. 基礎示例 - 直接返回值

最簡單的示例,直接返回一個值:

return 1; // 返回數字1

2. 使用手動輸入參數

// 配置輸入參數:
// 參數名:input1
// 參數值:123
// 輸入方式:手動輸入
return input.input1; // 將返回 "123"

3. 字符串處理示例

使用上下文參數進行字符串拼接:

// 配置輸入參數:
// 參數名:name
// 參數值:$開始.輸入1
// 輸入方式:從上下文獲取
var output = "hello " + input.name; // 返回 "hello [name]"
return output;

4. 複雜邏輯處理

// 示例:多重條件判斷和數組處理
var data = input.data; // 獲取輸入數據
var result = [];
// 數組處理
for (var i = 0; i < data.length; i++) {
if (data[i].value > 100) {
result.push({
id: data[i].id,
status: "high", // 高值狀態
});
} else if (data[i].value > 50) {
result.push({
id: data[i].id,
status: "medium", // 中值狀態
});
} else {
result.push({
id: data[i].id,
status: "low", // 低值狀態
});
}
}
return result; // 返回處理後的結果數組

5. 數據過濾與轉換

// 示例:過濾並轉換商品數據
const products = input.products;
return products
.filter((p) => p.price > 100) // 過濾高價商品
.map((p) => ({
id: p.id,
name: p.name.toUpperCase(), // 標準化名稱
price: p.price * 0.9, // 應用9折
}));

6. 類型轉換處理

// 示例:處理數字和字符串轉換
const rawData = input.rawValue;
// 安全轉換邏輯
return {
stringValue: String(rawData).trim(),
numberValue: isNaN(Number(rawData)) ? 0 : Number(rawData),
};

7. 數學運算示例

// 示例:統計數據分析
const dataset = input.numbers;
return {
average: dataset.reduce((a, b) => a + b) / dataset.length,
maxValue: Math.max(...dataset),
minValue: Math.min(...dataset),
};

最佳實踐

  1. 代碼組織

    • 保持代碼簡潔清晰,避免冗餘。
    • 適當添加註釋說明邏輯,幫助他人理解代碼。
    • 將複雜邏輯分解為小的函數,提升可讀性和可維護性。
  2. 錯誤處理

    try {
    // 你的業務邏輯
    var result = doSomething(); // 執行某個操作
    return result; // 返回結果
    } catch (error) {
    return {
    error: true,
    message: error.message, // 返回錯誤信息
    };
    }
  3. 參數驗證

    if (!input.required_param) {
    return {
    error: true,
    message: "Missing required parameter", // 返回缺少參數的提示
    };
    }

限制和注意事項

  1. 執行環境限制

    • 不支持網絡請求,確保代碼邏輯不依賴外部數據。
    • 不支持文件系統操作,避免文件讀寫相關的邏輯。
    • 執行時間限制為30秒,確保代碼高效。
  2. 代碼安全

    • 避免無限循環,確保代碼能夠正常終止。
    • 注意內存使用,避免內存洩漏。
    • 不要在代碼中包含敏感信息,保護用戶隱私。
  3. 調試建議

    • 在本地環境測試複雜邏輯,確保代碼在真實環境中可用。
    • 使用try-catch捕獲可能的錯誤,提升代碼的健壯性。
    • 返回詳細的錯誤信息便於調試,幫助快速定位問題。
  4. 性能監控

    • 使用performance.now()測量關鍵代碼段的執行時間
    const start = performance.now();
    // 關鍵邏輯
    const duration = performance.now() - start;
    return { result: data, duration };

定製服務

官方團隊為您量身定製專業的自動化解決方案