本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Step Functions 工作流程的 Amazon 狀態機器結構語言
狀態機是使用代表包含下列欄位之結構的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
狀態。
工作流程中的常見狀態欄
下列欄位是所有狀態元素共用的欄位。
-
Type
(必要) -
狀態的類型。
-
Next
-
下一個狀態的名稱將會在目前狀態完成時執行。有些狀態類型 (例如
Choice
) 允許使用多個轉移狀態。如果目前狀態是工作流程中的最後一個狀態,或是終端狀態 (例如成功工作流狀態或)失敗的工作流程,則不需要指定
Next
欄位。 -
End
-
如果設定為
true
,請將此狀態指定為結束狀態 (結束執行)。每個狀態機器可以有任意數量的結束狀態。只有其中一個Next
或End
可使用於狀態中。某些狀態類型,例如Choice
,或終端狀態,例如成功工作流狀態和失敗的工作流程,不支援或使用End
欄位。 -
Comment
(選用) -
保留人類可讀的狀態描述。
-
InputPath
(選用) -
一個路徑,可供選取一部分的狀態輸入以傳遞至狀態的任務進行處理。如果省略,它具有可指定整個輸入的
$
值。如需詳細資訊,請參閱輸入和輸出處理。 -
OutputPath
(選用)