全部产品
Search
文档中心

CloudFlow:Choice

更新时间:Nov 11, 2025

Status Choice mengarahkan alur ke cabang berbeda berdasarkan logika kondisional. Topik ini menjelaskan konsep dasar status Choice, memberikan contoh penggunaannya, serta cara menggunakan ekspresi kondisional untuk mengontrol alur.

Ikhtisar

Status Choice adalah sebuah node dalam alur yang mengeksekusi status berbeda berdasarkan kondisi tertentu. Status ini berisi beberapa pilihan dan satu opsi default. Setiap pilihan memiliki ekspresi kondisional (Condition) dan instruksi transisi (Next). Mirip dengan pernyataan switch-case dalam bahasa pemrograman, status Choice menggunakan ekspresi kondisional untuk menentukan jalur eksekusi alur.

Ketika alur mencapai Negara Pilihan, sistem mengevaluasi apakah ekspresi kondisional dari cabang-cabang pilihan mengembalikan nilai True sesuai urutan yang ditentukan.

  • Jika ekspresi kondisional suatu pilihan menghasilkan nilai True, alur akan mengeksekusi status dan transisi yang didefinisikan untuk pilihan tersebut.

  • Jika tidak ada ekspresi kondisional yang menghasilkan nilai True, alur akan mengeksekusi status dan transisi yang didefinisikan dalam opsi default.

Tabel berikut menjelaskan atribut yang dimiliki oleh Negara Pilihan.

Atribut

Tipe

Diperlukan

Deskripsi

Contoh

Nama

string

Ya

Nama dari negara tersebut.

negara saya

Deskripsi

string

Tidak

Deskripsi dari negara tersebut.

jelaskan di sini

Tipe

string

Ya

Tipe dari negara tersebut.

Pilihan

InputConstructor

map[string]any

Tidak

Konstruktor input.

Untuk informasi selengkapnya, lihat Inputs and Outputs.

Default

string

Ya

Cabang default.

tugas berikutnya saya

Cabang

ChoiceBranch

Ya

Cabang-cabang pilihan.

Lihat ChoiceBranch.

ChoiceBranch

Atribut

Tipe

Diperlukan

Deskripsi

Contoh

Kondisi

string

Ya

Ekspresi kondisional. Untuk informasi selengkapnya, lihat Expression examples.

$Input.status=="ready"

Next

string

Ya

Nama status berikutnya tempat Alur kerja bertransisi jika kondisi terpenuhi.

tugas berikutnya saya

Penting

Negara Pilihan tidak mendukung atribut End dan Next. Atribut Default dari Negara Pilihan menentukan negara yang dialihkan secara default ketika tidak ada kondisi dalam cabang-cabang Pilihan yang terpenuhi. Fungsinya sama dengan atribut Next. ChoiceBranch dapat berisi atribut Next.

Contoh

Alur sampel berikut mencakup Negara Pilihan.

  • Jika nilai input status adalah ready, status Pass2 pada pilihan pertama akan dieksekusi.

  • Jika nilai input status bukan ready, opsi default Pass1 akan dieksekusi.

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

Ekspresi kondisional

Ekspresi kondisional yang didukung oleh sistem terdiri dari operasi dan variabel berikut. Anda dapat menentukan apakah kondisi yang ditentukan oleh ekspresi kondisional terpenuhi berdasarkan nilai Boolean yang dikembalikan oleh ekspresi.

  • Operasi perbandingan: >, >=, <, <=, ==, dan !=. Operasi ini berlaku untuk string dan angka.

  • Operasi logika: || dan &&.

  • Konstanta string: Konstanta string diapit oleh tanda kutip ganda (") atau aksen grave (`). Contoh: "foobar" atau `foobar`.

  • Konstanta numerik: 1 dan 12.5.

  • Konstanta Boolean: true dan false.

  • Awalan: ! dan -.

  • Keanggotaan: in. Digunakan untuk menentukan apakah sebuah array berisi suatu nilai atau objek berisi suatu kunci.

Contoh ekspresi

Tabel berikut menunjukkan hasil berbagai ekspresi kondisional berdasarkan input status contoh $Input. Anda dapat menggunakan variabel $Context dan $Input dalam ekspresi kondisional. Untuk informasi selengkapnya, lihat Data passing.

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

Ekspresi kondisional

Hasil eksekusi

$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