Menjalankan tindakan berdasarkan status grup dengan menggunakan cakupan di Azure Logic Apps

Berlaku pada: Azure Logic Apps (Konsumsi)

Untuk menjalankan tindakan hanya setelah grup tindakan lain berhasil atau gagal, kelompokkan tindakan tersebut di dalam cakupan. Struktur ini berguna saat Anda ingin mengatur tindakan sebagai grup logika, mengevaluasi status grup tersebut, dan melakukan tindakan yang didasarkan pada status cakupan. Setelah semua tindakan dalam cakupan selesai berjalan, ruang cakupan juga mendapatkan statusnya sendiri. Misalnya, Anda dapat menggunakan cakupan saat ingin menerapkan pengecualian dan penanganan kesalahan.

Untuk memeriksa status cakupan, Anda dapat menggunakan kriteria yang sama dengan yang Anda gunakan untuk menentukan status jalankan aplikasi logika, seperti Berhasil, Gagal, Dibatalkan, dan sebagainya. Secara default, ketika semua tindakan cakupan berhasil, status cakupan ditandai sebagai Berhasil. Tetapi ketika tindakan apa pun dalam cakupan gagal atau dibatalkan, status cakupan ditandai Gagal. Untuk batasan cakupan, lihat Batas dan konfigurasi.

Misalnya, berikut adalah aplikasi logika tingkat tinggi yang menggunakan cakupan untuk menjalankan tindakan tertentu dan kondisi untuk memeriksa status cakupan. Jika ada tindakan dalam cakupan yang gagal atau berakhir secara tiba-tiba, cakupan ditandai Gagal atau Dibatalkan masing-masing, dan aplikasi logika mengirim pesan "Cakupan gagal". Jika semua tindakan tercakup berhasil, aplikasi logika mengirimkan pesan "Cakupan berhasil".

Diagram shows the logic app scope flow with examples of

Prasyarat

Untuk mengikuti contoh dalam artikel ini, Anda memerlukan item ini:

Membuat contoh aplikasi logika

Pertama, buat contoh aplikasi logika ini sehingga Anda dapat menambahkan cakupan nanti:

Create sample logic app

  • Jadwal - pengulangan merupakan pemicu yang memeriksa layanan Bing Maps pada interval yang Anda tentukan
  • Bing Maps - Dapatkan rute tindakan yang memeriksa waktu perjalanan antara dua lokasi
  • Tindakan kondisi yang memeriksa apakah waktu perjalanan melebihi waktu perjalanan yang Anda tentukan
  • Tindakan yang mengirimi Anda email bahwa waktu perjalanan saat ini melebihi waktu yang ditentukan

