Fungsi eksperimental
Alur Kerja,
experimental.executions.map
, memulai eksekusi alur kerja untuk setiap
argumen yang sesuai, dan menunggu semua eksekusi selesai, menampilkan
daftar yang setiap elemennya adalah hasil dari eksekusi.
Jika menggunakan experimental.executions.map
untuk mendukung pekerjaan paralel, Anda dapat
memigrasikan alur kerja untuk menggunakan langkah paralel, yang menjalankan
loop for
biasa secara paralel.
Langkah parallel
menentukan bagian dari alur kerja Anda tempat dua langkah atau lebih dapat
dijalankan secara serentak. Langkah parallel
menunggu hingga semua langkah yang ditentukan dalam
langkah tersebut selesai atau terganggu oleh pengecualian yang tidak ditangani; eksekusi kemudian
lanjut. Seperti
experimental.executions.map
, urutan eksekusi tidak dijamin. Untuk
mengetahui detailnya, lihat halaman referensi sintaksis untuk
langkah paralel.
Perhatikan bahwa penggunaan experimental.executions.map
atau workflows.executions.run
memerlukan kuota eksekusi serentak tambahan.
Namun, saat menggunakan langkah paralel dengan panggilan ke konektor yang disisipkan (lihat contoh konektor terjemahan), tidak diperlukan kuota eksekusi tambahan.
Contoh berikut dimaksudkan untuk membantu Anda saat mengganti penggunaan
experimental.executions.map
dengan langkah parallel
.
Alur kerja terjemahan
Dengan bahasa sumber dan target, alur kerja berikut, yang bernama translate
, menggunakan konektor Cloud Translation untuk menerjemahkan beberapa teks input dan menampilkan hasilnya. Perhatikan bahwa Cloud Translation API
harus diaktifkan.
YAML
main: params: [args] steps: - basic_translate: call: googleapis.translate.v2.translations.translate args: body: q: ${args.text} target: ${args.target} format: "text" source: ${args.source} result: r - return_step: return: ${r}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "basic_translate": { "call": "googleapis.translate.v2.translations.translate", "args": { "body": { "q": "${args.text}", "target": "${args.target}", "format": "text", "source": "${args.source}" } }, "result": "r" } }, { "return_step": { "return": "${r}" } } ] } }
Input untuk contoh sebelumnya:
{ "text": "Bonjour", "target": "en", "source": "fr" }
Output akan terlihat seperti berikut:
{ "data": { "translations": [ { "translatedText": "Hello" } ] } }
Alur kerja terjemahan batch menggunakan experimental.executions.map
Alur kerja berikut menerjemahkan sekumpulan teks. Untuk setiap input,
experimental.executions.map
akan menjalankan alur kerja translate
yang dibuat
sebelumnya.
YAML
main: steps: - init: assign: - workflow_id: "translate" - texts_to_translate: - text: "hello world!" source: "en" target: "fr" - text: "你好 世界!" source: "zh-CN" target: "en" - text: "No hablo español!" source: "es" target: "en" - translate_texts: call: experimental.executions.map args: workflow_id: ${workflow_id} arguments: ${texts_to_translate} result: translated - return: return: ${translated}
JSON
{ "main": { "steps": [ { "init": { "assign": [ { "workflow_id": "translate" }, { "texts_to_translate": [ { "text": "hello world!", "source": "en", "target": "fr" }, { "text": "你好 世界!", "source": "zh-CN", "target": "en" }, { "text": "No hablo español!", "source": "es", "target": "en" } ] } ] } }, { "translate_texts": { "call": "experimental.executions.map", "args": { "workflow_id": "${workflow_id}", "arguments": "${texts_to_translate}" }, "result": "translated" } }, { "return": { "return": "${translated}" } } ] } }
Output akan terlihat seperti berikut:
[ { "data": { "translations": [ { "translatedText": "Bonjour le monde!" } ] } }, { "data": { "translations": [ { "translatedText": "Hello world!" } ] } }, { "data": { "translations": [ { "translatedText": "I don't speak Spanish!" } ] } } ]
Mengganti experimental.executions.map
dengan loop for:in
Daripada menggunakan fungsi eksperimental, Anda dapat menggunakan loop for:in
paralel
untuk menerjemahkan teks. Pada contoh berikut, alur kerja sekunder,
translate
, dapat digunakan apa adanya dan outputnya tidak akan berubah. Anda juga
memiliki opsi untuk memulai eksekusi alur kerja sekunder lainnya di
cabang paralel.
Variabel bersama,
translated
, digunakan untuk menyimpan hasil dan diisi dengan string kosong
untuk mengaktifkan pengindeksan array statis. Jika pengurutan tidak diperlukan, Anda dapat menggunakan
list.concat
untuk menambahkan
hasil. Semua tugas dalam langkah paralel bersifat atomik.
YAML
JSON
Mengganti experimental.executions.map
dengan loop for:range
Daripada menggunakan fungsi eksperimental, Anda dapat menggunakan loop for:range
paralel untuk menerjemahkan teks. Dengan menggunakan loop for:range
, Anda dapat menentukan awal dan akhir rentang iterasi. Output tidak boleh diubah.
YAML
JSON
Menyisipkan kode sumber alur kerja
Jika alur kerja sekunder relatif singkat, Anda dapat menyertakannya
langsung dalam alur kerja utama agar lebih mudah dibaca. Misalnya, dalam
alur kerja berikut, kode sumber untuk alur kerja translate
telah
disisipkan.