跳轉到

執行同步工作流程

「啟動同步工作流程執行」任務會同步呼叫另一個工作流程 (Workflow):觸發後會等待子工作流程跑完,並把它的輸出回傳,讓目前的工作流程能直接拿結果繼續往下做。若你只想觸發、不想等結果,請改用 Start Workflow Execution;若要查詢某次(尤其是非同步啟動的)執行狀態,請用 Describe Workflow Execution

這頁能幫你做什麼

  • 把複雜流程拆成可重複使用的子工作流程,再用這個任務串接、組合(Workflow 組合)。
  • 在繼續之前先呼叫驗證、轉換或資料擴充的子工作流程,並直接取得回傳結果。
  • 拿到子工作流程的 output 後,用 JSONPath(如 $.output.field)在後續步驟使用。

開始前

前置需求

  • 你要呼叫的子工作流程必須已經建立。建立方式見 建立工作流程
  • 這個任務不能呼叫自己所在的工作流程,選單會把目前這個工作流程設為不可選。
  • 同步等待會佔用父工作流程的時間,請留意子工作流程的執行時間,避免父流程在等待時逾時。

ARN 是什麼?不用怕

你會看到「狀態機器 ARN」「Execution ARN」這類字眼。ARN 只是 AWS 給每個資源或每次執行的一串唯一識別字串,用來精準指到某個對象。一般情境下,「執行來源」維持預設「工作流程 ID」、直接從清單挑選子工作流程即可,完全不需要碰 ARN。只有要呼叫非本平台建立的外部對象時,才需要填 ARN。在 UI 詳細頁看到 ARN 時,旁邊的 複製與 開啟連結按鈕用法(含「開啟連結會導向 AWS 主控台」的注意事項)見 ARN 欄位的「複製」與「開啟連結」

操作步驟

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

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

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

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

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

  8. 選擇「下一個狀態」,存檔後可用表單上方的測試按鈕()試跑並檢視回傳的 output

完整欄位說明

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

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

執行設定(摺疊區塊)

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

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

Note

這個任務的設定面板與非同步版 Start Workflow Execution 完全相同;兩者唯一的差別是執行行為(同步等待 vs. 觸發即返回),表單上沒有額外的等待或逾時欄位。外部記憶體選擇器細節見 外部記憶體

實際範例

設定內容:

  • 執行來源:工作流程 ID
  • 工作流程:validate-order-workflow
  • 輸入:{ "order": "$.order_data" }

工作流程輸入:

{
  "order_data": {
    "order_id": "ORD-12345",
    "customer_id": "CUST-789",
    "items": [
      { "sku": "WIDGET-A", "quantity": 2, "price": 49.99 },
      { "sku": "GADGET-B", "quantity": 1, "price": 129.99 }
    ],
    "total": 229.97
  }
}

測試執行的輸出:

{
  "errors": null,
  "action_type": "start_sync_workflow_execution_action",
  "executionArn": "arn:aws:states:us-east-1:123456789012:execution:validate-order:exec-xyz",
  "status": "SUCCEEDED",
  "output": {
    "validation_result": "APPROVED",
    "inventory_status": "IN_STOCK",
    "estimated_ship_date": "2026-03-07",
    "risk_score": 0.15
  }
}

子工作流程的結果在 output 欄位中,可立即在後續步驟以 JSONPath 取用,例如 $.output.validation_result

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

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

下一步