Membuat perulangan untuk mengulangi tindakan dalam alur kerja dengan Azure Logic Apps

Berlaku untuk: Azure Logic Apps (Konsumsi + Standar)

Azure Logic Apps menyertakan tindakan perulangan berikut yang dapat Anda gunakan dalam alur kerja Anda:

  • Untuk mengulangi satu atau beberapa tindakan pada item dalam array, tambahkan tindakan Untuk setiap ke alur kerja Anda.

    Atau, jika Anda memiliki pemicu yang menerima array dan ingin menjalankan iterasi untuk setiap item array, Anda dapat memperdebatkan array tersebut dengan properti pemicu SplitOn.

  • Untuk mengulangi satu atau beberapa tindakan hingga kondisi terpenuhi atau perubahan status, tambahkan tindakan Sampai ke alur kerja Anda.

    Alur kerja Anda pertama kali menjalankan semua tindakan di dalam perulangan, lalu memeriksa kondisi atau status. Jika kondisinya terpenuhi, perulangan akan berhenti. Jika tidak, perulangan terus mengulangi. Untuk batas default dan maksimum jumlah perulangan Until yang dapat dimiliki alur kerja, lihat Batas konkurensi, perulangan, dan debatching.

Prasyarat

Untuk masing-masing

Untuk setiap tindakan hanya berfungsi pada array dan mengulangi satu atau beberapa tindakan pada setiap item dalam array. Daftar berikut berisi beberapa pertimbangan saat Anda ingin menggunakan untuk setiap tindakan:

  • Untuk setiap tindakan dapat memproses sejumlah item array yang terbatas. Untuk batas ini, lihat Batas konkurensi, perulangan, dan pembagian.

  • Secara default, siklus atau iterasi dalam untuk setiap tindakan berjalan pada saat yang sama secara paralel.

    Perilaku ini berbeda dari Power Automate yang Diterapkan ke setiap loop ketika iterasi berjalan satu per satu, atau secara berurutan. Namun, Anda dapat menyiapkan berurutan Untuk setiap perulangan. Misalnya, jika Anda ingin menjeda iterasi berikutnya di untuk setiap tindakan dengan menggunakan tindakan Tunda, Anda perlu menyiapkan setiap perulangan untuk berjalan secara berurutan.

    Sebagai pengecualian untuk perilaku default, perulangan berlapis Untuk setiap tindakan selalu berjalan secara berurutan, bukan secara paralel. Untuk menjalankan operasi secara paralel untuk item dalam perulangan berlapis, buat dan panggil alur kerja aplikasi logika turunan.

  • Untuk mendapatkan hasil yang dapat diprediksi dari operasi pada variabel selama setiap iterasi, jalankan iterasi secara berurutan. Misalnya, ketika iterasi yang berjalan bersamaan berakhir, variabel Kenaikan, variabel Penurunan, dan Tambahkan ke operasi variabel mengembalikan hasil yang dapat diprediksi. Namun, selama iterasi dalam perulangan yang berjalan bersamaan, operasi ini mungkin mengembalikan hasil yang tidak dapat diprediksi.

  • Tindakan dalam perulangan Untuk setiap menggunakan fungsi untuk mereferensikan item() dan memproses setiap item dalam array. Jika Anda menentukan data yang tidak ada dalam array, alur kerja gagal.

Contoh alur kerja berikut mengirimkan ringkasan harian untuk umpan RSS situs web. Alur kerja menggunakan untuk setiap tindakan yang mengirim email untuk setiap item baru.

