国家机结构 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

国家机结构

狀態機器是使用 JSON 文字來定義的,而該 JSON 文字代表包含下列欄位的結構。

Comment (選用)

狀態機器的人類可讀描述。

StartAt (必要)

一個字串,該字串必須完全符合其中一個狀態物件的名稱 (區分大小寫)。

TimeoutSeconds(選擇性)

狀態機器可以執行的執行秒數上限。如果執行超過指定的時間,執行會失敗,出現States.Timeout 錯誤名稱

Version (選用)

狀態機器中使用的 Amazon 州語言版本(默認為「1.0」)。

States (必要)

一個物件,其中包含以逗號分隔的一組狀態。

States字段包含狀態

{ "State1" : { }, "State2" : { }, ... }

狀態機器是由其包含的狀態和其間的關係所定義。

以下是範例。

{ "Comment": "A Hello World example of the Amazon States Language using a Pass state", "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Pass", "Result": "Hello World!", "End": true } } }

啟動此狀態執行時,系統會從 StartAt 欄位 ("HelloWorld") 中參考的狀態著手。如果此狀態具有 "End": true 欄位,則執行停止並傳回結果。否則,系統會尋找 "Next": 欄位並繼續以該狀態執行。此程序會重複執行,直到系統達到結束狀態 (具有 "Type": "Succeed""Type": "Fail""End": true 的狀態),或發生執行時間錯誤為止。

下列規則適用於狀態機器內的狀態:

  • 封閉區塊內的狀態可以任何順序發生,但是其列出的順序不會影響其執行順序。此順序是由狀態本身的內容所決定。

  • 在狀態機器內,只能有一個狀態指定為 start 狀態,而該狀態是由最上層結構中 StartAt 欄位的值所指定。此狀態是開始執行時最先執行的狀態。

  • End 欄位為 true 的任何狀態都會被視為 end (或 terminal) 狀態。根據您的狀態機器邏輯(例如,如果狀態機具有多個執行分支),您可能會有多個狀態。end

  • 如果狀態機器只包含一個狀態,該狀態可能同時是 start 狀態和 end 狀態。