跳轉到

執行工作流程

「啟動工作流程執行」任務會非同步呼叫另一個工作流程 (Workflow):觸發後立刻往下走,不等待子工作流程跑完,只拿回一個執行識別碼 (Execution ARN)。若你需要等子工作流程的結果再繼續,請改用 Start Sync Workflow Execution;若想之後查詢這次執行的狀態與結果,請搭配 Describe Workflow Execution

這頁能幫你做什麼

  • 在一個工作流程裡「點火」啟動另一個工作流程,自己不用停下來等。
  • 適合背景作業、平行展開(一次觸發多個子工作流程)、或「送出就好、不在意即時結果」的通知情境。
  • 取得子工作流程的執行識別碼 (Execution ARN),之後可用 Describe Workflow Execution 追蹤。

開始前

前置需求

  • 你要呼叫的子工作流程必須已經建立,才能在「執行來源」選到它。建立方式見 建立工作流程
  • 這個任務不能呼叫自己所在的工作流程(避免無限遞迴),選單會把目前這個工作流程設為不可選。

Execution ARN 是什麼?什麼時候才需要?

這個任務觸發後會回傳一個 executionArn。ARN 只是 AWS 給「某一次工作流程執行」的一串唯一識別字串,就像一張收據編號,用來日後指認這次執行。一般情境下,「執行來源」維持預設「工作流程 ID」、直接從清單挑子工作流程即可,不需要自己手打 ARN。只有當你之後想用 Describe Workflow Execution 查詢這次執行跑完了沒,才會用到這個回傳的 ARN(把它存進工作流程狀態再傳過去)。在 UI 詳細頁看到這串 ARN 時,旁邊的 複製與 開啟連結按鈕用法(含「開啟連結會導向 AWS 主控台」的注意事項)見 ARN 欄位的「複製」與「開啟連結」

操作步驟

  1. 在工作流程編輯器中新增一個「執行工作流程」(Start Workflow Execution) 節點(在「新增狀態」面板的調色盤中標籤為中文「執行工作流程」,請以此搜尋;新增節點的通用步驟見 Action 使用指南)。

    執行工作流程任務設定面板

  2. 點選節點,右側開啟設定表單。

  3. 在「名稱」填入這個步驟的識別名稱。
  4. 在「執行來源」選擇要用「工作流程 ID」挑選平台上的子工作流程,或用「狀態機器 ARN」指定外部執行對象。
  5. 選好子工作流程(或填入狀態機器 ARN)。
  6. 在「輸入」填入要傳給子工作流程的資料(JSON 或 JSONPath)。
  7. 視需要展開「執行設定」調整外部記憶體、串流與錯誤處理行為。

    展開「執行設定」後的共用欄位

  8. 選擇「下一個狀態」,存檔後即可用表單上方的測試按鈕()試跑。

完整欄位說明

下表為這個任務在「設定」分頁的特有欄位。共用欄位(下一個狀態、附註、輸入與輸出分頁、錯誤處理分頁)的完整說明集中在 Action 通用設定

欄位 必填 預設 說明
名稱 這個步驟在工作流程裡的識別名稱,須在同一工作流程內唯一。
執行來源 否(恆有預設值) 工作流程 ID 下拉選單,決定怎麼指定要呼叫的子工作流程;此欄位永遠帶有預設值,畫面標籤上沒有紅星號。選項:工作流程 ID (Workflow ID) =從平台上已建立的工作流程清單挑選;狀態機器 ARN (State Machine ARN) =直接填入 AWS Step Functions 狀態機器的 ARN,用於非平台建立的執行對象。切換來源會清掉先前已選的對象。
工作流程 僅在「執行來源」為「工作流程 ID」時出現。從清單選出要呼叫的子工作流程;目前所在的工作流程不可選。也可按欄位上的「JSONPath」切換鈕改為「使用 JSONPath 表示式」輸入框,動態指定要呼叫的工作流程。
狀態機器 ARN 僅在「執行來源」為「狀態機器 ARN」時出現。填入要觸發的狀態機器 ARN。
輸入 要傳給子工作流程的輸入資料。以 JSON 物件撰寫,值可用 JSONPath($ 開頭)從目前工作流程的狀態動態帶入,例如 { "order": "$.order_data" }。不填則不帶入額外輸入。
上傳輸入至外部記憶體 關閉 開關。輸入資料量很大時開啟,把輸入改存到外部記憶體,避免塞爆工作流程狀態。開啟後會多出下方的「狀態記憶體輸入選擇器」。
狀態記憶體輸入選擇器 僅在開啟上一項時出現。用一組鍵值對指定要存進外部記憶體的輸入內容,每個值須為參照狀態輸入的 JSONPath 表達式。

執行設定(摺疊區塊)

在「設定」分頁底部展開「執行設定」可看到下列欄位,控制這個步驟實際執行時的行為。

欄位 必填 預設 說明
上傳輸出至外部記憶體 關閉 開關。輸出資料量很大時開啟,把輸出改存到外部記憶體。開啟後會多出選擇器設定,指定要把哪部分輸出存到外部記憶體。
在任務開始階段開啟即時輸出串流 關閉 開關。開啟後,任務開始時把任務定義以串流方式即時送到執行頁面顯示。
在任務結束階段開啟即時輸出串流 關閉 開關。開啟後,任務結束時把結果以串流方式即時送到執行頁面顯示。
錯誤時中止 開啟 開關。開啟(預設)代表此步驟出錯時整個工作流程中止;關閉後改用下方「預設輸出」繼續往下走。
預設輸出 僅在「錯誤時中止」關閉時出現。指定此步驟出錯時要改用的預設輸出值,讓流程能用替代結果繼續。

Note

此任務的「執行設定」共用 Action 通用設定 的串流與錯誤處理欄位;外部記憶體選擇器的細部操作見 外部記憶體

實際範例

設定內容:

  • 執行來源:工作流程 ID
  • 工作流程:send-notification-workflow
  • 輸入:{ "notification": "$.notification_data" }

工作流程輸入:

{
  "order_id": "ORD-12345",
  "notification_data": {
    "customer_email": "customer@example.com",
    "order_status": "shipped",
    "tracking_number": "TRK-987654321"
  }
}

測試執行的輸出:

{
  "errors": null,
  "action_type": "start_workflow_execution_action",
  "executionArn": "arn:aws:states:us-east-1:123456789012:execution:send-notification:exec-abc123"
}

任務會立即回傳執行識別碼 (executionArn),但不包含子工作流程的結果。要取得結果,請把這個 ARN 傳給 Describe Workflow Execution 查詢。

三種工作流程執行任務的差別

任務 行為 何時用
Start Workflow Execution(本頁) 非同步觸發,不等結果,只回傳 ARN 背景作業、平行展開、送出即可的通知
Start Sync Workflow Execution 同步觸發並等待,回傳子工作流程的輸出 需要子工作流程的結果才能繼續時
Describe Workflow Execution 用 ARN 查詢某次執行的狀態與結果 追蹤、輪詢非同步啟動的子工作流程

下一步