Step Functions 工作流程的 Amazon 狀態機器結構語言 - AWS Step Functions

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

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,請將此狀態指定為結束狀態 (結束執行)。每個狀態機器可以有任意數量的結束狀態。只有其中一個 NextEnd 可使用於狀態中。某些狀態類型,例如Choice,或終端狀態,例如成功工作流狀態失敗的工作流程,不支援或使用End欄位。

Comment (選用)

保留人類可讀的狀態描述。

InputPath (選用)

一個路徑,可供選取一部分的狀態輸入以傳遞至狀態的任務進行處理。如果省略,它具有可指定整個輸入的 $ 值。如需詳細資訊,請參閱輸入和輸出處理

OutputPath (選用)

選取要傳遞至下一個狀態之狀態輸出部分的路徑。如果省略,它具有指$定整個輸出的值。如需詳細資訊,請參閱輸入和輸出處理