このトピックでは、選択ステップの基本と例、および関連する条件式について説明します。
パラメーター
選択ステップでは、プログラミング言語の switch-case {/* 選択 */} と同様に、条件に基づいてワークフロー内の異なるステップを実行できます。選択ステップには、複数の選択肢とデフォルトが含まれています。各選択肢には、条件式、いくつかのステップ、および goto 命令が含まれています。デフォルトには、いくつかのステップと goto 命令のみが含まれています。ワークフローが選択ステップに進むと、システムは定義された順序で条件式が True {/* 真 */} を返すかどうかを評価します。
True{/* 真 */} が返された場合、対応する選択肢で定義されたステップと goto 命令が実行されます。どの選択肢も
True{/* 真 */} を返さない場合、デフォルトで定義されたステップと goto 命令が実行されます。デフォルトが定義されていない場合、選択ステップは終了します。
選択ステップには、次の属性が含まれています。
type: 必須。ステップタイプ。choice の値は、選択ステップを指定します。
name: 必須。ステップ名。
choices: 必須。配列型の複数の選択肢。各要素は選択肢に対応します。
condition: 必須。条件式。条件式は、JSONPath(
$.key)に基づいてステップ入力を参照します。steps: オプション。選択肢に対して定義された複数のシリアルステップ。
goto: オプション。ターゲットステップの名前。これは、選択ステップと並列である必要があります。
default: 必須。デフォルト。
steps: オプション。デフォルトに対して定義された複数のシリアルステップ。
goto: オプション。ターゲットステップの名前。これは、現在の選択ステップと並列である必要があります。
end: オプション。現在のステップが終了した後、後続のステップを続行するかどうかを指定します。
inputMappings: オプション。入力マッピング。
outputMappings: オプション。出力マッピング。このステップの
$local{/* ローカル */} は、選択肢ブランチの実行結果を示します。説明出力マッピングが指定されていない場合、デフォルトで
$local{/* ローカル */} がこのステップの出力として使用されます。
例
次のワークフローの例では、選択ステップを定義しています。
入力の
status{/* 状態 */} の値がready{/* 準備完了 */} の場合、最初の選択肢のpass1{/* パス1 */}、pass3{/* パス3 */}、final{/* 最終 */} ステップが順番に実行されます。入力の
status{/* 状態 */} の値がfailed{/* 失敗 */} の場合、2 番目の選択肢の goto 命令が実行され、選択ステップが終了し、final{/* 最終 */} ステップが実行されます。入力の
status{/* 状態 */} の値がready{/* 準備完了 */} でもfailed{/* 失敗 */} でもない場合、デフォルトが実行されます。つまり、pass2{/* パス2 */} ステップと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 付きの選択肢 */}
goto: final
default:
# choice with both steps and goto {/* ステップと goto の両方を持つ選択肢 */}
steps:
- type: pass
name: pass2
goto: final
- type: pass
name: pass3
- type: pass
name: final 条件式
条件式は、次の演算と変数で構成されます。
比較演算:
>>=<<===!=。これらは、文字列と数値に適用できます。論理演算:
||&&。文字列定数: 文字列定数は、二重引用符(")またはグレイブアクセント(`)で囲みます。例: "foobar" または `foobar`。
数値定数:
112.5。ブール定数:
true{/* 真 */} またはfalse{/* 偽 */}。接頭辞:
!-。含む:
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 {/* 真 */} |