本文介紹任務狀態的基本概念及其相關使用樣本。
基本概念
任務(Task)狀態主要用於調用其他整合服務API來完成特定任務。利用任務類型狀態可以執行一個函數調用,阿里雲指定服務API調用,也可以通過HTTP/HTTPS等通用協議發起第三方服務調用。在流程定義語言中,我們通過聲明State的類型為‘Task’標記目前狀態是一個任務類型的狀態。
任務狀態包含以下屬性。
欄位 | 類型 | 是否必選 | 描述 | 樣本值 |
Name | string | 是 | 狀態名稱。 | my-state-name |
Description | string | 否 | 狀態原因。 | describe it here |
Type | string | 是 | 狀態類型。 | Task |
Action | string | 是 | 代表當前任務要執行的Action是什麼,通常是產品對應的API名稱,或者整合服務的抽象行為名稱。遵循 <產品名>:<APIName>。 | FC:InvokeFunction |
TaskMode | enum | 否 | 任務調用模式,CloudFlow提供3種任務類型,具體類型描述細節參考服務整合模式。
| WaitForCustomCallback |
InputConstructor | map[string]any | 否 | 輸入構造器。 | 請參見輸入和輸出 |
Parameters | map[string]any | 否 | 請求調用參數規範;對應Action行為定義的具體調用參數規範。 可使用常量或JsonPath進行參數賦值。 | 參數規範請參見整合簡介 |
Timeout | string | 否 | 調用最大逾時時間,單位為秒。 | 30 |
Retry | map[string]any | 否 | 錯誤重試策略配置。 | 請參見錯誤處理 |
Catch | map[string]any | 否 | 錯誤捕獲策略配置。 | 請參見錯誤處理 |
OutputConstructor | map[string]any | 否 | 輸出構造器。 | 請參見輸出構造器 |
Next | string | 否 | 目前狀態的下一個狀態。當End取值為true時,無需指定。 | my-next-state |
End | bool | 否 | 是否為當前範圍的終結節點。 | true |
調用樣本
調用Function Compute
通過聲明Task
類型的State
,利用Parameters
欄位,按照Function Compute調用參數規範,指定需要調用函數的資訊,具體參數規範請參見配置調用參數。函數調用既可以通過最佳化整合方式調用,也可以直接使用對應的阿里雲OpenAPI調用。
Type: StateMachine
SpecVersion: v1
Name: Function Compute調用樣本
StartAt: 同步調用函數樣本
States:
- Name: 同步調用函數樣本
Type: Task
TaskMode: RequestComplete
Action: FC:InvokeFunction
Parameters:
resourceArn: <myFunctionArn>
invocationType: Sync
body: <myEvent>
Next: 非同步呼叫函數樣本
- Name: 非同步呼叫函數樣本
Type: Task
TaskMode: RequestComplete
Action: FC::InvokeFunction
Parameters:
resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
invocationType: Async
body: <myEvent>
Retry:
- Errors:
- MyCustomException1
Description: 重試策略1
MaxAttempts: 3
IntervalSeconds: 2
Catch:
- Errors:
- MyCustomException1
Description: 捕獲策略1
OutputConstructor:
ErrorCode: MyCustomException1
ErrorMessage: MyCustomException1
Next: ErrorCatchExit
Next: SucceededExit
- Type: Pass
Name: ErrorCatchExit
End: true
- Type: Pass
Name: SucceededExit
End: tru
調用阿里雲服務API
按照阿里雲OpenAPI規範,調用相應的OpenAPI。例如 ECS:DescribeInstances。
Type: StateMachine
SpecVersion: v1
Name: 阿里雲服務API調用樣本
StartAt: DescribeInstances
States:
- Type: Task
Name: DescribeInstances
Action: ECS:DescribeInstances
TaskMode: RequestComplete
Parameters:
RegionId: cn-hangzhou
VpcId: vpc-bp11y195luy47h8****
VSwitchId: vsw-bp1wb297ekw7xyh****
End: true
調用HTTP/HTTPS
Type: StateMachine
SpecVersion: v1
Name: HTTP協議調用樣本
StartAt: HTTP調用樣本
States:
- Type: Task
Name: HTTP調用樣本
Action: HTTP:Request
TaskMode: RequestComplete
Description: 調用HTTP樣本
Parameters:
url: https://www.example.com
method: Get