Secara default, Map states beroperasi dalam mode inline. Mode ini digunakan untuk memproses data secara batch dan menyederhanakan transformasi data serta pemrosesan. Mode ini berfokus pada satu node dan cocok untuk skenario di mana setiap elemen dalam koleksi memerlukan pemrosesan.
Ikhtisar
Map state digunakan untuk melintasi parameter bertipe array dalam input dan mengeksekusi Processor states secara paralel untuk semua elemen dalam array. Map state mirip dengan pernyataan foreach dalam bahasa pemrograman, namun iterasi dalam Map dieksekusi secara paralel.
Ketika Map state dijalankan, Processor states dari semua elemen dalam parameter input dieksekusi secara bersamaan. Secara default, sebuah map[string]any output yang berisi hasil dari semua cabang dikembalikan setelah semua cabang selesai diproses. Sistem kemudian menggunakan konstruktor output untuk memproses hasil lebih lanjut.
Tabel berikut menjelaskan bidang-bidang dalam mode inline.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
Nama | string | Ya | Nama dari state. | my-state-name |
Deskripsi | string | Tidak | Deskripsi dari state. | jelaskan di sini |
Tipe | string | Ya | Tipe dari state. | Map |
InputConstructor | map[string]any | Tidak | Konstruktor input. | Lihat Inputs and outputs. |
ItemsPath | string | Ya | Ekspresi yang digunakan untuk mengekstrak array dalam input. | Lihat ItemsPath. |
Processor | Processor | Ya | Pemroses iterasi. | Lihat Processor. |
OutputConstructor | map[string]any | Tidak | Konstruktor output. | Lihat State OutputConstructor. |
Next | string | Tidak | State berikutnya yang dieksekusi setelah state saat ini selesai. Jika nilai field End adalah true, Anda tidak perlu menentukan field ini. | my-next-state |
End | bool | Tidak | Menentukan apakah state ini adalah state terminal dari ruang lingkup saat ini. | true |
Retry | Retry | Tidak | Kebijakan ulang kesalahan. | Lihat Penanganan kesalahan. |
Catch | Catch | Tidak | Kebijakan tangkap kesalahan. | Lihat Penanganan kesalahan. |
MaxConcuccency | int | Tidak | Tingkat konkurensi maksimum. | 28 |
Bidang penting untuk mode inline
ItemsPath
Ekspresi yang digunakan untuk mengekstrak array dalam input. Jika array JSON dikembalikan setelah ekspresi ItemsPath dieksekusi, array tersebut akan diulang. Setiap elemen dalam array diteruskan ke ItemProcessor untuk diproses. Anda dapat menggunakan variabel ekspresi $Context dan $Input, seperti yang ditunjukkan dalam contoh berikut:
$Input.FieldAProcessor
Pemroses iterasi. Field ini mencakup dua field yang dijelaskan dalam tabel berikut.
Bidang | Tipe | Diperlukan | Deskripsi | Contoh |
States | array | Ya | Array dari states. | |
StartAt | string | Ya | State tempat eksekusi alur kerja dimulai. | tugas awal saya |
MaxConcuccency
Jumlah maksimum sub-alur yang berjalan secara bersamaan. Nilai maksimum untuk field ini adalah 40.
Contoh kode
Contoh alur berikut mendefinisikan Map state. MapProcessor mencakup state Pass.
Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Map1
States:
- Type: Map
Name: Map1
End: true
InputConstructor:
FieldA:
- a : b
- c : d
- e : f
ItemsPath: $Input.FieldA
Processor:
StartAt: Pass1
States:
- Type: Pass
Name: Pass1
End: trueContoh kode berikut memberikan ilustrasi hasil konstruksi input dari alur.
{
"FieldA": [
{
"a": "b"
},
{
"c": "d"
},
{
"e": "f"
}
]
}Untuk Map, sistem menggabungkan output dari semua pemroses iterasi. Secara default, kata kunci Items digunakan sebagai kunci dan hasil gabungan sebagai nilai. Contoh kode berikut memberikan ilustrasi output dari Map1. Ini juga merupakan output akhir setelah alur dieksekusi.
{
"Items": [
{
"a": "b"
},
{
"c": "d"
},
{
"e": "f"
}
]
}