Kendali
Lima kotak mengatur aliran eksekusi sebuah skenario.
Sebagai pengingat: setiap kotak juga memiliki port implisit in, error, dan
done — lihat Port dan sambungan.
Input / Param (masukan / parameter)
Section titled “Input / Param (masukan / parameter)”Mendeklarasikan parameter skenario.
| Masukan | tidak ada |
| Keluaran | value — sebuah objek tunggal { nama: nilai, … } |
| Konfigurasi | name (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 permintaannyaOutput / Return (keluaran / hasil)
Section titled “Output / Return (keluaran / hasil)”Mengekspos sebuah hasil kepada pemanggil skenarionya.
| Masukan | value |
| Keluaran | tidak ada — ini sebuah muara: tanpa error maupun done |
| Konfigurasi | name |
Sebuah skenario yang dipanggil oleh aksi Jalankan skenario membuat setiap
keluarannya tersedia di port output:<nama> milik pemanggilnya.
If (jika)
Section titled “If (jika)”Percabangan dua arah.
| Masukan | left, right |
| Keluaran | then, else |
| Konfigurasi | operator: 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.
Switch (percabangan N-arah)
Section titled “Switch (percabangan N-arah)”Percabangan dengan N jalan keluar.
| Masukan | on |
| Keluaran | satu port case-<id> per kasus yang dideklarasikan, ditambah default |
| Konfigurasi | cases: 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.
Retry (coba lagi)
Section titled “Retry (coba lagi)”Batas pemulihan dari galat.
| Masukan | maxAttempts, delay |
| Keluaran | attempt (setiap percobaan), exhausted (percobaan habis) |
| Konfigurasi | lihat di bawah |
| Kolom | Bawaan | Peran |
|---|---|---|
maxAttempts | 3 | Jumlah maksimum percobaan |
backoff | fixed | fixed, linear, atau exponential |
delay + delayUnit | — | Jeda dasar (ms, s, min) |
factor | 2 | Faktor pertumbuhan dalam mode eksponensial |
maxDelay + maxDelayUnit | — | Batas atas jedanya |
retryOnError | true | Coba lagi ketika terjadi galat |
retryOnFailure | false | Coba lagi ketika terjadi kegagalan bisnis |
retryOnStatus | — | Daftar 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”