Anda dapat menyimpan aplikasi logika kapan saja, jadi sering simpan pekerjaan Anda.

  1. Masuk ke portal Microsoft Azure, jika Anda belum melakukannya. Buat aplikasi logika kosong.

  2. Tambahkan Pemicu Jadwal - Pengulangan dengan pengaturan ini: Interval = "1" dan Frekuensi = "Menit"

    Set up

    Tip

    Untuk menyederhanakan tampilan Anda secara visual dan menyembunyikan detail setiap tindakan dalam desainer, ciutkan setiap bentuk tindakan saat Anda maju melalui langkah-langkah ini.

  3. Menambahkan tindakan Bing Maps - Dapatkan rute.

    1. Jika Anda belum memiliki koneksi Bing Maps, Anda akan diminta untuk membuat koneksi.

      Pengaturan Nilai Deskripsi
      Nama Koneksi BingMapsConnection Siapkan nama untuk koneksi Anda.
      Kunci API <your-Bing-Maps-key> Masukkan kunci Bing Maps yang sebelumnya Anda terima.
    2. Siapkan tindakan Dapatkan rute Anda seperti yang diperlihatkan tabel di bawah gambar ini:

      Set up

      Untuk informasi selengkapnya tentang parameter ini, lihat Menghitung rute.

      Pengaturan Nilai Deskripsi
      Titik jalan 1 <mulai> Masukkan asal rute Anda.
      Titik jalan 2 <akhir> Masukkan tujuan rute Anda.
      Hindari Tidak Masukkan item untuk dihindari di rute Anda, seperti jalan raya, tol, dan sebagainya. Untuk nilai yang mungkin, lihat Menghitung rute.
      Optimalkan timeWithTraffic Pilih parameter untuk mengoptimalkan rute Anda, seperti jarak, waktu dengan informasi lalu lintas saat ini, dan sebagainya. Contoh ini menggunakan nilai ini: "timeWithTraffic"
      Satuan unit <preferensi Anda> Masukkan satuan jarak untuk menghitung rute Anda. Contoh ini menggunakan nilai ini: "Mile"
      Mode perjalanan Mengemudi Masukkan mode perjalanan untuk rute Anda. Contoh ini menggunakan nilai "Mengemudi" ini
      Tanggal Transit Tidak Berlaku hanya untuk mode transit.
      Jenis Jenis Tanggal Transit Tidak Berlaku hanya untuk mode transit.
  4. Tambahkan kondisi yang memeriksa apakah waktu perjalanan saat ini dengan lalu lintas melebihi waktu yang ditentukan. Misalnya, ikuti langkah-langkah berikut:

    1. Mengganti nama kondisi dengan deskripsi ini: Jika waktu lalu lintas lebih dari waktu yang ditentukan

    2. Di kolom paling kiri, klik di dalam kotak Pilih nilai sehingga daftar konten dinamis muncul. Dari daftar tersebut, pilih bidang Traffic Durasi Perjalanan, yang dalam hitungan detik.

      Build condition

    3. Di kotak tengah, pilih operator ini: lebih besar dari

    4. Di kolom paling kanan, masukkan nilai perbandingan ini, yang dalam detik dan setara dengan 10 menit: 600

      Setelah selesai, kondisi Anda terlihat seperti contoh ini:

      Finished condition

  5. Di cabang Jika benar, tambahkan tindakan "kirim email" untuk penyedia email Anda. Siapkan tindakan ini dengan mengikuti langkah-langkah di bawah gambar ini:

    Add

    1. Di bidang Kepada, masukkan alamat email Anda untuk tujuan pengujian.

    2. Di bidang Subjek, masukkan teks ini:

    Time to leave: Traffic more than 10 minutes

    1. Di bidang Isi, masukkan teks ini dengan spasi trailing:

    Travel time:

    Saat kursor Muncul di bidang Isi, daftar konten dinamis tetap terbuka sehingga Anda dapat memilih parameter apa pun yang tersedia pada titik ini.

    1. Di daftar konten dinamis, pilih Ekspresi.

    2. Temukan dan pilih fungsi div(). Letakkan kursor Anda di dalam tanda kurung fungsi.

    3. Saat kursor Anda berada di dalam tanda kurung fungsi, pilih Konten dinamis sehingga daftar konten dinamis muncul.

    4. Dari bagian Dapatkan rute, pilih bidang Lalu lintas Durasi Lalu lintas.

      Select

    5. Setelah bidang menetapkan format JSON, tambahkan koma ( , ) diikuti dengan angka sehingga Anda mengonversi 60 nilai dalam Traffic Duration Traffic dari detik ke menit.

      div(body('Get_route')?['travelDurationTraffic'],60)
      

      Ekspresi Anda sekarang terlihat seperti contoh ini:

      Finish expression

    6. Setelah Anda selesai, pilih OK.

    1. Setelah ekspresi diselesaikan, tambahkan teks ini dengan spasi jarak antar baris: minutes

      Bidang Body Anda sekarang terlihat seperti contoh ini:

      Finished

  6. Simpan aplikasi logika.

Selanjutnya, tambahkan cakupan sehingga Anda dapat mengelompokkan tindakan tertentu dan mengevaluasi statusnya.

Menambahkan cakupan

  1. Jika Belum, buka aplikasi logika di Logic App Designer.

  2. Tambahkan cakupan di lokasi alur kerja yang Anda inginkan. Misalnya, untuk menambahkan cakupan antara langkah-langkah yang sudah ada dalam alur kerja aplikasi logika, ikuti langkah-langkah berikut:

    1. Gerakkan penunjuk Anda ke panah tempat Anda ingin menambahkan cakupan. Pilih tanda tambah (+) >Tambahkan tindakan.

      Add a scope

    2. Di kotak pencarian, masukkan "cakupan" sebagai filter Anda. Pilih tindakan Cakupan.

Menambahkan langkah-langkah ke cakupan

  1. Sekarang tambahkan langkah-langkah atau seret langkah-langkah yang sudah ada yang ingin Anda jalankan di dalam cakupan. Untuk contoh ini, seret tindakan ini ke dalam cakupan:

    • Dapatkan rute
    • Jika waktu lalu lintas lebih dari waktu yang ditentukan, yang mencakup kedua cabangyang benar dan yang salah

    Aplikasi logika Anda sekarang terlihat seperti contoh ini:

    Scope added

  2. Di bawah cakupan, tambahkan kondisi yang memeriksa status cakupan. Mengganti nama kondisi dengan deskripsi ini: Jika cakupan gagal

    Add condition to check scope status

  3. Dalam kondisi tersebut, tambahkan ekspresi ini yang memeriksa apakah status cakupan sama dengan "Gagal" atau "Dibatalkan".

    1. Untuk menambahkan baris lain, pilih Tambahkan.

    2. Di setiap baris, klik di dalam kotak kiri sehingga daftar konten dinamis muncul. Dari daftar konten dinamis, pilih Ekspresi. Dalam kotak edit, masukkan ekspresi ini, lalu pilih OK:

      result('Scope')[0]['status']

      Screenshot that shows the

    3. Untuk kedua baris, pilih sama dengan operator.

    4. Untuk nilai perbandingan, di baris pertama, masukkan Failed. Di baris kedua, masukkan Aborted.

      Setelah selesai, kondisi Anda terlihat seperti contoh ini:

      Add expression that checks the scope's status

      Sekarang, atur properti kondisi sehingga runAfter kondisi memeriksa status cakup anda menjalankan pencocokan yang Anda tentukan di langkah-langkah selanjutnya.

    5. Pada kondisi Jika cakupan gagal, pilih tombol elipsis (...), lalu pilih jalankan Konfigurasikan setelah.

      Configure runAfter property

    6. Pilih semua status cakupan ini: telah berhasil, telah gagal, telah dilewati, dan telah kehabisan waktu

      Select scope statuses

    7. Setelah selesai, pilih Selesai. Kondisi sekarang menunjukkan ikon "informasi".

  4. Di cabang Jika benar dan Jika salah, tambahkan tindakan yang ingin Anda lakukan berdasarkan setiap status cakupan, misalnya, kirim email atau pesan.

    Add actions to take based on scope status

  5. Simpan aplikasi logika.

