Lewati ke konten

Kendali

Lima kotak mengatur aliran eksekusi sebuah skenario.

Sebagai pengingat: setiap kotak juga memiliki port implisit in, error, dan done — lihat Port dan sambungan.

Mendeklarasikan parameter skenario.

Masukantidak ada
Keluaranvalue — sebuah objek tunggal { nama: nilai, … }
Konfigurasiname (nama parameternya), valueType (tipenya dan nilai bawaannya)

Nilainya diberikan saat peluncuran, lewat --param nama=nilai di baris perintah, atau diminta secara interaktif jika eksekusinya mencapai kotak itu tanpa nilai yang tersedia.

Masukan “baseUrl” (string) ──► port env milik permintaannya

Mengekspos sebuah hasil kepada pemanggil skenarionya.

Masukanvalue
Keluarantidak ada — ini sebuah muara: tanpa error maupun done
Konfigurasiname

Sebuah skenario yang dipanggil oleh aksi Jalankan skenario membuat setiap keluarannya tersedia di port output:<nama> milik pemanggilnya.

Percabangan dua arah.

Masukanleft, right
Keluaranthen, else
Konfigurasioperator: lt, lte, eq, gte, gt, ne, contains — ditambah left dan right sebagai nilai harfiah

Kiat: jika tidak ada satu pun operan yang tersambung maupun terisi, kotaknya sekadar menguji kebenaran sinyal yang diterima di in. Inilah “kalau kita sampai sejauh ini” tanpa kondisi eksplisit.

Percabangan dengan N jalan keluar.

Masukanon
Keluaransatu port case-<id> per kasus yang dideklarasikan, ditambah default
Konfigurasicases: sebuah daftar { id, value }

Lebih baik daripada rangkaian bertingkat If begitu ada lebih dari dua kemungkinan: setiap kasus menjadi kabel tersendiri, yang mudah dibaca secara visual.

Batas pemulihan dari galat.

MasukanmaxAttempts, delay
Keluaranattempt (setiap percobaan), exhausted (percobaan habis)
Konfigurasilihat di bawah
KolomBawaanPeran
maxAttempts3Jumlah maksimum percobaan
backofffixedfixed, linear, atau exponential
delay + delayUnitJeda dasar (ms, s, min)
factor2Faktor pertumbuhan dalam mode eksponensial
maxDelay + maxDelayUnitBatas atas jedanya
retryOnErrortrueCoba lagi ketika terjadi galat
retryOnFailurefalseCoba lagi ketika terjadi kegagalan bisnis
retryOnStatusDaftar status HTTP, misalnya [429, 503]

Sub-graf yang tersambung ke attempt merupakan lingkup yang diulang. Bila berhasil, keluarannya lewat done. Kotak ini tidak memiliki port error: dialah batasnya.

Retry (3, eksponensial, [429,503])
├─ attempt ──► Permintaan HTTP ──► Assert
└─ exhausted ──► Throw “layanan tidak tersedia”