Mengontrol urutan eksekusi dalam alur kerja

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

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. 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

  1. Buka halaman Workflows di Konsol Google Cloud:
    Buka Workflows

  2. Pilih nama alur kerja tempat Anda ingin mengubah urutan eksekusi langkah yang ada.

  3. Di halaman Edit Workflow, pilih Next untuk membuka editor alur kerja.

  4. 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

  5. Pilih Deploy.

gcloud

  1. Buka file definisi alur kerja Anda di editor teks pilihan Anda.

  2. 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.

  3. Simpan file alur kerja.

  4. 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

  1. Buka halaman Workflows di Konsol Google Cloud:
    Buka Workflows

  2. Pilih nama alur kerja tempat Anda ingin menambahkan blok switch.

  3. Di halaman Edit Workflow, pilih Next untuk membuka editor alur kerja.

  4. 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 blok switch.

    • EXPRESSION_ONE: ekspresi pertama yang akan dievaluasi. Jika ekspresi ini bernilai true (benar), alur kerja akan dieksekusi berikutnya STEP_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 berikutnya STEP_B. Jika ekspresi ini bernilai false, alur kerja akan mengeksekusi STEP_C.

    • STEP_A, STEP_B, STEP_C: nama langkah placeholder.

  5. Pilih Deploy.

gcloud

  1. Buka definisi alur kerja Anda di editor teks pilihan Anda.

  2. 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 blok switch.

    • EXPRESSION_ONE: ekspresi pertama yang akan dievaluasi. Jika ekspresi ini bernilai true (benar), alur kerja akan dieksekusi berikutnya STEP_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 berikutnya STEP_B. Jika ekspresi ini bernilai false, alur kerja akan mengeksekusi STEP_C.

    • STEP_A, STEP_B, STEP_C: nama langkah placeholder.

  3. Simpan file alur kerja.

  4. 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.

Langkah selanjutnya