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".
Prasyarat
Untuk mengikuti contoh dalam artikel ini, Anda memerlukan item ini:
Langganan Azure. Jika Anda tidak memiliki langganan, daftar untuk mendapatkan akun Azure secara gratis.
Akun email dari penyedia email apa pun yang didukung oleh Logic Apps. Contoh ini menggunakan Outlook.com. Jika Anda menggunakan penyedia lain, alur umum tetap sama, tetapi UI Anda tampak berbeda.
Kunci Bing Maps. Untuk mendapatkan kunci ini, lihat Mendapatkan kunci Bing Maps.
Pengetahuan dasar tentang aplikasi logika
Membuat contoh aplikasi logika
Pertama, buat contoh aplikasi logika ini sehingga Anda dapat menambahkan cakupan nanti:
- 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.
Masuk ke portal Microsoft Azure, jika Anda belum melakukannya. Buat aplikasi logika kosong.
Tambahkan Pemicu Jadwal - Pengulangan dengan pengaturan ini: Interval = "1" dan Frekuensi = "Menit"
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.
Menambahkan tindakan Bing Maps - Dapatkan rute.
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. Siapkan tindakan Dapatkan rute Anda seperti yang diperlihatkan tabel di bawah gambar ini:
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.
Tambahkan kondisi yang memeriksa apakah waktu perjalanan saat ini dengan lalu lintas melebihi waktu yang ditentukan. Misalnya, ikuti langkah-langkah berikut:
Mengganti nama kondisi dengan deskripsi ini: Jika waktu lalu lintas lebih dari waktu yang ditentukan
Di kolom paling kiri, pilih di dalam kotak Pilih nilai sehingga daftar konten dinamis muncul. Dari daftar tersebut, pilih bidang Traffic Durasi Perjalanan, yang dalam hitungan detik.
Di kotak tengah, pilih operator ini: lebih besar dari
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:
Di cabang True, tambahkan tindakan "kirim email" untuk penyedia email Anda. Siapkan tindakan ini dengan mengikuti langkah-langkah di bawah gambar ini:
Di bidang Kepada, masukkan alamat email Anda untuk tujuan pengujian.
Di bidang Subjek, masukkan teks ini:
Time to leave: Traffic more than 10 minutes
- 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.
Di daftar konten dinamis yang muncul, pilih Ekspresi.
Temukan dan pilih fungsi div(). Letakkan kursor Anda di dalam tanda kurung fungsi.
Saat kursor Anda berada di dalam tanda kurung fungsi, pilih Konten dinamis sehingga daftar konten dinamis muncul.
Dari bagian Dapatkan rute, pilih bidang Lalu lintas Durasi Lalu lintas.
Setelah bidang menetapkan format JSON, tambahkan koma (
,
) diikuti dengan angka sehingga Anda mengonversi60
nilai dalam Traffic Duration Traffic dari detik ke menit.div(body('Get_route')?['travelDurationTraffic'],60)
Ekspresi Anda sekarang terlihat seperti contoh ini:
Setelah selesai, pilih OK.
Setelah ekspresi diselesaikan, tambahkan teks ini dengan spasi jarak antar baris:
minutes
Bidang Body Anda sekarang terlihat seperti contoh ini:
Simpan aplikasi logika.
Selanjutnya, tambahkan cakupan sehingga Anda dapat mengelompokkan tindakan tertentu dan mengevaluasi statusnya.
Menambahkan cakupan
Jika Anda belum melakukannya, buka aplikasi logika Anda di perancang alur kerja.
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:
Gerakkan penunjuk Anda ke panah tempat Anda ingin menambahkan cakupan. Pilih tanda plus (+) >Tambahkan tindakan.
Di kotak pencarian, masukkan "cakupan" sebagai filter Anda. Pilih tindakan Cakupan.
Menambahkan langkah-langkah ke cakupan
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:
Di bawah cakupan, tambahkan kondisi yang memeriksa status cakupan. Mengganti nama kondisi dengan deskripsi ini: Jika cakupan gagal
Dalam kondisi tersebut, tambahkan ekspresi ini yang memeriksa apakah status cakupan sama dengan "Gagal" atau "Dibatalkan".
Untuk menambahkan baris lain, pilih Tambahkan.
Di setiap baris, pilih di dalam kotak kiri sehingga daftar konten dinamis muncul. Dari daftar konten dinamis, pilih Ekspresi. Dalam kotak edit, masukkan ekspresi ini, lalu pilih OK:
action('Scope')
Untuk kedua baris, pilih sama dengan operator.
Untuk nilai perbandingan, di baris pertama, masukkan
Failed
. Di baris kedua, masukkanAborted
.Setelah selesai, kondisi Anda terlihat seperti contoh ini:
Sekarang, atur properti kondisi sehingga
runAfter
kondisi memeriksa status cakup anda menjalankan pencocokan yang Anda tentukan di langkah-langkah selanjutnya.Pada kondisi Jika cakupan gagal, pilih tombol elipsis (...), lalu pilih Konfigurasikan eksekusi setelahnya.
Pilih semua status cakupan ini: telah berhasil, telah gagal, telah dilewati, dan telah kehabisan waktu
Setelah selesai, pilih Selesai. Kondisi sekarang menunjukkan ikon "informasi".
Di cabang Benar dan Salah , tambahkan tindakan yang ingin Anda lakukan berdasarkan setiap status cakupan, misalnya, kirim email atau pesan.
Simpan aplikasi logika.
Aplikasi logika Anda yang sudah selesai sekarang terlihat seperti contoh ini:
Menguji pekerjaan Anda
Pada toolbar perancang, pilih Jalankan 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: @{action('Scope')}",
"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: @{action('Scope')}",
"Subject": "Scope succeeded",
"To": "<your-email@domain.com>"
},
"host": {
"connection": {
"name": "@parameters('$connections')['outlook']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
}
},
"expression": {
"or": [
{
"equals": [
"@action('Scope')",
"Failed"
]
},
{
"equals": [
"@action('Scope')",
"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": {}
}
},