Berdasarkan apakah Anda memiliki alur kerja Konsumsi atau Standar, ikuti langkah-langkah yang sesuai:

  1. Di portal Azure, buat contoh alur kerja aplikasi logika Konsumsi dengan langkah-langkah berikut dalam urutan yang ditentukan:

  2. Ikuti langkah-langkah umum yang sama untuk menambahkan tindakan Untuk setiap antara pemicu RSS dan Mengirim tindakan email di alur kerja Anda.

  3. Sekarang buat perulangan:

    1. Pilih di dalam kotak Pilih output dari langkah sebelumnya sehingga daftar konten dinamis terbuka.

    2. Di daftar Tambahkan konten dinamis, dari bagian Saat item umpan diterbitkan, pilih Tautan umpan, yang merupakan output array dari pemicu RSS.

      Catatan

      Jika output tautan Umpan tidak muncul, di samping label bagian pemicu, pilih Lihat selengkapnya. Dari daftar konten dinamis, Anda hanya dapat memilih output dari langkah-langkah sebelumnya.

      Screenshot shows Azure portal, Consumption workflow designer, action named For each, and opened dynamic content list.

      Setelah selesai, output array yang dipilih muncul seperti dalam contoh berikut:

      Screenshot shows Consumption workflow, action named For each, and selected array output.

    3. Untuk menjalankan tindakan yang sudah ada pada setiap item array, seret tindakan Kirim email ke dalam untuk setiap perulangan.

      Sekarang, alur kerja Anda terlihat seperti contoh berikut:

      Screenshot shows Consumption workflow, action named For each, and action named Send an email, now inside For each loop.

  4. Setelah selesai, simpan alur kerja.

  5. Untuk menguji alur kerja Anda secara manual, pada toolbar perancang, pilih Jalankan Eksekusi Pemicu>.

Untuk setiap definisi tindakan (JSON)

Jika Anda bekerja dalam tampilan kode, Anda dapat menentukan For_each tindakan dalam definisi JSON alur kerja Anda, misalnya:

