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.
Tujuan
Dalam tutorial ini, Anda akan:
- Buat dan deploy alur kerja turunan yang menerima data dari alur kerja induk.
- Buat dan deploy alur kerja induk yang mengeksekusi beberapa alur kerja turunan
menggunakan loop
for
paralel. - Jalankan alur kerja induk yang memanggil eksekusi paralel alur kerja turunan.
- Hasil dari semua eksekusi alur kerja turunan yang berhasil dan gagal disimpan dan ditampilkan dalam peta.
Anda dapat menjalankan perintah berikut di konsol Google Cloud atau menggunakan Google Cloud CLI di terminal atau Cloud Shell.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
Konsol
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Workflow Executions and Workflows APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Workflows > Workflows Invoker role to the service account.
To grant the role, find the Select a role list, then select Workflows > Workflows Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Workflow Executions and Workflows APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Workflows > Workflows Invoker role to the service account.
To grant the role, find the Select a role list, then select Workflows > Workflows Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
gcloud
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Workflow Executions and Workflows APIs:
gcloud services enable workflowexecutions.googleapis.com
workflows.googleapis.com -
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant the
roles/workflows.invoker
IAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID." --role=roles/workflows.invoker
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service account
-
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Workflow Executions and Workflows APIs:
gcloud services enable workflowexecutions.googleapis.com
workflows.googleapis.com -
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant the
roles/workflows.invoker
IAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID." --role=roles/workflows.invoker
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service account
-
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 sebelumnya Anda buat.
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.
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan yang Anda buat sebelumnya.
Membuat dan men-deploy alur kerja induk
Alur kerja induk mengeksekusi beberapa cabang alur kerja turunan menggunakan loop for
paralel.
Salin kode sumber untuk definisi alur kerja. Dialog ini 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 informasi selengkapnya, lihat Langkah paralel dan Iterasi.Alur kerja turunan dipanggil menggunakan konektor. Setiap iterasi alur kerja turunan diteruskan argumen
iteration
. Alur kerja induk menunggu dan menyimpan hasil dari setiap eksekusi alur kerja turunan. Untuk mengetahui informasi selengkapnya, lihat Konektor Workflows Executions 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 sebelumnya Anda buat.
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 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.
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 Alur kerja, 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 ini, yang menunjukkan error dengan iterasi 2 dan 4, serta berhasil dengan 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 ini, yang menunjukkan error dengan iterasi 2 dan 4, serta berhasil dengan 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.
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus resource tutorial
Menghapus alur kerja yang dibuat dalam tutorial ini:
gcloud workflows delete workflow-child gcloud workflows delete workflow-parent
Langkah selanjutnya
- Untuk mempelajari sintaksis Alur Kerja lebih lanjut, lihat Referensi sintaksis Alur Kerja.
- Untuk mempelajari konektor Alur Kerja lebih lanjut, lihat Memahami konektor.