跳至主要内容

REFERENCE

開發者參考

認證、API、SDK、Flow Agent 處理節點與參數取值的完整參考。

Update Context

設定或更新流程裡的變數,是最常用來初始化的節點。

Update Context 是用於更新工作流程中變數內容的 processor。

  1. 基本用法​

    執行 Update Context 時,會根據設定的配置新增或修改變數值,這些變數可以在後續 processor 中使用。其運作方式類似程式語言中的變數賦值操作。

  2. 配置參數​

    節點的屬性面板:

    Update Context 的屬性面板:Properties 區塊只有一個 +,變數自己加

    Name​

    顯示在畫布上的名稱,用於在工作流程中識別此 processor。

    Description​

    用於補充此 processor 的用途,提升工作流程的可讀性。

    Properties​

    點擊 (+) 新增一個配置項目。

    配置項目包含兩個部分:

    • 變數名稱:第一個輸入框設定此 Context 變數的名稱
    • 賦值方式:選擇如何賦予變數值

    可用的賦值方式:

    • Literal:直接輸入固定值
    • Expression:使用 JavaScript 表達式計算值
    • Template:使用模板語法計算值

    直接撰寫 Workflow CRD 時,這個對應關係更直接:config 的 name 就是變數名稱,沒有額外的巢狀結構。

    - name: proc-init
    type: update-context
    labels:
    display_name: 初始化
    configs:
    - name: helpCenterUrl
    expression: |-
    (() => {
    return "https://help.buy123.com.tw/zh-TW/";
    })()
    - name: storefrontUrl
    expression: |-
    (() => {
    return "https://www.buy123.com.tw/";
    })()

    後續 processor 的 prompt template 直接以裸名讀取這些 key,例如 {{helpCenterUrl}}。這是把固定座標(外部網址、代碼對照、環境相關常數)集中在工作流程開頭的常見寫法,好處是這些值只出現一次,改的時候不必翻遍每一段 prompt。

    configs 也可以是空陣列。Flow Agent 預設工作流程開頭那個名為 Init 的節點就是 configs: [],它此時不設定任何變數,純粹作為工作流程的起始節點存在。

  3. 連接關係​

    Success​

    當成功更新所有指定的 context 欄位後,工作流程會從此連接點繼續執行下一個 processor。所有動態配置的配置名稱都會成為新的變數名稱。

  4. 使用範例​

    1. 單純變數賦值​

    單一變數的宣告或更新,做法都是相同的。以下示範變數 historyStart 的賦值方式。

    1-1. Literal​

    針對單一變數且無需程式邏輯計算時,這是最簡單的用法。直接在輸入框填入需要的數值即可。

    Literal 模式設定

    1-2. Expression​

    當需要進行複雜運算時,可以選擇 Expression 模式。以下示範簡單的固定值賦值:

    (() => {
    return 0;
    })()
    Expression 模式設定

    2. 物件類型的變數賦值​

    物件類型的變數有複雜的資料結構,無法直接使用 Literal 方式賦值,必須使用 Expression 模式。

    2-1. 物件的初始化​

    如果物件尚未存在,必須先進行初始化。對不存在的變數進行操作會導致錯誤。

    (() => {
    return {
    name: "Test",
    status: "idle",
    sessionStart: null,
    };
    })()
    物件初始化設定

    2-2. 物件的更新​

    當物件已經初始化後,可以只更新特定的屬性值,其他屬性不會被覆蓋。以下示範更新 context 物件的 status 和 sessionStart 值:

    (() => {
    // 更新 status 值
    context.status = "pending";

    // 更新為目前的時間戳記
    const currentTime = Date.now();
    context.sessionStart = currentTime;

    // 回傳更新後的 context 物件
    return context;
    })()
    物件更新設定
  5. 注意事項​

    • 變數名稱已存在時,新值直接覆蓋舊值。
    • 設定過的變數在整個流程後續都讀得到,直到再被覆蓋。
    • 物件型別的變數要先初始化才能更新其中的欄位,跳過初始化直接寫欄位會出錯。

準備好開始了嗎?

想知道 Asgard 怎麼用在你的團隊?跟我們聊聊。

聯絡我們