Parameter komponen playbook mendukung format seperti konstanta, variabel, ekspresi, dan fungsi. Pemrosesan parameter mencakup ekstraksi, deduplikasi, eksekusi loop, serta langkah-langkah lainnya.
Kategori parameter
Berdasarkan fungsinya, parameter dibagi menjadi parameter input playbook (parameter input node awal), parameter output playbook (parameter output node awal), parameter input komponen, dan parameter output komponen.
Berdasarkan tipenya, parameter dibagi menjadi parameter sistem dan parameter komponen.
CatatanSelama eksekusi komponen, Anda dapat mengakses parameter default sistem dari node mana pun, tetapi tidak parameter komponen.
Parameter input dan output
Parameter input komponen dapat didefinisikan secara kustom atau berupa output dari node hulu. Jika Anda memilih output node hulu, node tersebut harus merupakan node sebelumnya yang dapat dicapai pada jalur orkestrasi.
Dalam skenario multi-jalur, pastikan bahwa nama node bersifat unik secara global.
Mengambil Node B dalam diagram berikut sebagai contoh: Node ini dapat mengakses output dari Node Hulu A dan parameter input playbook. Node ini tidak dapat mengakses output dari Node D karena mereka tidak berada di cabang yang sama. Node ini juga tidak dapat mengakses output dari Node C karena Node C bukan node sebelumnya dari Node B.
Parameter sistem
Parameter sistem dalam playbook (parameter default node awal)
Parameter default sistem dapat diakses dari node mana pun menggunakan ekspresi dalam tabel berikut. "event" dapat dianggap sebagai nama node awal. Anda dapat mengakses parameter sistem playbook menggunakan format ${event.nama_parameter}.
Parameter | Tipe data | Ekspresi | Deskripsi |
_tenant_id | String | ${event._tenant_id} | ID akun Alibaba Cloud yang memanggil playbook. |
_domain_id | String | ${event._domain_id} | Status peran pengguna yang masuk.
|
_trigger_user | String | ${event._trigger_user} | ID akun Alibaba Cloud yang memicu playbook. Jika Pengguna RAM digunakan, ID Pengguna RAM akan dikembalikan. |
_region_id | String | ${event._region_id} | ID wilayah. |
_req_uuid | String | ${event._req_uuid} | Pengenal unik untuk tugas eksekusi playbook saat ini. |
parentTaskUuid | String | ${event.parentTaskUuid} | _req_uuid dari playbook induk. Parameter ini ada ketika playbook anak dipanggil. |
parentTaskName | String | ${event.parentTaskName} | UUID dari playbook induk. Parameter ini ada ketika playbook anak dipanggil. |
Parameter sistem dalam parameter output komponen
Hasil output dari komponen apa pun mencakup parameter sistem berikut. Parameter kustom dienkapsulasi dalam datalist. Anda dapat menggunakan ${nama_node.datalist.*} untuk mendapatkan semua parameter output.
Parameter | Tipe data | Deskripsi |
datalist | JSONArray | Parameter output setelah komponen dieksekusi. Penting Parameter output kustom dari komponen juga disimpan dalam datalist. |
total_data_successful | Int | Jumlah data yang berhasil diproses selama eksekusi komponen. |
total_data | Int | Jumlah data yang diproses selama eksekusi. |
total_data_with_dup | Int | Jumlah data yang berhasil diproses setelah deduplikasi selama eksekusi. |
total_exe_successful | Int | Jumlah kali komponen saat ini berhasil dieksekusi. |
total_exe | Int | Jumlah kali komponen saat ini telah dieksekusi. |
status | Boolean | Status keberhasilan eksekusi. Nilai valid: true dan false. |
messageForUser | String | Pesan kesalahan yang perlu diperhatikan pengguna saat eksekusi gagal. |
message | String | Pesan kesalahan yang dikembalikan oleh sistem saat eksekusi gagal. |
failed_exe_detail | String | Informasi kesalahan detail saat eksekusi gagal. |
Format parameter
Parameter mendukung tiga format dasar: konstanta, variabel, dan ekspresi. Mereka juga mendukung kombinasi dari ketiga format ini dan nesting yang lebih kompleks.
Format | Deskripsi | Contoh |
Konstanta | String tetap | Ali. |
Variabel | Mengekstrak nilai dari parameter input playbook dan parameter output node sebelumnya | ${event.aliuid}, yang mendapatkan aliuid dari parameter input playbook. |
Ekspresi | Menggunakan ekspresi tersemat dan fungsi untuk menghasilkan nilai. Formatnya adalah <%=ekspresi|fungsi%>. Untuk fungsi yang didukung, lihat Fungsi bawaan dalam ekspresi. | Ekspresi: Hanya sintaks Java yang didukung, seperti <%=2*60*60%>. Fungsi: <%=currentTime()%>. |
Kombinasi | Konstanta_Variabel_Ekspresi | Contoh kombinasi: Ali_${event.aliuid}_<%=currentTime()%>_<%=2*60*60%>. Saat komponen dieksekusi, variabel dan ekspresi diurai dan diganti dengan nilai-nilai yang sesuai: Ali_aliuid_waktu saat ini_7200. Contoh nesting: (Ekspresi dapat menyematkan variabel) <%=formatTimeStamp(secondstamp_add(${DateTime:event.datalist.*.gmt_create},-600L),"yyyy-MM-dd'T'HH:mm:ss.SSSXXX")%>, yang mendapatkan nilai gmt_create dari ${DateTime:event.datalist.*.gmt_create}, mengurangi 600, dan akhirnya memformatnya sebagai tanggal. |
Fungsi bawaan dalam ekspresi
Fungsi | Deskripsi | Contoh | Contoh output |
currentTime | Mengembalikan timestamp saat ini. | <%=currentTime()%> | 2025-06-05 10:30:00 |
secondstamp_add | Menambahkan detik ke timestamp saat ini. | <%=secondstamp_add(currentTime(),300L)%> | 2025-06-05 10:30:09 |
formatTimeStamp | Memformat timestamp input sesuai dengan format yang ditentukan. | <%=formatTimeStamp(currentTime(),"yyyyMMdd")%> | 20250605 |
timestampToseconds | Menambahkan detik ke timestamp saat ini dan mengonversinya ke detik untuk output. | <%=timestampToseconds(currentTime(),300L)%> | 1749099848 |
splitStr | Memisahkan string input menjadi daftar berdasarkan splitStr. | <%=splitStr("test,value",",")%> | [test, value] |
parseTimeMs | Mengonversi string format waktu ke milidetik. | <%=parseTimeMs("2025-06-05 10:30:32","yyyy-MM-ddHH:mm:ss")%> | 1749090632000 |
currentTimeToMs | Mengonversi timestamp saat ini ke milidetik. | <%=currentTimeToMs()%> | 1749091369688 |
currentHourToMs | Mengonversi timestamp jam saat ini ke milidetik, dihitung dari menit 0 dan detik 0 dari jam saat ini. | <%=currentHourToMs()%> | 1749088800000 |
currentDayToMs | Mengonversi timestamp hari saat ini ke milidetik, dihitung dari jam 0, menit 0, dan detik 0 dari hari saat ini. | <%=currentDayToMs()%> | 1749052800000 |
parseTimeMsWDefault | Menguraikan timestamp menjadi milidetik dengan nilai default yang didukung. Jika parameter 1 kosong, parameter 2 digunakan sebagai nilai default. | <%=parseTimeMsWDefault("2025-06-05 10:30:32",1749091369688L)%> | 1749090632000 |
splitStrToJsonArray | Memisahkan string input menjadi JSONArray berdasarkan splitStr. | <%=splitStrToJsonArray("test,value",",")%> | ["test","value"] |
concatListStr | Menggabungkan string menggunakan konektor. Harus digunakan dengan fungsi splitStr. | <%=concatListStr("|",splitStr("test,value",","))%> | test|value |
substring | Mengekstrak substring. Parameter 1: String untuk diekstrak. Parameter 2: Indeks awal. Parameter 3: Indeks akhir. | <%=substring("012345",0,3)%> | 012 |
remainStrStartEnd | Mempertahankan karakter di luar indeks awal dan akhir. Secara khusus, ia mempertahankan beginSize karakter dari awal inputStr dan endSize karakter dari akhir, menghubungkannya dengan lima garis bawah.
| <%=remainStrStartEnd("012345",2,2)%> | 01_____45 |
toLong | Mengonversi objek ke tipe long. Parameter 1: Nilai input. Parameter 2: Nilai default jika konversi gagal. | <%=toLong("1234",12L)%> | 1234.0 |
toLowerCase | Mengonversi huruf Inggris dalam string menjadi huruf kecil. | <%=toLowerCase("TEST")%> | test |
toUpperCase | Mengonversi huruf Inggris dalam string menjadi huruf besar. | <%=toUpperCase("test")%> | TEST |
toJSONObject | Mengonversi string JSON menjadi objek JSON. | <%=toJSONObject("{\"name\":\"test\",\"age\":12}")%> | {"name":"test","age":12} |
base64encode | Menjalankan pengkodean Base64 pada string. | <%=base64encode("abc")%> | YWJj |
base64decode | Menjalankan dekode Base64 pada string. | <%=base64decode("YWJj")%> | abc |
replace | Mengganti string.
| <%=replace("abc123","abc","aaa")%> | aaa123 |
isNull | Menentukan apakah suatu objek kosong. | <%=isNull("")%> | true |
Parameter variabel
Selama eksekusi komponen playbook, jika Anda ingin mendapatkan parameter dari node sebelumnya dalam alur, Anda dapat menggunakan parameter variabel dalam komponen. Untuk parameter input playbook, gunakan event sebagai nama node. Anda dapat memahaminya sebagai parameter output node awal. Oleh karena itu, jangan menetapkan nama komponen menjadi "event" selama orkestrasi playbook.
Saat ini, hanya mendukung pengambilan data berdasarkan parameter output node.
Parameter input playbook = Parameter output node awal.
Parameter input node saat ini = Parameter output node sebelumnya.
Format sintaksis
Sintaks untuk mendapatkan parameter output node adalah ${nama_node.path_parameter}, di mana path menggunakan metode jsonpath dan mendukung format JSON dengan jumlah lapisan apa pun.
Untuk format JSONObject, gunakan "." untuk langsung mendapatkan data dari node tingkat lebih rendah. Untuk format JSONArray, * mewakili mendapatkan semua data, dan indeks numerik juga didukung untuk mendapatkan satu data. Contoh berikut menunjukkan cara mendapatkan parameter output setelah eksekusi:
Tipe
Sintaks
Deskripsi
Mendapatkan parameter dalam JSON
${nama_node.datalist.*.parameter1.parameter2}
CatatanSintaks parameter output node awal: ${event.parameter1.parameter2}.
Mendapatkan data parameter2 di bawah parameter1.
CatatanNilai parameter1 harus dalam format JSONObject.
Mendapatkan semua data dalam array JSON
${nama_node.datalist.*.parameter1.*.parameter2}
CatatanSintaks parameter output node awal: ${event.parameter1.*.parameter2}.
Mendapatkan data parameter2 dari semua JSONObject di bawah parameter1.
CatatanNilai parameter1 harus dalam format JSONArray.
Mendapatkan satu data dalam array JSON
${nama_node.datalist.*.parameter1.[0].parameter2}
CatatanSintaks parameter output node awal: ${event.parameter1.[0].parameter2}.
Mendapatkan data parameter2 dari JSONObject pertama di bawah parameter1
CatatanNilai parameter1 harus dalam format JSONArray.
Selain menulis aturan sintaks secara manual, sistem juga mendukung pembuatan sintaks yang sesuai dengan memilih parameter dari daftar dropdown di kotak input, yang direkomendasikan setelah debugging selesai. Seperti ditunjukkan pada gambar berikut:

