Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
SEQUENTIAL_EXECUTOR
Kapan harus digunakan
A SEQUENTIAL_EXECUTOR menjalankan serangkaian fungsi satu per satu, secara berurutan. Setiap langkah dapat menggunakan hasil langkah-langkah sebelumnya.
Gunakan SEQUENTIAL_EXECUTOR ketika logika Anda membutuhkan beberapa langkah yang bergantung pada hasil masing-masing. Kasus penggunaan umum termasuk mengambil data identitas dan kemudian menggunakannya untuk mengambil segmen audiens, menjalankan langkah klasifikasi dan kemudian memanggil layanan eksternal yang berbeda secara kondisional berdasarkan hasilnya, dan membangun URL permintaan iklan yang kompleks dari beberapa sumber data.
Bidang konfigurasi
Sebuah SEQUENTIAL_EXECUTOR fungsi memiliki bidang-bidang berikut:
-
Runtime — Bahasa ekspresi. Setel ini ke
JSONATA. -
FunctionList— Daftar yang diurutkan dari 1 hingga 10 langkah. Setiap langkah menentukan fungsi
FunctionIdyang akan dijalankan. Secara opsional, Anda dapat menambahkanRunConditionekspresi untuk mengontrol apakah langkah berjalan atau dilewati. -
Output — Mendefinisikan nilai yang akan dihasilkan setelah semua langkah selesai. Setiap entri memetakan kunci keluaran (seperti
player_params.envelope) ke ekspresi yang dapat mereferensikan data yang dihasilkan oleh setiap langkah dalam urutan. Jika dihilangkan, semua output dari fungsi individu dalam urutan digunakan. -
TimeoutMilliseconds(wajib) — Waktu maksimum untuk menyelesaikan seluruh urutan. Jika urutan melebihi batas waktu ini, MediaTailor buang semua output dari urutan.
Eksekusi dan aliran data yang diperintahkan
MediaTailor menjalankan setiap langkah dalam urutan dari pertama hingga terakhir. Setelah setiap langkah selesai, nilai yang dihasilkannya digabungkan menjadi serangkaian hasil yang berjalan. Langkah selanjutnya dapat mengakses data sesi asli ditambah semua nilai yang dihasilkan oleh langkah-langkah sebelumnya.
Data sementara adalah mekanisme utama untuk meneruskan data antar langkah. Ketika sebuah fungsi menulis ke temp.* kunci, langkah selanjutnya dapat membaca nilai itu. Parameter pemain dan bidang permintaan iklan yang ditulis oleh langkah sebelumnya juga dapat dilihat oleh langkah selanjutnya.
catatan
Data sementara menerima tipe data apa pun, termasuk objek dan array. Parameter pemain dan bidang permintaan iklan hanya menerima string, angka, boolean, dan null).
Per-step kondisi lari
Setiap langkah dalam urutan memiliki RunCondition bidang opsional. Bidang ini berisi ekspresi yang mengembalikan true ataufalse. MediaTailor mengevaluasi RunCondition ekspresi segera sebelum menjalankan langkah itu.
Jika RunCondition ekspresi mengevaluasifalse, MediaTailor lewati langkah sepenuhnya dan pindah ke langkah berikutnya. Jika RunCondition bidang dihilangkan, langkah selalu berjalan.
{ "FunctionId": "retryFetch", "RunCondition": "{%temp.statusCode = 500%}" }
Mekanisme ini memungkinkan Anda membangun jaringan pipa bersyarat. Misalnya, Anda dapat menjalankan pengambilan identitas di langkah 1, lalu menjalankan pencarian segmen secara kondisional di langkah 2 hanya jika langkah 1 mengembalikan identitas yang valid.
Cara kerja blok output
Blok output pada SEQUENTIAL_EXECUTOR kontrol apa yang dihasilkan urutan setelah semua langkah selesai:
-
Output block present — MediaTailor mengevaluasi ekspresi di blok output terhadap status akumulasi akhir dan hanya menyimpan output tersebut. Setiap output yang dihasilkan oleh langkah-langkah sebelumnya yang tidak direferensikan dalam blok output sekuensial dibuang.
-
Output block absen — MediaTailor menyimpan semua akumulasi output dari semua langkah secara langsung.
Tip
Hilangkan blok output saat Anda ingin setiap output fungsi melewatinya. Tambahkan blok output saat Anda perlu memfilter, mengganti nama, atau mengubah hasil akumulasi sebelum menyimpannya.
Konfigurasi waktu habis
TimeoutMillisecondsBidang menetapkan tenggat waktu untuk seluruh urutan. Batas waktu ini mencakup semua langkah, termasuk panggilan HTTP apa pun yang dilakukan oleh fungsi. Jika urutan melebihi batas waktu, MediaTailor buang semua output dari urutan dan lanjutkan seolah-olah tidak ada fungsi yang dilampirkan.
HTTP_REQUESTFungsi individu masih menghormati RequestTimeoutMilliseconds pengaturan mereka sendiri. Batas waktu urutan bertindak sebagai batas luar yang membatasi total waktu eksekusi.
Contoh: Coba lagi pada kegagalan HTTP
Contoh ini memanggil API identitas dan secara otomatis mencoba ulang jika panggilan pertama mengembalikan kesalahan server. Ini menggunakan dua fungsi HTTP_REQUEST yang diatur oleh SEQUENTIAL_EXECUTOR.
Langkah 1 - Ambil utama (fetchIdentity):
{ "FunctionId": "fetchIdentity", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity.example.com/v1/resolve?ip=' & session.client_ip%}", "Headers": { "Accept": "application/json" }, "RequestTimeoutMilliseconds": 1000, "Output": { "temp.statusCode": "{%response.statusCode%}", "temp.envelope": "{%response.statusCode = 200 ? response.body.envelope : null%}" } } }
Langkah 2 — Coba lagi pada kegagalan (retryIdentity):
{ "FunctionId": "retryIdentity", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity-fallback.example.com/v1/resolve?ip=' & session.client_ip%}", "Headers": { "Accept": "application/json" }, "RequestTimeoutMilliseconds": 1000, "Output": { "temp.statusCode": "{%response.statusCode%}", "temp.envelope": "{%response.statusCode = 200 ? response.body.envelope : null%}" } } }
Urutan (identityWithRetry):
{ "FunctionId": "identityWithRetry", "FunctionType": "SEQUENTIAL_EXECUTOR", "SequentialExecutorConfiguration": { "Runtime": "JSONATA", "TimeoutMilliseconds": 2000, "FunctionList": [ { "FunctionId": "fetchIdentity" }, { "FunctionId": "retryIdentity", "RunCondition": "{%temp.statusCode >= 500%}" } ], "Output": { "player_params.envelope": "{%temp.envelope%}" } } }
Cara kerjanya:
-
fetchIdentitymemanggil API identitas dan menulis kode status dan amplop ketemp.*. -
Jika kode status 500 atau lebih tinggi,
RunConditionpada langkah 2 mengevaluasitruedanretryIdentityberjalan. Ini menimpatemp.statusCodedantemp.envelopedengan respons coba lagi. -
Jika panggilan pertama berhasil, langkah 2 dilewati.
-
Blok output urutan menulis
temp.envelopekeplayer_params.envelope.