本文介紹了選擇步驟的基本知識和其相關使用樣本,以及條件運算式的相關內容。
參數說明
選擇(Choice)步驟讓流程根據條件執行不同的步驟,類似於程式設計語言中的switch-case,它包含多個條件選項(Choice)和一個預設選項(Default),每個條件選項帶有一個條件運算式(Condition),若干步驟(Steps)和跳轉指令(Goto)。預設選項只帶有若干步驟和跳轉指令。當流程執行到選擇步驟,系統會按照選項定義的順序依次評估其條件運算式是否返回True。
如果返回
True則執行選項對應的步驟(如果定義了步驟),然後執行跳轉(如果定義跳轉指令)。如果沒有任何選項返回
True,則執行預設選項對應的步驟和跳轉。如果沒有定義預設選項,則結束選擇步驟。
選擇步驟包含以下屬性:
(必需)type:choice表示該步驟是選擇步驟。
(必需)name:步驟名稱。
(必需)choices:多個選項,數群組類型,每個元素對應一個選項。
(必需)condition:定義條件運算式。條件運算式可以通過JSON Path(
$.key)引用步驟輸入資料。(可選)steps:定義了選項所對應的多個串列步驟。
(可選)goto:指定跳轉目的步驟名稱,該目的步驟只能是和選擇步驟並列的一個步驟。
(必需)default:預設選項。
(可選)steps:定義了選項所對應的多個串列步驟。
(可選)goto:指定跳轉目的步驟名稱,該目的步驟只能是和當前選擇步驟並列的一個步驟。
(可選)end:當前步驟結束後是否繼續執行其後定義的步驟。
(可選)inputMappings:輸入映射。
(可選)outputMappings:輸出映射。本步驟
$local為實際執行選擇分支的執行結果。說明如果未指定輸出映射,本步驟預設將
$local作為輸出。
樣本
下面的流程定義了一個選擇步驟。
如果輸入中的
status的值是ready,則會執行第一個條件選項的步驟pass1,然後執行pass3和final。如果輸入中的
status的值是failed,則會執行第二個條件選項的跳轉,結束選擇步驟執行final。如果輸入中的
status的值不是ready和failed,則會執行預設選項邏輯,即pass2和final。
version: v1
type: flow
steps:
- type: choice
name: mychoice
choices:
- condition: $.status == "ready"
# choice with steps
steps:
- type: pass
name: pass1
- condition: $.status == "failed"
# choice with goto
goto: final
default:
# choice with both steps and goto
steps:
- type: pass
name: pass2
goto: final
- type: pass
name: pass3
- type: pass
name: final 條件運算式
條件運算式由以下操作和變數組成:
比較操作:
>>=<<===!=,適用於字串和數字類型。邏輯操作:
||&&。字元常量:以雙引號("")或者反引號(``)開始和結束,例如"foobar"或者`foobar`。
數字常量:
112.5。布爾常量:
truefalse。首碼:
!-。包含:
in,用來判斷數組是否包含某個值,或者對象是否包含某個索引值。
以下樣本對於下面的步驟輸入,針對不同的條件運算式,顯示了相應的執行結果。
{
"a": 1,
"b": {
"b1": true,
"b2": "ready"
},
"c": [1, 2, 3],
"d": 1,
"e": 1,
"f": {
"f1": false,
"f2": "inprogress"
}
} 條件運算式 | 執行結果 |
| true |
| false |
| true |
| true |
| true |
| true |
| true |
| true |
| false |
| true |
| true |
| false |
| true |
| true |
| false |
| true |
| true |
| true |