Halaman ini menunjukkan cara menggunakan jump atau loop for untuk mengontrol urutan langkah-langkah alur kerja yang dijalankan. Lompatan dasar memungkinkan Anda menentukan langkah mana yang akan dijalankan alur kerja berikutnya. Lompatan bersyarat dibuat berdasarkan lompatan dasar, sehingga Anda dapat menggunakan ekspresi bersyarat untuk mengontrol urutan eksekusi melalui alur kerja. Misalnya, Anda dapat menjalankan langkah tertentu hanya jika variabel atau respons dari langkah alur kerja lain memenuhi kriteria tertentu.
Contoh di halaman ini menggunakan contoh API yang menampilkan hari dalam seminggu.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Anda harus sudah memiliki alur kerja yang ada tempat Anda ingin mengubah urutan eksekusi. Untuk mempelajari cara membuat dan men-deploy alur kerja, lihat Membuat dan memperbarui alur kerja.
Buka halaman Workflows di konsol Google Cloud :
Buka WorkflowsPilih nama alur kerja tempat Anda ingin mengubah urutan eksekusi langkah-langkah yang ada.
Di halaman Edit alur kerja, pilih Berikutnya untuk membuka editor alur kerja.
Tambahkan kolom
nextdi akhir langkah untuk memberi tahu alur kerja agar melompat ke langkah tertentu:YAML
- step_a: ... next: STEP_NAME_TO_JUMP_TO - step_b: ... - next_step: ...
JSON
[ { "step_a": { ... "next": "STEP_NAME_TO_JUMP_TO" } } { "step_b": { ... } } { "next_step": { ... } } ]
Ganti
STEP_NAME_TO_JUMP_TOdengan nama langkah yang ingin Anda jalankan berikutnya dalam alur kerja. Contoh:next_stepPilih Deploy.
Buka file definisi alur kerja Anda di editor teks pilihan Anda.
Tambahkan kolom
nextdi akhir langkah untuk memberi tahu alur kerja agar melompat ke langkah tertentu:YAML
- step_a: ... next: STEP_NAME_TO_JUMP_TO - step_b: ... - next_step: ...
JSON
[ { "step_a": { ... "next": "STEP_NAME_TO_JUMP_TO" } } { "step_b": { ... } } { "next_step": { ... } } ]
Ganti
STEP_NAME_TO_JUMP_TOdengan nama langkah yang ingin Anda jalankan berikutnya dalam alur kerja. Contoh,next_step.Simpan file alur kerja.
Untuk men-deploy alur kerja, masukkan perintah berikut:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Ganti kode berikut:
WORKFLOW_NAME: wajib. Nama alur kerja Anda.WORKFLOW_FILE.YAML: wajib. File sumber untuk alur kerja.
Buka halaman Workflows di konsol Google Cloud :
Buka WorkflowsPilih nama alur kerja yang ingin Anda tambahi blok
switch.Di halaman Edit alur kerja, pilih Berikutnya untuk membuka editor alur kerja.
Di halaman Tentukan alur kerja, definisi alur kerja Anda saat ini ditampilkan. Untuk mengedit alur kerja sehingga menjalankan langkah tertentu berdasarkan pernyataan kondisional, tambahkan langkah yang menggunakan blok
switch:YAML
- SWITCH_STEP_NAME: switch: - condition: ${EXPRESSION_ONE} next: STEP_A - condition: ${EXPRESSION_TWO} next: STEP_B ... next: STEP_C - STEP_A ... - STEP_B ... - STEP_C ...
JSON
[ { "SWITCH_STEP_NAME": { "switch": [ { "condition": "${EXPRESSION_ONE}", "next": "STEP_A" }, { "condition": "${EXPRESSION_TWO}", "next": "STEP_B" } ], "next": "STEP_C" } "STEP_A": { ... } "STEP_B": { ... } "STEP_C": { ... } } ]
Ganti kode berikut:
SWITCH_STEP_NAME: nama langkah yang berisi blokswitch.EXPRESSION_ONE: ekspresi pertama yang akan dievaluasi. Jika ekspresi ini bernilai benar (true), alur kerja akan dieksekusiSTEP_Aberikutnya. Jika ekspresi ini bernilai salah, alur kerja akan mengevaluasi ekspresi berikutnya.EXPRESSION_TWO: ekspresi kedua yang akan dievaluasi. Jika ekspresi ini bernilai benar (true), alur kerja akan dieksekusiSTEP_Bberikutnya. Jika ekspresi ini bernilai salah, alur kerja akan menjalankanSTEP_C.STEP_A,STEP_B,STEP_C: nama langkah penampung.
Pilih Deploy.
Buka definisi alur kerja Anda di editor teks pilihan Anda.
Untuk mengedit alur kerja sehingga menjalankan langkah tertentu berdasarkan pernyataan kondisional, tambahkan langkah yang menggunakan blok
switch:YAML
- SWITCH_STEP_NAME: switch: - condition: ${EXPRESSION_ONE} next: STEP_A - condition: ${EXPRESSION_TWO} next: STEP_B ... next: STEP_C - STEP_A ... - STEP_B ... - STEP_C ...
JSON
[ { "SWITCH_STEP_NAME": { "switch": [ { "condition": "${EXPRESSION_ONE}", "next": "STEP_A" }, { "condition": "${EXPRESSION_TWO}", "next": "STEP_B" } ], "next": "STEP_C" } "STEP_A": { ... } "STEP_B": { ... } "STEP_C": { ... } } ]
Ganti kode berikut:
SWITCH_STEP_NAME: nama langkah yang berisi blokswitch.EXPRESSION_ONE: ekspresi pertama yang akan dievaluasi. Jika ekspresi ini bernilai benar (true), alur kerja akan dieksekusiSTEP_Aberikutnya. Jika ekspresi ini bernilai salah, alur kerja akan mengevaluasi ekspresi berikutnya.EXPRESSION_TWO: ekspresi kedua yang akan dievaluasi. Jika ekspresi ini bernilai benar (true), alur kerja akan dieksekusiSTEP_Bberikutnya. Jika ekspresi ini bernilai salah, alur kerja akan menjalankanSTEP_C.STEP_A,STEP_B,STEP_C: nama langkah penampung.
Simpan file alur kerja.
Untuk men-deploy alur kerja, masukkan perintah berikut:
gcloud workflows deploy WORKFLOW_NAME \ --source=WORKFLOW_FILE.YAML
Ganti kode berikut:
WORKFLOW_NAME: wajib. Nama alur kerja Anda.WORKFLOW_FILE.YAML: wajib. File sumber untuk alur kerja.
Menggunakan lompatan untuk mengubah urutan eksekusi
Secara default, semua alur kerja adalah daftar berurutan tempat setiap langkah berjalan sesuai urutan yang Anda tentukan dalam kode sumber alur kerja. Anda dapat memilih untuk mengganti pengurutan default ini dengan menggunakan lompatan.
Lompatan dasar
Anda dapat menentukan langkah mana yang akan dijalankan berikutnya dalam alur kerja menggunakan lompatan dasar.
Konsol
gcloud
Contoh
Misalnya, alur kerja berikut memiliki langkah-langkah yang tidak berurutan:
YAML
- get_time: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime - return_daylight_savings_bool: return: ${daylightSavings} - get_daylight_savings_bool: assign: - daylightSavings: ${currentTime.body.isDayLightSavingsTime}
JSON
[ { "get_time": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime" } }, { "return_daylight_savings_bool": { "return": "${daylightSavings}" } }, { "get_daylight_savings_bool": { "assign": [ { "daylightSavings": "${currentTime.body.isDayLightSavingsTime}" } ] } } ]
Dalam contoh ini, kolom next telah ditambahkan ke langkah get_daylight_savings_bool
dan return_daylight_savings_bool sehingga langkah-langkah tersebut dijalankan dalam
urutan yang benar:
YAML
- get_time: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime next: get_daylight_savings_bool - return_daylight_savings_bool: return: ${daylightSavings} - get_daylight_savings_bool: assign: - daylightSavings: ${currentTime.body.isDayLightSavingsTime} next: return_daylight_savings_bool
JSON
[ { "get_time": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime", "next": "get_daylight_savings_bool" } }, { "return_daylight_savings_bool": { "return": "${daylightSavings}" } }, { "get_daylight_savings_bool": { "assign": [ { "daylightSavings": "${currentTime.body.isDayLightSavingsTime}" } ], "next": "return_daylight_savings_bool" } } ]
Lompatan bersyarat
Anda dapat menggunakan lompatan bersyarat untuk menentukan langkah mana yang akan dijalankan berikutnya dalam alur kerja.
Lompatan bersyarat menggunakan blok switch, yang melompat ke langkah tertentu jika kondisi tertentu terpenuhi. Setiap
switch blok dapat menyertakan maksimum 50 kondisi.
Konsol
gcloud
Contoh
Misalnya, alur kerja ini menggunakan blok switch untuk mengontrol urutan eksekusi alur kerja:
YAML
- getCurrentTime: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentTime - conditionalSwitch: switch: - condition: ${currentTime.body.dayOfTheWeek == "Friday"} next: friday - condition: ${currentTime.body.dayOfTheWeek == "Saturday" OR currentTime.body.dayOfTheWeek == "Sunday"} next: weekend next: workWeek - friday: return: "It's Friday! Almost the weekend!" - weekend: return: "It's the weekend!" - workWeek: return: "It's the work week."
JSON
[ { "getCurrentTime": { "call": "http.get", "args": { "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime" }, "result": "currentTime" } }, { "conditionalSwitch": { "switch": [ { "condition": "${currentTime.body.dayOfTheWeek == "Friday"}", "next": "friday" }, { "condition": "${currentTime.body.dayOfTheWeek == "Saturday" OR currentTime.body.dayOfTheWeek == "Sunday"}", "next": "weekend" } ], "next": "workWeek" } }, { "friday": { "return": "It's Friday! Almost the weekend!" } }, { "weekend": { "return": "It's the weekend!" } }, { "workWeek": { "return": "It's the work week." } } ]
Dalam contoh ini, blok switch memiliki dua kondisi. Parser mengevaluasi
setiap kondisi secara berurutan, dan jika hasil ekspresi kondisi adalah true,
langkah next kondisi tersebut dipanggil. Jika tidak ada kondisi yang terpenuhi,
alur kerja memanggil langkah yang ditentukan oleh kolom next di luar blok
switch, yang dalam contoh ini adalah langkah workWeek.
Misalnya, jika hari dalam seminggu adalah "Saturday", alur kerja akan melompat ke
langkah weekend dan menampilkan pesan "It's the weekend!". Alur kerja
tidak menjalankan langkah friday karena lompatan bersyarat melewatinya,
dan alur kerja tidak menjalankan langkah workWeek karena return menghentikan
eksekusi alur kerja di akhir langkah weekend.
Menggunakan loop for untuk melakukan iterasi
Anda dapat menggunakan loop for untuk melakukan iterasi pada urutan angka atau melalui kumpulan data, seperti daftar atau peta.
Anda dapat menelusuri setiap item dalam daftar atau peta menggunakan iterasi berbasis item. Jika Anda memiliki rentang nilai numerik tertentu untuk diiterasi, Anda dapat menggunakan iterasi berbasis rentang.
Untuk informasi dan contoh selengkapnya, lihat referensi sintaksis tentang iterasi.