Halaman ini menunjukkan cara menggunakan jump atau for loop untuk mengontrol urutan langkah-langkah alur kerja Anda. Lompatan dasar memungkinkan Anda menentukan langkah berikutnya yang akan dijalankan oleh alur kerja. Lompat bersyarat dibuat berdasarkan lompatan dasar, sehingga Anda dapat menggunakan ekspresi kondisional untuk mengontrol urutan eksekusi melalui alur kerja. Misalnya, Anda dapat menjalankan langkah-langkah tertentu hanya jika variabel atau respons dari langkah alur kerja lain memenuhi kriteria tertentu.
Contoh di halaman ini menggunakan API contoh 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
- Anda seharusnya sudah memiliki alur kerja yang ingin diubah urutan eksekusinya. Untuk mempelajari cara membuat dan men-deploy alur kerja, lihat Membuat dan memperbarui alur kerja.
Menggunakan lompatan untuk mengubah urutan eksekusi
Secara default, semua alur kerja diurutkan dengan daftar, dengan setiap langkah dijalankan sesuai urutan yang Anda tentukan di kode sumber alur kerja. Anda dapat memilih untuk mengganti pengurutan default ini menggunakan lompatan.
Lompat dasar
Anda dapat menentukan langkah mana yang akan dijalankan berikutnya dalam alur kerja dengan menggunakan lompatan dasar.
Konsol
Buka halaman Workflows di Konsol Google Cloud:
Buka WorkflowsPilih nama alur kerja tempat Anda ingin mengubah urutan eksekusi langkah yang ada.
Di halaman Edit Workflow, pilih Next untuk membuka editor alur kerja.
Tambahkan kolom
next
di 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_TO
dengan nama langkah yang Anda inginkan untuk dijalankan oleh alur kerja berikutnya. Contoh,next_step
Pilih Deploy.
gcloud
Buka file definisi alur kerja Anda di editor teks pilihan Anda.
Tambahkan kolom
next
di 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_TO
dengan nama langkah yang Anda inginkan untuk dijalankan alur kerja berikutnya. 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 diisi. Nama alur kerja Anda.WORKFLOW_FILE.YAML
: wajib diisi. File sumber untuk alur kerja.
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 dieksekusi 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" } } ]
Lompat bersyarat
Anda dapat menggunakan lompatan bersyarat untuk menentukan langkah mana yang akan dijalankan berikutnya dalam alur kerja.
Lompat bersyarat menggunakan blok switch
, yang melompat ke langkah yang ditentukan jika kondisi tertentu terpenuhi. Setiap
blok switch
dapat menyertakan maksimum 50 kondisi.
Konsol
Buka halaman Workflows di Konsol Google Cloud:
Buka WorkflowsPilih nama alur kerja tempat Anda ingin menambahkan blok
switch
.Di halaman Edit Workflow, pilih Next untuk membuka editor alur kerja.
Di halaman Tentukan alur kerja, definisi alur kerja Anda saat ini akan ditampilkan. Untuk mengedit alur kerja agar menjalankan langkah tertentu berdasarkan pernyataan bersyarat, 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 true (benar), alur kerja akan dieksekusi berikutnyaSTEP_A
. Jika ekspresi ini bernilai false, alur kerja akan mengevaluasi ekspresi berikutnya.EXPRESSION_TWO
: ekspresi kedua yang akan dievaluasi. Jika ekspresi ini bernilai true (benar), alur kerja akan dieksekusi berikutnyaSTEP_B
. Jika ekspresi ini bernilai false, alur kerja akan mengeksekusiSTEP_C
.STEP_A
,STEP_B
,STEP_C
: nama langkah placeholder.
Pilih Deploy.
gcloud
Buka definisi alur kerja Anda di editor teks pilihan Anda.
Untuk mengedit alur kerja agar menjalankan langkah tertentu berdasarkan pernyataan bersyarat, 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 true (benar), alur kerja akan dieksekusi berikutnyaSTEP_A
. Jika ekspresi ini bernilai false, alur kerja akan mengevaluasi ekspresi berikutnya.EXPRESSION_TWO
: ekspresi kedua yang akan dievaluasi. Jika ekspresi ini bernilai true (benar), alur kerja akan dieksekusi berikutnyaSTEP_B
. Jika ekspresi ini bernilai false, alur kerja akan mengeksekusiSTEP_C
.STEP_A
,STEP_B
,STEP_C
: nama langkah placeholder.
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 diisi. Nama alur kerja Anda.WORKFLOW_FILE.YAML
: wajib diisi. File sumber untuk alur kerja.
Contoh
Misalnya, alur kerja ini menggunakan blok tombol akses 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 akan dipanggil. Jika tidak ada kondisi yang terpenuhi,
alur kerja akan memanggil langkah yang ditentukan oleh kolom next
di luar
blok switch
, yang, dalam contoh ini, adalah langkah workWeek
.
Misalnya, jika hari 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 pengumpulan data, seperti daftar atau peta.
Anda dapat menelusuri setiap item dalam daftar atau peta menggunakan iterasi berbasis item. Jika memiliki rentang nilai numerik tertentu untuk diiterasi, Anda dapat menggunakan iterasi berbasis rentang.
Untuk informasi dan contoh selengkapnya, lihat referensi sintaksis di iterasi.