本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在工作流程工作室中設計狀態機
在本教程中,您將學習使用工作流 Studio 的基礎知識 AWS Step Functions。 在工設計模式作流程 Studio 中,您將創建一個包含多個狀態的狀態機器 Pass
Choice
,包括Fail
,Wait
,,和Parallel
。您將使用拖放功能來搜尋、選取和設定這些狀態。然後,您將檢視工作流程的自動產生 Amazon States Language (ASL) 定義。您還將使用程式碼模式的工作流 Studio 來編輯工作流定義。然後,您將結束工作流程 Studio,執行狀態機器,並檢閱執行詳細資料。
在本教程中,您還將學習如何更新狀態機器並查看執行輸出中的更改。最後,您將執行清理步驟並刪除狀態機器。
完成這個教學課程之後,您就會知道如何使用 Workflow Studio 來建立和設定使用 [設計] 和 [程式碼] 模式的工作流程。您還將知道如何更新,運行和刪除狀態機器。
步驟 1:瀏覽至工作流程工作室
-
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 -
在「選擇範本」對話方塊中,選取「空白」。
-
選擇選取以在中開啟工作流程工作室設計模式。
步驟 2:建立狀態機
在工作流程 Studio 中,狀態機器是工作流程的圖形表示。使用工作流程 Studio,您可以定義、設定和檢查工作流程的個別步驟。在下面的步驟中,您可以使用設計模式的工作流 Studio 來創建您的狀態機。
建立 狀態機器
-
請確定您處於 [工作流程工作室] 的 [設計] 模式。
-
從左狀態瀏覽器側選擇「流量」頁標。然後,將「通過」狀態拖曳至標示為「拖曳第一個狀態」的空白狀態。
-
將「選擇」狀態從「流程」標籤拖放到「通過」狀態下方。
-
對於「狀態」名稱,請取代「選擇」的預設名稱。在本教學課程中,使用名稱
IsHelloWorldExample
。 -
拖曳另一個「通過」狀態並將其放到IsHelloWorldExample狀態的一個分支。然後,將「失敗」狀態拖放到狀IsHelloWorldExample態的其他分支下方。
-
選擇「通過 (1)」狀態,並將其重新命名為
Yes
。將「失敗」狀態重新命名為No
。 -
使用布林變數
IsHelloWorldExample
指定IsHelloWorldExample狀態的分支邏輯。如果
IsHelloWorldExample
是False
,則工作流程將進入「否」狀態。否則,工作流程會繼續處於 「是」 狀態的執行流程。若要定義分支邏輯,請執行下列操作:
-
在上選擇IsHelloWorldExample狀態Canvas 和工作流程圖表,然後在「選擇規則」下,選擇「規則 #1」方塊中的編輯圖示,以定義第一個選擇規則。
-
選擇新增條件。
-
在「規則 #1 的條件」對話方塊中,於「變數」
$.IsHelloWorldExample
下輸入。 -
選擇等於下運算符。
-
選擇布爾常量下值,然後從下拉列表中選擇 true。
-
選擇 [儲存條件]。
-
確保然後下一個狀態是:下拉列表已選擇是。
-
選擇「新增選擇規則」,然後選擇「新增條件」。
-
在「規則 #2」方塊中,透過重複子步驟 7.c 到 7.f 來定義
IsHelloWorldExample
變數值為 false 時的第二個選擇規則。對於步驟 7.e,請選擇假而不是真。 -
在裡面規則 #2 框中,選擇否來自然後下一個狀態是:下拉列表。
-
在 [預設規則] 方塊中,選擇編輯圖示以定義預設選擇規則,然後從下拉式清單中選擇 [是]。
-
-
在 [是] 狀態之後新增 [等待] 狀態,並將其命名
Wait 3 sec
。然後,通過執行以下步驟將等待時間配置為三秒鐘:-
在 [選項] 下,保留 [等待固定間隔] 的預設選取項目。
-
在 [秒] 下,確定已選取 [輸入秒數],然後
3
在方塊中輸入。
-
-
在「等待 3 秒」狀態之後,新增「平行」狀態。在其兩個分支中添加兩個「通過」狀態。命名第一個「通過」狀態
Hello
。命名第二個「通過」狀態World
。完成的工作流程看起來應如下圖所示:
步驟 3:檢閱自動產生的 Amazon 州語言定義
當您將狀態從「流程」索引標籤拖放到畫布上時,工作流程 Studio 會自動即時編寫工作流程的 Amazon 狀態語言 (ASL) 定義。在面檢查器面板板中,選擇「定義」切換按鈕以檢視此定義,或視需要切換程式碼模式至編輯此定義。若要取得有關編輯工作流程定義的資訊,請參閱本自學課程的步驟 4。
-
(選擇性) 在「Inspector 查程式」面板上選擇「定義」,然後檢視狀態機的工作流程。
下列範例程式碼顯示
IsHelloWorldExample
狀態機器自動產生的 Amazon 狀態語言定義。您在工作流程 Studio 中新增的Choice
狀態會根據您在步驟 2 中定義的分支邏輯來決定執行流程。{ "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "Next": "IsHelloWorldExample", "Comment": "A Pass state passes its input to its output, without performing work. Pass states are useful when constructing and debugging state machines." }, "IsHelloWorldExample": { "Type": "Choice", "Comment": "A Choice state adds branching logic to a state machine. Choice rules can implement 16 different comparison operators, and can be combined using And, Or, and Not\"", "Choices": [ { "Variable": "$.IsHelloWorldExample", "BooleanEquals": false, "Next": "No" }, { "Variable": "$.IsHelloWorldExample", "BooleanEquals": true, "Next": "Yes" } ], "Default": "Yes" }, "No": { "Type": "Fail", "Cause": "Not Hello World" }, "Yes": { "Type": "Pass", "Next": "Wait 3 sec" }, "Wait 3 sec": { "Type": "Wait", "Seconds": 3, "Next": "Parallel" }, "Parallel": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "End": true } } }, { "StartAt": "World", "States": { "World": { "Type": "Pass", "End": true } } } ] } } }
步驟 4:在「程式碼」模式中編輯工作流程定義
Workflow Studio 的程式碼模式提供整合的程式碼編輯器,可檢視和編輯工作流程的ASL定義。
-
選擇「程式碼」以切換至「程式碼」模式。
-
在「平行」狀態定義之後,放置游標並按下
Enter
。 -
按下
Ctrl+space
以查看您可以在「平行」狀態之後新增的狀態清單。 -
從選項清單中選擇「通過狀態」。程式碼編輯器會新增「通過狀態」的樣板程式碼。
-
新增此狀態會導致工作流程定義中發生錯誤。在「平行」狀態的定義中,取代
"End": true
為
。"Next": "PassState"
-
在您新增的「通過狀態」定義中,進行下列變更:
-
移除「結果」節點。
-
移除
"ResultPath": "$.result",
和"Next": "NextState"
。 -
之後
"Type": "Pass",
,輸入
。"End": true
-
,
在「通過狀態」定義之後新增 a。
-
您的工作流程定義現在看起來應該類似於下列定義。
{
"Comment": "A description of my state machine",
"StartAt": "Pass",
"States": {
"Pass": {
"Type": "Pass",
"Next": "IsHelloWorldExample"
},
"IsHelloWorldExample": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.IsHelloWorldExample",
"BooleanEquals": true,
"Next": "Yes"
},
{
"Variable": "$.IsHelloWorldExample",
"BooleanEquals": false,
"Next": "No"
}
],
"Default": "Yes"
},
"Yes": {
"Type": "Pass",
"Next": "Wait 3 seconds"
},
"Wait 3 seconds": {
"Type": "Wait",
"Seconds": 3,
"Next": "Parallel"
},
"Parallel": {
"Type": "Parallel",
"Branches": [
{
"StartAt": "Hello",
"States": {
"Hello": {
"Type": "Pass",
"End": true
}
}
},
{
"StartAt": "World",
"States": {
"World": {
"Type": "Pass",
"End": true
}
}
}
],
"Next": "PassState"
},
"PassState": {
"Type": "Pass",
"End": true
},
"No": {
"Type": "Fail"
}
}
}
步驟 5:保存狀態機
-
選擇其他 Con fig 態或選擇的預設狀態機器名稱旁邊的編輯圖示MyStateMachine。在狀態機器組態中,指定名稱。例如,輸入
HelloWorld
。 -
(選擇性) 指定其他工作流程設定,例如狀態機器類型及其執行角色。在本教學課程中,請保留狀態機器組態中的所有預設選項。
-
選擇 Create (建立)。
-
在 [確認角色建立] 對話方塊中,選擇 [確認] 以繼續。
您也可以選擇 [檢視角色組態] 回到 [設定] 模式。
如需有關 Config 模式的詳細資訊,請參閱工作流程 Studio 的 Config 模式。
步驟 6:運行狀態機
狀態機器執行是執行工作流程以執行工作的執行個體。
-
在 [狀態機器] 頁面上,選擇HelloWorld狀態機器。
-
在HelloWorld頁面上,選擇 [開始執行]。
-
(選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。
非ASCII名稱和記錄
Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。
-
在「輸入」方塊中,以JSON格式輸入執行的輸入值。根據您的輸入,
IsHelloWorldExample
變數決定要執行的狀態機器流程。現在,請使用以下輸入值:{ "IsHelloWorldExample": true }
注意
雖然指定執行輸入是選擇性的,但在本教學課程中,必須指定類似於上述範例輸入的執行輸入。執行狀態機器時,會在
Choice
狀態中參照此輸入值。 -
選擇 Start execution (開始執行)。
-
Step Functions 主控台會將您導向至標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。
若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述。
在本自學課程中,如果您輸入的輸入值為
"IsHelloWorldExample": true
,您應該會看到下列輸出:{ "IsHelloWorldExample": true }, { "IsHelloWorldExample": true }
步驟 7:更新狀態機
當您更新狀態機時,您的更新最終保持一致。在短暫的時間之後,所有新啟動的執行都將反映狀態機的更新定義。所有當前正在運行的執行都將在先前的定義下運行到完成。
在此步驟中,您將在工作流程 Studio 的設計模式模式下更新狀態機器。您將在「通行證」狀態中新增一個名為「世界」的Result
欄位。
-
在標題為您的執行 ID 的頁面上,選擇編輯狀態機器。
-
請確定您處於 [設計] 模式。
-
在畫布上選擇名為「世界」的「通過」狀態,然後選擇「輸出」。
-
在「結果」方塊中,輸入
"World has been updated!"
。 -
選擇 Save (儲存)。
-
(選擇性) 在「定義」區域中,檢視工作流程的更新後 Amazon States 語言定義。
{ "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "End": true } } }, { "StartAt": "World", "States": { "World": { "Type": "Pass", "Result": "World has been updated!", "End": true } } } ], "Next": "PassState" }
-
選擇 Execute (執行)。
-
在新索引標籤中開啟的 [開始執行] 對話方塊中,提供下列執行輸入。
{ "IsHelloWorldExample": true }
-
選擇 Start Execution (開始執行)。
-
(選擇性) 在「圖表」檢視中,選擇「世界」步驟,然後選擇「輸出」。輸出是世界已經更新!
步驟 8:清除
若要刪除您的狀態機
-
從導覽功能表中,選擇 [狀態機]。
-
在 [狀態電腦] 頁面上,選取 HelloWorld,然後選擇 [刪除]。
-
在 [刪除狀態機器] 對話方塊中,輸入
delete
以確認刪除。 -
選擇 刪除 。
如果刪除成功,畫面頂端會出現綠色的狀態列。綠色狀態列會告訴您狀態機已標記為要刪除。當所有進行中的執行停止運行時,您的狀態機將被刪除。
若要刪除您的執行角色
-
開啟的 [角色] 頁面
IAM。 -
選擇為您建立的「Step Functions」IAM 角色。例如,StepFunctions-HelloWorld-角色-EXAMPLE。
-
選擇 Delete role (刪除角色)。
-
選擇 Yes, delete (是,刪除)。