跳轉到
版本 v1.0.25

查看工作流程執行

「查看工作流程執行」任務會用一個執行識別碼 (Execution ARN) 去查詢某次工作流程執行的狀態與結果,而不是啟動新的執行。最常見的用法是:先用 執行工作流程 非同步觸發子工作流程拿到 ARN,之後再用這個任務去檢查它跑完了沒、結果是什麼。若要同步啟動並直接等結果,請用 執行同步工作流程

這頁能幫你做什麼

  • 檢查非同步啟動的子工作流程目前的狀態(執行中、成功、失敗、逾時)。
  • 取回已完成執行的輸出 (output),供後續步驟使用。
  • 搭配「等待 (Wait)」狀態或重試邏輯,做出「輪詢直到完成」的協調模式(「等待」在「新增狀態」面板的「流程」分頁,見 流程控制節點)。
  • 依執行狀態建立條件分支(例如成功才繼續、失敗就走補救流程)。

開始前

前置需求

  • 你需要一個有效的執行 ARN。通常來自先前的 執行工作流程(它會回傳 executionArn),用那一步的 ResultPath 把結果存進工作流程狀態後再傳給本任務(做法見下方最小可跟做範例)。

執行 ARN 是什麼?

ARN 是 AWS 給「某一次工作流程執行」的一串唯一識別字串,可以想成這次執行的收據編號。本任務不會自己生出 ARN,而是拿著別人給的 ARN 去查那一次執行的狀態與結果。新手通常不必手打 ARN,而是把上一步「執行工作流程」回傳的 executionArn 接過來用。在 UI 詳細頁看到這串 ARN 時,旁邊的 複製與 開啟連結按鈕用法(含「開啟連結會導向 AWS 主控台」的注意事項)見 ARN 欄位的「複製」與「開啟連結」

最小可跟做範例:先觸發、再查詢

把兩個任務串起來,就能「先啟動子工作流程,再回頭查它跑完沒」:

  1. 第一步放一個 執行工作流程 任務,挑好要呼叫的子工作流程。它執行後會回傳 executionArn(如何新增請見 任務使用指南)。
  2. 點選第一步的節點,切到面板的「輸入與輸出」分頁,把「ResultPath」這一格改成 $.child_execution(它預設是 $.<步驟名稱>Result)。ResultPath 就是「這一步的結果要放到哪個位置」,改成這個路徑後,下一步就能從 $.child_execution 底下取到剛才那次執行的回傳內容(也就是含 executionArn 的那包)。ResultPath 的完整說明見 任務通用設定 › 輸入與輸出設定
  3. 第二步放本任務(查看工作流程執行),在「執行 ARN」打開「JSONPath」開關、填 $.child_execution.executionArn(欄位右側有下拉箭頭,點開會列出目前狀態裡可用的欄位,不必全部手打)——也就是「到上一步存下的那包結果裡,取 executionArn 這個欄位」。
  4. 試跑後即可在輸出看到該次執行的 status(執行中/成功/失敗)與 output

操作步驟

  1. 在工作流程編輯器中新增一個「查看工作流程執行」(Describe Workflow Execution) 節點。它在「新增狀態」面板的「工作流程執行」分類下,面板顯示的是中文「查看工作流程執行」,可以直接把這五個字貼到面板上方的搜尋框裡找(如何新增請見 任務使用指南)。

    查看工作流程執行任務設定面板,圖中「執行 ARN」填的是不帶前綴的簡化寫法

    圖中「執行 ARN」填的是 $.executionArn,那是「上一步的結果直接就是整包執行資訊」的簡化情境。若你照上方範例把上一步的 ResultPath 設成 $.child_execution,這一格就要填 $.child_execution.executionArn——前半段永遠對應你在上一步填的 ResultPath

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

  3. 在「名稱」填入這個步驟的識別名稱。
  4. 在「執行 ARN」填入要查詢的執行識別碼,通常打開「JSONPath」開關從狀態帶入,例如 $.child_execution.executionArn路徑的前半段要對應你在上一步的「輸入與輸出」分頁把 ResultPath 設成什麼(見上方最小可跟做範例)。
  5. 視需要展開「執行設定」調整外部記憶體、串流與錯誤處理行為。

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

  6. 選擇「下一個狀態」。編輯器會自動把變更存成草稿(頂部會顯示「草稿已儲存」,沒有一顆叫「存檔」的按鈕),接著就可以用表單上方的「測試任務」按鈕()試跑並檢視回傳的 statusoutput

完整欄位說明

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

欄位 必填 預設 說明
名稱 這個步驟在工作流程裡的識別名稱,須在同一工作流程內唯一。
執行 ARN 要查詢的工作流程執行識別碼。可直接貼上 ARN,或打開「JSONPath」開關從目前狀態動態帶入,例如 $.child_execution.executionArn開關平常隱藏,要把滑鼠移到欄位上才會浮出來,見 任務通用設定)。此值通常來自先前「執行工作流程」任務的回傳,路徑寫法取決於你在那一步把 ResultPath 設成什麼(見最小可跟做範例)。

Note

這個任務只有「執行 ARN」一個特有輸入欄位,沒有「執行來源」「工作流程」「輸入」等啟動類欄位,因為它是用既有的 ARN 查詢、而非啟動新執行。

執行設定(摺疊區塊)

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

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

Note

外部記憶體選擇器的細部操作見 外部記憶體;串流與錯誤處理欄位與其他任務共用,見 任務通用設定

實際範例

設定內容:

  • 執行 ARN:$.child_execution.executionArn(打開「JSONPath」開關填入)

工作流程輸入:

{
  "child_execution": {
    "executionArn": "arn:aws:states:us-east-1:123456789012:execution:process-order:exec-abc123"
  }
}

測試執行的輸出(執行中):

{
  "errors": null,
  "action_type": "describe_workflow_execution_action",
  "status": "RUNNING",
  "output": {}
}

測試執行的輸出(已成功):

{
  "errors": null,
  "action_type": "describe_workflow_execution_action",
  "status": "SUCCEEDED",
  "output": {
    "order_id": "ORD-12345",
    "status": "processed",
    "payment_confirmed": true
  }
}

可依 status 欄位(如 RUNNINGSUCCEEDEDFAILEDTIMED_OUT)做條件分支;狀態為 SUCCEEDED 時,再用 $.output 取用子工作流程的結果。

輪詢策略

搭配「等待 (Wait)」狀態或錯誤處理分頁的重試邏輯,可定期重複查詢,直到 status 變成 SUCCEEDED 為止;設計輪詢間隔時請一併考慮子工作流程的逾時時間。「等待」狀態在「新增狀態」面板的「流程」分頁(不是「任務」分頁),用法見 流程控制節點

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

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

下一步