すべてのプロダクト
Search
ドキュメントセンター

CloudFlow:選択ステップ

最終更新日:Jan 12, 2025

このトピックでは、選択ステップの基本と例、および関連する条件式について説明します。

パラメーター

選択ステップでは、プログラミング言語の 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"
  }
}           

条件式

結果

$.a==1

true {/* 真 */}

$.a==2

false {/* 偽 */}

$.a>0

true {/* 真 */}

0<$.a

true {/* 真 */}

$.a>=1

true {/* 真 */}

$.a!=2

true {/* 真 */}

$.b.b1

true {/* 真 */}

$.b.b1==true

true {/* 真 */}

$.b.b1==false

false {/* 偽 */}

$.b.b2=="ready"

true {/* 真 */}

$.b.b2==`ready`

true {/* 真 */}

$.b.b2=="inprogress"

false {/* 偽 */}

$.a==1 && $.b.b1

true {/* 真 */}

$.a==1 || $.b.b1

true {/* 真 */}

$.a==2 && $.b.b1

false {/* 偽 */}

$.a==2 || $.b.b1

true {/* 真 */}

$.c[0]==1

true {/* 真 */}

$.c[0]==$.a

true {/* 真 */}