Tema ini menjelaskan langkah foreach beserta contoh terkait.
Ikhtisar
Langkah foreach menelusuri parameter bertipe array dalam input dan menjalankan langkah serial untuk setiap elemen dalam array secara paralel. Langkah ini mirip dengan foreach dalam bahasa pemrograman, tetapi iterasinya dijalankan secara paralel.
Setiap iterasi dari langkah foreach sesuai dengan variabel lokal. Dalam langkah foreach, langkah serial untuk setiap elemen dalam parameter input dieksekusi secara paralel. Langkah serial ini mengubah variabel lokal yang sesuai dengan iterasinya. Setelah semua iterasi selesai, pemetaan output dapat digunakan untuk mengonversi array variabel lokal menjadi output dari langkah foreach.
Langkah foreach mencakup atribut berikut:
- tipe: Wajib. Jenis langkah. Nilai foreach menunjukkan bahwa langkah tersebut adalah langkah foreach.
- nama: Wajib. Nama langkah.
- iterationMapping: Wajib. Pemetaan iteratif.
- collection: Wajib. Parameter input yang berfungsi sebagai koleksi untuk langkah foreach.
- item: Wajib. Nama elemen saat ini yang dimasukkan ke dalam input iterasi.
- index: Opsional. Nama posisi saat ini yang dimasukkan ke dalam input iterasi.
- langkah: Wajib. Langkah serial.
- akhir: Opsional. Menentukan apakah akan melanjutkan ke langkah-langkah berikutnya setelah langkah saat ini selesai.
- inputMappings: Opsional. Pemetaan input.
- outputMappings: Opsional. Pemetaan output. Dalam langkah ini,
$localadalah sebuah array. Setiap elemen dalam array adalah objek JSON yang mencatat hasil dari setiap iterasi.Catatan Jika tidak ada pemetaan output yang ditentukan, langkah ini tidak memiliki output secara default.
Contoh
Alur sampel berikut mendefinisikan langkah foreach yang berisi langkah tugas.
version: v1
type: flow
steps:
- type: foreach
name: myforeach
iterationMapping:
collection: $.names
item: name
steps:
- type: task
name: toUpperCase
resourceArn: acs:fc:{region}:{account}:services/fnf_test/functions/toUpperCase
outputMappings:
- target: names
source: $local[*].name
- Informasi berikut adalah input alur. Tidak ada pemetaan input yang ditentukan untuk langkah
myforeach. Oleh karena itu, inputnya sama dengan input alur.{ "names": ["a", "b", "c"] } - Tidak ada pemetaan input yang didefinisikan untuk
toUpperCase. Oleh karena itu, inputnya sama dengan input langkah induk. MenurutiterationMapping, sistem memasukkan elemen saat ini (a,b, dancsecara berurutan) sebagai nilai dannamesebagai kunci pada setiap iterasi.{ "name": "a", "names":["a","b","c"] } { "name": "b", "names":["a","b","c"] } { "name": "c", "names":["a","b","c"] } toUpperCasedijalankan tiga kali, dengan output berikut secara berurutan:{ "name": "A" } { "name": "B" } { "name": "C" }- Variabel lokal dari
myforeachadalah sebuah array, dengan nilai berikut:[ { "name": "A" }, { "name": "B" }, { "name": "C" } ] - Informasi berikut adalah output dari
myforeach. Tidak ada pemetaan output atau hasil yang didefinisikan untuk alur. Oleh karena itu, outputnya adalah output akhir alur.{ "names": ["A", "B", "C"] }