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

CloudFlow:Choice

最終更新日:Nov 09, 2025

A Choice ステートは、条件ロジックに基づいてフローを異なるブランチに誘導します。このトピックでは、Choice ステートの基本的な概念を説明し、使用例を示し、フロー制御に条件式を使用する方法を説明します。

概要

Choice ステートは、指定された条件に基づいて異なるステートを実行するフロー内のノードです。複数の選択肢とデフォルトオプションが含まれています。各選択肢には、条件式 (Condition) とトランジション命令 (Next) があります。プログラミング言語の switch-case 文と同様に、Choice ステートは条件式を使用してフローの実行パスを決定します。

フローが選択肢の状態に進むと、システムは選択肢ブランチの条件式が定義された順序で True を返すかどうかを評価します。

  • 選択肢の条件式が True を返す場合、フローはその選択肢に定義されたステートとトランジションを実行します。

  • 条件式が True を返さない場合、フローはデフォルトオプションで定義されたステートとトランジションを実行します。

次の表に、選択肢の状態に含まれる属性を示します。

属性

タイプ

必須

説明

名前

string

はい

状態の名前。

my state

説明

string

いいえ

状態の説明。

ここに記述します

タイプ

string

はい

状態のタイプ。

Choice

InputConstructor

map[string]any

いいえ

入力コンストラクター。

詳細については、「入力と出力」をご参照ください。

デフォルト

string

はい

デフォルトブランチ。

my next task

ブランチ

ChoiceBranch

はい

選択肢ブランチ。

ChoiceBranch をご参照ください。

ChoiceBranch

属性

タイプ

必須

説明

条件

string

はい

条件式。詳細については、「式の例」をご参照ください。

$Input.status=="ready"

次へ

string

はい

条件が満たされた場合にワークフローが遷移する次の状態の名前。

my next task

重要

選択肢の状態では、[End] 属性と [Next] 属性はサポートされていません。選択肢の状態の [デフォルト] 属性は、選択肢ブランチの条件が満たされない場合にワークフローがデフォルトで遷移する状態を指定します。 [デフォルト] 属性の機能は、[Next] 属性の機能と同じです。ChoiceBranch には [Next] 属性を含めることができます。

次のサンプルフローには、選択肢の状態が含まれています。

  • 入力 status の値が ready の場合、最初の選択肢の Pass2 ステートが実行されます。

  • 入力 status の値が ready でない場合、デフォルトオプションの Pass1 が実行されます。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Choice
States:
  - Type: Choice
    Name: Choice
    Branches:
      - Condition: $Input.data == "ready"
        Next: Pass1
    Default: Pass2
  - Type: Pass
    Name: Pass2
    End: true
  - Type: Pass
    Name: Pass1
    End: true

条件式

システムでサポートされている条件式は、次の演算と変数で構成されています。式によって返されるブール値に基づいて、条件式で指定された条件が満たされているかどうかを判断できます。

  • 比較操作: >>=<<===、および !=。これらの操作は、文字列と数値に適用されます。

  • 論理操作: || および &&

  • 文字列定数: 文字列定数は、二重引用符(")またはグレイブアクセント(`)で囲みます。例: "foobar" または `foobar`。

  • 数値定数: 1 および 12.5

  • ブール定数: true および false

  • プレフィックス: ! および -

  • 包含: in。これは、配列に値が含まれているか、オブジェクトにキーが含まれているかを判断するために使用されます。

式の例

次の表は、サンプルステート入力 $Input に基づくさまざまな条件式の結果を示しています。条件式では $Context 変数と $Input 変数を使用できます。詳細については、「データ受け渡し」をご参照ください。

{
	"a": 1,
	"b": {
		"b1": true,
		"b2": "ready"
	},
	"c": [1, 2, 3],
	"d": 1,
	"e": 1,
	"f": {
		"f1": false,
		"f2": "inprogress"
	}
}

条件式

実行結果

$Input.a==1

true

$Input.a==2

false

$Input.a>0

true

0<$Input.a

true

$Input.a>=1

true

$Input.a!=2

true

$Input.b.b1

true

$Input.b.b1==true

true

$Input.b.b1==false

false

$Input.b.b2=="ready"

true

$Input.b.b2=="inprogress"

false

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

true

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

false

$Input.c[0]==1

true

$Input.c[0]==$Input.a

true

"f1" in $Input.f

true

"f3" in $Input.f

false

1 in $Input.c

true