Aplikasi logika Anda yang sudah selesai sekarang terlihat seperti contoh ini:

Finished logic app with scope

Menguji pekerjaan Anda

Pada toolbar desainer, pilih Jalankan. Jika semua tindakan tercakup berhasil, Anda mendapatkan pesan "Cakupan berhasil". Jika tindakan tercakup tidak berhasil, Anda mendapatkan pesan "Cakupan gagal".

Definisi JSON

Jika Anda bekerja dalam tampilan kode, Anda dapat menentukan struktur cakupan dalam definisi JSON aplikasi logika Anda. Misalnya, berikut adalah definisi JSON untuk pemicu dan tindakan di aplikasi logika sebelumnya:

"triggers": {
  "Recurrence": {
    "type": "Recurrence",
    "recurrence": {
       "frequency": "Minute",
       "interval": 1
    }
  }
}
"actions": {
  "If_scope_failed": {
    "type": "If",
    "actions": {
      "Scope_failed": {
        "type": "ApiConnection",
        "inputs": {
          "body": {
            "Body": "Scope failed. Scope status: @{result('Scope')[0]['status']}",
            "Subject": "Scope failed",
            "To": "<your-email@domain.com>"
          },
          "host": {
            "connection": {
              "name": "@parameters('$connections')['outlook']['connectionId']"
            }
          },
          "method": "post",
          "path": "/Mail"
        },
        "runAfter": {}
      }
    },
    "else": {
      "actions": {
        "Scope_succeded": {
          "type": "ApiConnection",
          "inputs": {
            "body": {
              "Body": "Scope succeeded. Scope status: @{result('Scope')[0]['status']}",
              "Subject": "Scope succeeded",
              "To": "<your-email@domain.com>"
            },
            "host": {
              "connection": {
               "name": "@parameters('$connections')['outlook']['connectionId']"
              }
            },
            "method": "post",
            "path": "/Mail"
          },
          "runAfter": {}
        }
      }
    },
    "expression": {
      "or": [ 
         {
            "equals": [ 
              "@result('Scope')[0]['status']", 
              "Failed"
            ]
         },
         {
            "equals": [
               "@result('Scope')[0]['status']", 
               "Aborted"
            ]
         } 
      ]
    },
    "runAfter": {
      "Scope": [
        "Failed",
        "Skipped",
        "Succeeded",
        "TimedOut"
      ]
    }
  },
  "Scope": {
    "type": "Scope",
    "actions": {
      "Get_route": {
        "type": "ApiConnection",
        "inputs": {
          "host": {
            "connection": {
              "name": "@parameters('$connections')['bingmaps']['connectionId']"
            }
          },
          "method": "get",
          "path": "/REST/V1/Routes/Driving",
          "queries": {
            "distanceUnit": "Mile",
            "optimize": "timeWithTraffic",
            "travelMode": "Driving",
            "wp.0": "<start>",
            "wp.1": "<end>"
          }
        },
        "runAfter": {}
      },
      "If_traffic_time_is_more_than_specified_time": {
        "type": "If",
        "actions": {
          "Send_mail_when_traffic_exceeds_10_minutes": {
            "type": "ApiConnection",
            "inputs": {
              "body": {
                 "Body": "Travel time:@{div(body('Get_route')?['travelDurationTraffic'],60)} minutes",
                 "Subject": "Time to leave: Traffic more than 10 minutes",
                 "To": "<your-email@domain.com>"
              },
              "host": {
                "connection": {
                   "name": "@parameters('$connections')['outlook']['connectionId']"
                }
              },
              "method": "post",
              "path": "/Mail"
            },
            "runAfter": {}
          }
        },
        "expression": {
          "and" : [
            {
               "greater": [ 
                  "@body('Get_route')?['travelDurationTraffic']", 
                  600
               ]
            }
          ]
        },
        "runAfter": {
          "Get_route": [
            "Succeeded"
          ]
        }
      }
    },
    "runAfter": {}
  }
},

Mendapatkan dukungan

Langkah berikutnya