本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
国家机结构
狀態機器是使用 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
狀態。