"actions": {
   "For_each": {
      "actions": {
         "Send_an_email_(V2)": {
            "type": "ApiConnection",
            "inputs": {
               "body": {
                  "Body": "@{item()}",
                  "Subject": "New CNN post @{triggerBody()?['publishDate']}",
                  "To": "me@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/v2/Mail"
            },
            "runAfter": {}
         }
      },
      "foreach": "@triggerBody()?['links']",
      "runAfter": {},
      "type": "Foreach"
   }
},

Untuk setiap: Jalankan secara berurutan

Secara default, iterasi dalam untuk setiap perulangan berjalan pada saat yang sama secara paralel. Namun, ketika Anda memiliki perulangan atau variabel berlapis di dalam perulangan di mana Anda mengharapkan hasil yang dapat diprediksi, Anda harus menjalankan perulangan tersebut satu per satu atau secara berurutan.

  1. Di sudut kanan atas untuk setiap tindakan, pilih elipsis (...) >Pengaturan.

  2. Di bawah Kontrol Konkurensi, ubah pengaturan dari Nonaktif ke Aktif.

  3. Pindahkan penggeser Tingkat Paralelisme ke 1, dan pilih Selesai.

    Screenshot shows Consumption workflow, action named For each, concurrency control setting turned on, and degree of parallelism slider set to 1.

Untuk setiap definisi tindakan (JSON): Jalankan secara berurutan

Jika Anda bekerja dalam tampilan kode dengan For_each tindakan dalam definisi JSON alur kerja, Anda dapat menggunakan Sequential opsi dengan menambahkan operationOptions parameter, misalnya:

"actions": {
   "For_each": {
      "actions": {
         "Send_an_email_(V2)": { }
      },
      "foreach": "@triggerBody()?['links']",
      "runAfter": {},
      "type": "Foreach",
      "operationOptions": "Sequential"
   }
}

Hingga

Tindakan Sampai berjalan dan mengulangi satu atau beberapa tindakan hingga kondisi yang ditentukan yang diperlukan terpenuhi. Jika kondisinya terpenuhi, perulangan akan berhenti. Jika tidak, perulangan terus mengulangi. Untuk batas default dan maksimum pada jumlah tindakan Until atau iterasi yang dapat dimiliki alur kerja, lihat Batas konkurensi, perulangan, dan debatching.

Daftar berikut ini berisi beberapa skenario umum di mana Anda bisa menggunakan tindakan Until :

  • Panggil titik akhir hingga Anda mendapatkan respons yang diinginkan.

  • Membuat rekaman dalam database. Tunggu hingga bidang tertentu dalam rekaman tersebut disetujui. Lanjutkan pemrosesan.

Dalam contoh alur kerja berikut, mulai pukul 08.00 setiap hari, tindakan Until menaikkan variabel hingga nilai variabel sama dengan 10. Alur kerja kemudian mengirim email yang mengonfirmasi nilai saat ini.

Catatan

Contoh ini menggunakan Office 365 Outlook, tetapi Anda bisa menggunakan penyedia email apa pun yang didukung Azure Logic Apps. Jika Anda menggunakan akun email lain, langkah-langkah umumnya tetap sama, tapi antarmuka pengguna Anda mungkin sedikit berbeda.

  1. Di portal Azure, buat sumber daya aplikasi logika Konsumsi dengan alur kerja kosong.

  2. Di perancang, ikuti langkah-langkah umum ini untuk menambahkan pemicu bawaan Pengulangan bernama Jadwalkan ke alur kerja Anda.

  3. Di pemicu Pengulangan , tentukan interval, frekuensi, dan jam dalam sehari agar pemicu diaktifkan.

    Properti Nilai
    Interval 1
    Frekuensi Hari
    Pada jam-jam ini 8

    Untuk menambahkan parameter Pada jam ini, buka daftar Tambahkan parameter baru, dan pilih Pada jam-jam ini, yang muncul hanya setelah Anda mengatur Frekuensi ke Hari.

    Screenshot shows Azure portal, Consumption workflow designer, and Recurrence trigger parameters with selected option for At these hours.

    Setelah selesai, pemicu Pengulangan terlihat seperti contoh berikut:

    Screenshot shows Azure portal, Consumption workflow, and Recurrence trigger parameters set up.

  4. Di bawah pemicu, ikuti langkah-langkah umum ini untuk menambahkan tindakan bawaan Variabel bernama Inisialisasi variabel ke alur kerja Anda.

  5. Dalam tindakan Inisialisasi variabel, berikan nilai berikut:

    Properti Nilai Deskripsi
    Nama Batas Nama variabel Anda
    Jenis Bilangan bulat Jenis data variabel Anda
    Nilai 0 Nilai awal variabel Anda

    Screenshot shows Azure portal, Consumption workflow, and parameters for built-in action named Initialize variable.

  6. Di bawah tindakan Inisialisasi variabel, ikuti langkah-langkah umum ini untuk menambahkan tindakan Kontrol bawaan bernama Until ke alur kerja Anda.

  7. Dalam tindakan Hingga, berikan nilai berikut untuk menyiapkan kondisi berhenti untuk perulangan.

    1. Pilih di dalam kotak paling kiri bernama Pilih nilai, yang secara otomatis membuka daftar konten dinamis.

    2. Dari daftar, di bawah Variabel, pilih variabel bernama Batas.

    3. Dari daftar operator tengah, pilih sama dengan operator.

    4. Dalam kotak paling kanan bernama Pilih nilai, masukkan 10 sebagai nilai perbandingan.

    Screenshot shows Consumption workflow and built-in action named Until with finished stop condition.

  8. Di dalam tindakan Hingga, pilih Tambahkan tindakan.

  9. Dalam kotak pencarian Pilih operasi, ikuti langkah-langkah umum ini untuk menambahkan tindakan bawaan Variabel bernama Variabel Kenaikan ke tindakan Sampai.

  10. Dalam tindakan Variabel kenaikan, berikan nilai berikut untuk menaikkan nilai variabel Batas sebesar 1:

    Properti Nilai
    Nama Pilih variabel Batasi.
    Nilai 1

    Screenshot shows Consumption workflow and built-in action named Until with Name set to the Limit variable and Value set to 1.

  11. Di luar dan di bawah Tindakan hingga , ikuti langkah-langkah umum ini untuk menambahkan tindakan yang mengirim email.

    Contoh ini berlanjut dengan tindakan Office 365 Outlook bernama Kirim email.

  12. Dalam tindakan email, berikan nilai berikut:

    Properti Nilai Deskripsi
    Untuk <email-address@domain> Alamat email penerima. Untuk pengujian, gunakan alamat email Anda sendiri.
    Subjek Nilai saat ini untuk variabel "Batas" adalah:Batas Subjek email. Untuk contoh ini, pastikan Anda menyertakan variabel Batas untuk mengonfirmasi bahwa nilai saat ini memenuhi kondisi yang Anda tentukan:

    1. Pilih di dalam kotak Subjek sehingga daftar konten dinamis muncul.

    2. Dalam daftar konten dinamis, di samping header bagian Variabel , pilih Lihat selengkapnya.

    3. Pilih Batas.
    Isi <konten-email> Konten pesan email yang ingin Anda kirim. Untuk contoh ini, masukkan teks apa pun yang Anda inginkan.

    Setelah selesai, tindakan email Anda terlihat mirip dengan contoh berikut:

    Screenshot shows Consumption workflow and action named Send an email with property values.

  13. Simpan alur kerja Anda.

Menguji alur kerja

Untuk menguji alur kerja aplikasi logika Anda secara manual, ikuti langkah-langkah berdasarkan apakah Anda memiliki aplikasi logika Konsumsi atau Standar.

Pada toolbar perancang, pilih Jalankan Eksekusi Pemicu>.

Setelah alur kerja mulai berjalan, Anda mendapatkan email dengan konten yang Anda tentukan:

Screenshot shows sample email received from example workflow.

Mencegah perulangan tanpa akhir

Tindakan Sampai menghentikan eksekusi berdasarkan properti berikut, yang bisa Anda lihat dengan memilih Ubah batas dalam tindakan. Pastikan Anda mengatur nilai properti ini dengan sesuai:

Properti Deskripsi
Hitung Jumlah maksimum iterasi yang berjalan sebelum perulangan keluar.

Untuk batas default dan maksimum jumlah tindakan Until yang dapat dimiliki alur kerja, lihat Batas konkurensi, perulangan, dan debatching.
Timeout Jumlah waktu maksimum tindakan Until , termasuk semua iterasi, berjalan sebelum perulangan keluar. Nilai ini ditentukan dalam format ISO 8601 dan dievaluasi untuk setiap perulangan.

Jika ada tindakan dalam perulangan yang memakan waktu lebih lama dari batas waktu habis, iterasi saat ini tidak berhenti. Namun, perulangan berikutnya tidak dimulai karena kondisi batas waktu habis terpenuhi.

Untuk batas default dan maksimum pada nilai Timeout, lihat Batas konkurensi, perulangan, dan pembagian.

Definisi "Until" (JSON)

Jika Anda bekerja dalam tampilan kode, Anda dapat menentukan Until tindakan dalam definisi JSON alur kerja Anda, misalnya:

"actions": {
   "Initialize_variable": {
      // Definition for initialize variable action
   },
   "Send_an_email": {
      // Definition for send email action
   },
   "Until": {
      "type": "Until",
      "actions": {
         "Increment_variable": {
            "type": "IncrementVariable",
            "inputs": {
               "name": "Limit",
               "value": 1
            },
            "runAfter": {}
         }
      },
      "expression": "@equals(variables('Limit'), 10)",
      // To prevent endless loops, an "Until" loop 
      // includes these default limits that stop the loop. 
      "limit": { 
         "count": 60,
         "timeout": "PT1H"
      },
      "runAfter": {
         "Initialize_variable": [
            "Succeeded"
         ]
      }
   }
}

Contoh perulangan Until ini memanggil titik akhir HTTP, yang membuat sumber daya. Perulangan berhenti ketika isi respons HTTP kembali dengan status Completed. Untuk mencegah perulangan tanpa akhir, perulangan juga berhenti jika salah satu kondisi berikut terjadi:

  • Perulangan berjalan 10 kali seperti yang ditentukan oleh atribut count. Defaultnya adalah 60 kali.

  • Loop berjalan selama dua jam seperti yang ditentukan oleh atribut timeout dalam format ISO 8601. Defaultnya adalah satu jam.

"actions": {
   "myUntilLoopName": {
      "type": "Until",
      "actions": {
         "Create_new_resource": {
            "type": "Http",
            "inputs": {
               "body": {
                  "resourceId": "@triggerBody()"
               },
               "url": "https://domain.com/provisionResource/create-resource",
               "body": {
                  "resourceId": "@triggerBody()"
               }
            },
            "runAfter": {},
            "type": "ApiConnection"
         }
      },
      "expression": "@equals(triggerBody(), 'Completed')",
      "limit": {
         "count": 10,
         "timeout": "PT2H"
      },
      "runAfter": {}
   }
}

Langkah berikutnya