Mendapatkan parameter variabel
Menggunakan node1 sebagai contoh, parameter output-nya adalah sebagai berikut:
{
"datalist": [
{
"person": {
"weight": "120",
"age": "12"
}
},
{
"person": {
"weight": "121",
"age": "13"
}
}
],
"total_data_successful": 2,
"total_data": 2,
"total_exe_successful": 2,
"total_exe": 2,
"total_data_with_dup": 2,
"status": true
}Sintaks | Deskripsi |
${event._req_uuid} | Mendapatkan nilai parameter sistem _req_uuid dari node awal (parameter input). |
${event.parentTaskUuid} | Mendapatkan _req_uuid dari playbook induk dalam playbook anak (jika playbook induk dipanggil). |
${node1.total_data_successful} | Mendapatkan jumlah item data yang berhasil dieksekusi dari node1. Nilai output: 2. |
${node1.datalist.*.person.age} | Mendapatkan semua data usia person di bawah datalist dari node1. Nilai output: {12,13}. |
${node1.datalist.[0].person.age} | Mendapatkan data usia person dari item pertama di bawah datalist dari node1. Nilai output: 12. |
Konversi tipe data parameter
Selama eksekusi playbook, data diproses sebagai string dalam sebagian besar skenario. Ketika tipe data tidak memenuhi persyaratan selama eksekusi playbook, Anda dapat mengonversi tipe data dari tipe sumber ke tipe target.
Formatnya adalah ${tipe_data:data}. Tabel berikut mencantumkan konversi tipe data yang didukung:
Tipe Data | Deskripsi | Tipe Sumber yang Didukung |
Boolean | Mengonversi ke tipe Boolean. Nilai valid: true dan false. |
|
Long | Mengonversi ke tipe Long. |
|
Int | Mengonversi ke tipe Int. | |
Double | Mengonversi ke tipe Double. | |
String | Mengonversi ke tipe String. | Semua tipe didukung untuk konversi. |
DateTime | Mengonversi ke tipe tanggal. |
|
JSONObject | Mengekstrak kunci dan nilai dari JSONObject untuk membentuk JSONObject baru. Digunakan untuk mengemas data multi-kolom dalam format {}. Format output: {"fieldname":"fieldValue",...}. | Hanya tipe JSONObject yang didukung. |
JSONArray | Mengekstrak kunci dan nilai dari JSONObject untuk membentuk JSONArray. Mengemas data multi-baris dan multi-kolom dalam format [{}]. Data dikeluarkan sebagai data single-baris dan single-kolom. | Hanya tipe JSONObject yang didukung |
JSONObjectStr | Mengonversi JSONObject menjadi string. | Tipe JSONObject. |
JSONArrayStr | Mengonversi JSONArray menjadi string. | Tipe JSONArray. |
Contoh:
Contoh JSONObject: Parameter input playbook: {"src_ip":"127.0.0.1","dst_ip":"127.0.0.2","msg":"hello"}.
${JSONObject:event}: Mengeluarkan seluruh event sebagai string JSON lengkap.
${JSONObject:event.src_ip}: Membuat JSON single-baris, single-kolom dari src_ip dalam event. Hasil: {"src_ip":"127.0.0.1"}.
${JSONObject:event.src_ip|msg}: Membuat string JSON single-baris, single-kolom dari bidang src_ip dan msg dalam event. Hasil: {"src_ip":"127.0.0.1","msg":"hello"}.
${JSONArray:event}: Mengeluarkan seluruh event sebagai JSONArray lengkap.
${JSONArray:event.src_ip}: Membuat JSONArray single-baris, single-kolom dari src_ip dalam event. Hasil: [{"src_ip":"127.22.22.1"}].
${JSONArray:event.src_ip|msg}: Membuat JSONArray single-baris, single-kolom dari bidang src_ip dan msg dalam event. Hasil: [{"src_ip":"127.0.0.1","msg":"hello"}].
Contoh JSONArray: Parameter input playbook: {"datalist":[{"src_ip":"127.0.0.1","dst_ip":"127.1.0.1","msg":"hello"},{"src_ip":"127.1.0.1","dst_ip":"127.1.0.1","msg":"hello"}]}.
${JSONObject:event.datalist.*.src_ip}: Diperluas menjadi beberapa baris, dengan setiap baris menghasilkan: {"src_ip":"127.x.0.1"}.
${JSONObject:event.datalist.*.src_ip|msg}: Diperluas menjadi beberapa baris, dengan setiap baris menjadi string JSON: {"src_ip":"127.x.0.1","msg":"hello"}.
${JSONArray:event.datalist.*.src_ip}: Diperluas menjadi satu baris. Hasil: [{"src_ip":"127.0.0.1"},{"src_ip":"127.1.0.1"}].
${JSONArray:event.datalist.*.src_ip|msg}: Diperluas menjadi satu baris. Hasil: [{"src_ip":"127.0.0.1","msg":"hello"},{"src_ip":"127.1.0.1","msg":"hello"}]
Alur kerja
Ekstraksi Parameter Node: Setelah semua node hulu selesai dieksekusi, data input untuk node saat ini diekstraksi berdasarkan konfigurasi input node tersebut. Proses ekstraksi dijelaskan secara rinci di bawah ini.
Eksekusi Komponen Node: Setelah parameter input untuk node terbentuk dan semua bidang sama, komponen node dieksekusi setelah deduplikasi otomatis.
CatatanKetika suatu aksi menerima beberapa set nilai sebagai parameter, untuk menyederhanakan operasi, aksi tersebut akan dieksekusi beberapa kali.
Sebagai contoh: Untuk menemukan semua server (beberapa) dari aplikasi yang terganggu dan menjalankan aksi "Pembersihan File Jahat" pada masing-masing server tersebut. Pengguna hanya perlu memilih "IP Server" (${node1.datalist.*.ip}) dalam parameter, dan sistem akan secara otomatis menjalankan aksi "Pembersihan File Jahat" pada semua IP. Tidak perlu menulis loop untuk menjalankan aksi pembersihan satu per satu.
Aggregasi Hasil Output dan Deduplikasi: Setelah beberapa kali eksekusi node, hasilnya diagregasi dan secara otomatis dideduplikasi. Untuk deduplikasi, entri dianggap duplikat ketika semua bidang identik. Sebagai contoh:
Sebelum deduplikasi
Setelah deduplikasi
[ { "a": "11", "b": "22" }, { "a": "11", "b": "22" }, { "a": "11", "b": "33" } ][ { "a": "11", "b": "22" }, { "a": "11", "b": "33" } ]
Ekstrak parameter
Proses satu sumber data
Format JSON kompleks dengan kedalaman apa pun dapat dilihat sebagai struktur pohon. Prinsip untuk mengekstrak parameter dari JSON adalah: hubungan saudara pada kedalaman yang sama tetap tidak berubah, node leluhur diperluas, dan node yang bukan saudara atau leluhur menjalani produk Kartesius.
Secara otomatis mengekstrak data dengan kedalaman apa pun. Contoh:

Hubungan saudara pada kedalaman yang sama tetap tidak berubah. Contoh:

Ekspansi leluhur. Contoh:

Untuk node yang bukan saudara atau leluhur, lakukan produk Kartesius. Contoh:

Proses beberapa sumber data
Lakukan produk Kartesius pada hasil pemrosesan dari setiap sumber data individu.
