簡介
云工作流通過Operation類型的狀態調用各種服務,支持三種服務集成模式來控制任務狀態的流轉。本文詳細介紹請求響應(RequestComplete)、等待系統回調(WaitForSystemCallback) 和 等待任務令牌(WaitForTaskToken) 三種集成模式的定義、應用場景及示例。
云工作流支持以下三種集成模式,但并非所有服務都支持全部模式。關于具體服務的支持情況,請參見集成類型與模式支持:
請求響應(RequestComplete):同步調用,等待服務響應后繼續流程。
等待系統回調(WaitForSystemCallback):異步調用,流程掛起直到系統回調。
等待任務令牌(WaitForTaskToken):異步調用,用戶獲取任務令牌后手動回調。
請求響應(RequestComplete)
定義:默認集成模式,發起
Operation狀態調用后,系統等待服務返回響應,再繼續后續流程。特點:同步執行,立即獲取調用結果,適合實時任務。
適用場景:快速API調用、數據查詢或簡單計算。
示例:同步調用函數計算
以下示例通過RequestComplete模式調用函數計算服務,等待函數返回結果后結束流程。
specVersion: "0.8"
version: "1.0"
name: "demo"
start: "InvokeFunction"
states:
- name: "InvokeFunction"
type: "Operation"
actions:
- functionRef:
type: "cf:InvokeFunction"
arguments:
functionName: "demo_function"
qualifier: "LATEST"
invocationType: "sync"
body: ""
regionId: "bb9fdb42056f11eda1610242ac110002"
actionExecuteMode: "RequestComplete"
end: true
說明
actionExecuteMode: "RequestComplete"指定使用同步調用invocationType: "sync"確保函數同步執行
等待系統回調(WaitForSystemCallback)
定義:發起
Operation狀態調用后,狀態掛起,被調用服務自動完成異步回調后繼續執行。特點:適合異步任務,系統負責觸發回調,減少輪詢開銷。
適用場景:函數計算異步調用(開發中,暫不支持)、子流程執行等需要系統自動完成的任務。
示例:等待系統回調執行工作流
以下示例使用WaitForSystemCallback執行工作流,等待子工作流完成后執行自動回調。
specVersion: "0.8"
version: "1.0"
name: "demo"
start: "ExecuteWorkflow"
states:
- name: "ExecuteWorkflow"
type: "Operation"
actions:
- functionRef:
type: "cloudflow:executeWorkflow"
arguments:
workflowName: "demo-workflow"
workflowType: "standard"
executionName: "execution"
workflowInput:
$Context.Input: null
regionId: "bb9fdb42056f11eda1610242ac110002"
actionExecuteMode: "WaitForSystemCallback"
end: true
ExecuteWorkflow任務開始后,首先通過cloudflow:executeWorkflow集成發送異步執行請求,接下來進入submitted狀態,即等待回調狀態。子工作流完成后,系統自動回調,更新ExecuteWorkflow狀態并繼續執行。
等待任務令牌(WaitForTaskToken)
定義:發起
Operation任務調用后,任務掛起,用戶獲取TaskToken后通過ReportTaskSuccess或ReportTaskFailure OpenApi觸發回調,繼續執行。特點:
提供任務令牌
{ $Context.taskToken },支持外部系統或用戶自定義邏輯控制流程。相比輪詢,回調模式降低延遲和服務器壓力,擴展編排范圍至任意計算資源。
適用場景::需要用戶審批、外部微服務交互,如信用檢查、訂單審批。
示例:等待任務令牌調用函數計算
以下示例使用WaitForTaskToken異步執行函數。
specVersion: "0.8"
version: "1.0"
name: "demo"
start: "InvokeFunction"
states:
- name: "InvokeFunction"
type: "Operation"
actions:
- functionRef:
type: "cf:InvokeFunction"
arguments:
functionName: "demo_function"
qualifier: "LATEST"
invocationType: "async"
body:
taskToken: "{ $Context.taskToken }"
regionId: "bb9fdb42056f11eda1610242ac110002"
actionExecuteMode: "WaitForTaskToken"
end: true
說明
actionExecuteMode: "RequestComplete"指定使用等待任務令牌。invocationType: "async"確保函數異步執行。taskToken: "{ $Context.taskToken }"將taskToken放在函數請求body中。
InvokeFunction任務開始后,通過cf:InvokeFunction發送異步執行請求,然后進入等待回調狀態。