Tutorial ini menunjukkan cara membuat dan menjalankan alur kerja induk yang menjalankan beberapa alur kerja turunan secara paralel.
Dalam diagram berikut, empat eksekusi paralel alur kerja turunan dipanggil. Hal ini memungkinkan alur kerja induk memproses data di cabang paralel, dan mengurangi waktu eksekusi secara keseluruhan. Alur kerja induk menunggu semua eksekusi alur kerja turunan selesai sebelum menampilkan ringkasan eksekusi yang berhasil dan gagal, sehingga menyederhanakan deteksi error.
Membuat dan men-deploy alur kerja turunan
Alur kerja turunan dapat menerima dan memproses data dari alur kerja induk. Alur kerja turunan menunjukkan hal ini dengan melakukan hal berikut:
- Menerima bilangan bulat sebagai argumen
- Tidur selama 10 detik untuk menyimulasikan beberapa pemrosesan
Menampilkan indikator (berdasarkan apakah bilangan bulat adalah bilangan ganjil atau genap) untuk menyimulasikan keberhasilan atau kegagalan eksekusi alur kerja
Konsol
Di konsol Google Cloud , buka halaman Workflows.
Klik
Buat.Masukkan nama,
workflow-child
, untuk alur kerja baru.Dalam daftar Region, pilih us-central1.
Pilih Service account yang Anda buat sebelumnya.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch workflow-child.yaml
Buka file kode sumber Anda di editor teks dan salin alur kerja berikut ke file.
Deploy alur kerja:
gcloud workflows deploy workflow-child \ --source=workflow-child.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan yang Anda buat sebelumnya.
Membuat dan men-deploy alur kerja induk
Alur kerja induk menjalankan beberapa cabang alur kerja turunan menggunakan
loop for
paralel.
Salin kode sumber untuk definisi alur kerja. Terdiri dari bagian berikut:
Peta digunakan untuk menyimpan hasil eksekusi alur kerja turunan. Untuk mengetahui informasi selengkapnya, lihat Maps.
Loop
for
dijalankan secara paralel untuk memanggil alur kerja turunan. Untuk mengetahui informasi selengkapnya, lihat Langkah paralel dan Iterasi.Alur kerja turunan dipanggil menggunakan konektor. Setiap iterasi alur kerja turunan meneruskan argumen
iteration
. Alur kerja induk menunggu dan menyimpan hasil setiap eksekusi alur kerja turunan. Untuk mengetahui informasi selengkapnya, lihat Konektor Workflows Execution API dan Argumen runtime.Hasil eksekusi akan ditampilkan. Untuk mengetahui informasi selengkapnya, lihat Menyelesaikan eksekusi alur kerja.
Deploy alur kerja:
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik
Buat.Masukkan nama,
workflow-parent
, untuk alur kerja baru.Dalam daftar Region, pilih us-central1.
Pilih Service account yang Anda buat sebelumnya.
Klik Berikutnya.
Di editor alur kerja, tempelkan definisi untuk alur kerja induk.
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch workflow-parent.yaml
Buka file kode sumber Anda di editor teks dan tempel definisi untuk alur kerja induk.
Deploy alur kerja:
gcloud workflows deploy workflow-parent \ --source=workflow-parent.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan yang Anda buat sebelumnya.
Menjalankan alur kerja induk
Jalankan alur kerja induk sehingga pemanggilan alur kerja turunan berjalan secara paralel. Eksekusi akan memerlukan waktu sekitar 10 detik untuk diselesaikan.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Di halaman Workflows, klik alur kerja workflow-parent untuk membuka halaman detailnya.
Di halaman Workflow details, klik play_arrow Execute.
Klik Execute lagi.
Lihat hasil alur kerja di panel Output.
Hasilnya akan mirip dengan berikut, yang menunjukkan error pada iterasi 2 dan 4, serta keberhasilan pada iterasi 1 dan 3.
"failure": { "2": { "message": "Execution failed or cancelled.", "operation": { "argument": "{\"iteration\":2}", "duration": "10.157992541s", "endTime": "2023-07-11T13:13:13.028424329Z", "error": { "context": "RuntimeError: \"Error with iteration 2\"\nin step \"raise_error\", routine \"main\", line: 18", "payload": "\"Error with iteration 2\"", ... "4": { "message": "Execution failed or cancelled.", "operation": { "argument": "{\"iteration\":4}", "duration": "10.157929734s", "endTime": "2023-07-11T13:13:13.061289142Z", "error": { "context": "RuntimeError: \"Error with iteration 4\"\nin step \"raise_error\", routine \"main\", line: 18", "payload": "\"Error with iteration 4\"", ... "success": { "1": "Hello world1", "3": "Hello world3"
gcloud
Menjalankan alur kerja:
gcloud workflows run workflow-parent \ --location=us-central1
Hasilnya akan mirip dengan berikut, yang menunjukkan error pada iterasi 2 dan 4, serta keberhasilan pada iterasi 1 dan 3.
Waiting for execution [06c753e4-6947-4c62-ac0b-2a9d53fb1b8f] to complete...done. argument: 'null' duration: 14.065415004s endTime: '2023-07-11T12:50:43.929023883Z' name: projects/386837416586/locations/us-central1/workflows/workflow-parent/executions/06c753e4-6947-4c62-ac0b-2a9d53fb1b8f result: '{"failure":{"2":{"message":"Execution failed or cancelled.","operation":{"argument":"{\"iteration\":2}","duration":"10.143718070s","endTime":"2023-07-11T12:50:40.673209821Z","error":{"context":"RuntimeError: ... "Error with iteration 2\"\nin step \"raise_error\", routine \"main\", line: 18","payload":"\"Error ... "Error with iteration 4\"\nin step \"raise_error\", routine \"main\", line: 18","payload":"\"Error ... "success":{"1":"Hello world1","3":"Hello world3"}}' startTime: '2023-07-11T12:50:29.863608879Z' state: SUCCEEDED
Anda telah berhasil membuat dan men-deploy alur kerja yang memanggil alur kerja turunan, menjalankan empat iterasi alur kerja turunan di cabang paralel, dan menampilkan indikator keberhasilan atau kegagalan untuk setiap eksekusi alur kerja turunan.