Panduan referensi skema untuk jenis pemicu dan tindakan di Azure Logic Apps
Referensi ini menjelaskan jenis umum yang digunakan untuk mengidentifikasi pemicu dan tindakan dalam definisi alur kerja yang mendasari aplikasi logika Anda, yang dijelaskan dan divalidasi oleh Bahasa Pemrogram Definisi Alur Kerja. Untuk menemukan pemicu dan tindakan konektor tertentu yang bisa Anda gunakan di aplikasi logika Anda, lihat daftar di bawah gambaran umum Konektor.
Gambaran umum pemicu
Setiap alur kerja menyertakan pemicu, yang menentukan panggilan yang membuat instans dan memulai alur kerja. Berikut adalah kategori pemicu umum:
Pemicu polling, yang memeriksa titik akhir layanan secara berkala
Pemicu dorong, yang membuat langganan ke titik akhir dan menyediakan URL panggilan balik sehingga titik akhir dapat memberi tahu pemicu saat peristiwa yang ditentukan terjadi atau data tersedia. Pemicu kemudian menunggu respons titik akhir sebelum pengaktifan.
Pemicu memiliki elemen tingkat atas ini, meskipun beberapa bersifat opsional:
"<trigger-name>": {
"type": "<trigger-type>",
"inputs": { "<trigger-inputs>" },
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"conditions": [ "<array-with-conditions>" ],
"runtimeConfiguration": { "<runtime-config-options>" },
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
},
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<trigger-name> | String | Nama untuk pemicu |
<trigger-type> | String | Jenis pemicu seperti "Http" atau "ApiConnection" |
<trigger-inputs> | Objek JSON | Input yang menentukan perilaku pemicu |
<time-unit> | String | Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan" |
<number-of-time-units> | Bilangan bulat | Nilai yang menentukan seberapa sering pemicu diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga pemicu diaktifkan lagi Berikut adalah interval minimum dan maksimum: - Bulan: 1-16 bulan - Hari: 1-500 hari - Jam: 1-12.000 jam - Menit: 1-72.000 menit - Detik: 1-9.999.999 detik Misalnya, jika intervalnya adalah 6, dan frekuensinya adalah "Bulan", maka pengulangannya adalah setiap 6 bulan. |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<array-with-conditions> | Array | Array yang berisi satu atau beberapa kondisi yang menentukan apakah akan menjalankan alur kerja. Hanya tersedia untuk pemicu. |
<runtime-config-options> | Objek JSON | Anda dapat mengubah perilaku runtime bahasa umum pemicu dengan menyetel runtimeConfiguration properti. Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum. |
<splitOn-expression> | String | Untuk pemicu yang menampilkan array, Anda dapat menentukan ekspresi yang memisahkan atau memperdebatkan item array menjadi beberapa contoh alur kerja untuk diproses. |
<operation-option> | String | Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi. |
Daftar jenis pemicu
Setiap jenis pemicu memiliki antarmuka dan input berbeda yang menentukan perilaku pemicu.
Pemicu bawaan
Jenis pemicu | Deskripsi |
---|---|
HTTP | Memeriksa atau polling titik akhir apa pun. Titik akhir ini harus sesuai dengan kontrak pemicu tertentu baik dengan menggunakan 202 pola asinkron atau dengan menampilkan array. |
HTTPWebhook | Membuat titik akhir yang dapat dipanggil untuk aplikasi logika Anda tapi memanggil URL yang ditentukan untuk mendaftar atau tidak mendaftar. |
Pengulangan | Pengaktifan berdasarkan jadwal yang ditentukan. Anda dapat menyetel tanggal dan waktu mendatang untuk mengaktifkan pemicu ini. Berdasarkan frekuensi, Anda juga dapat menentukan waktu dan hari untuk menjalankan alur kerja Anda. |
Permintaan | Membuat titik akhir yang dapat dipanggil untuk aplikasi logika Anda dan juga dikenal sebagai pemicu "manual". Misalnya, lihat Memanggil, memicu, atau menyusun alur kerja dengan titik akhir HTTP. |
Pemicu API terkelola
Jenis pemicu | Deskripsi |
---|---|
ApiConnection | Memeriksa atau melakukan polling titik akhir dengan menggunakan API yang dikelola Microsoft atau "konektor". |
ApiConnectionWebhook | Membuat titik akhir yang dapat dipanggil untuk alur kerja aplikasi logika Anda dengan memanggil API yang dikelola Microsoft atau "konektor" untuk berlangganan dan berhenti berlangganan. |
Pemicu - Referensi detail
Pemicu APIConnection
Pemicu ini memeriksa atau melakukan polling titik akhir dengan menggunakan API yang dikelola Microsoft atau "konektor" sehingga parameter untuk pemicu ini dapat berbeda berdasarkan titik akhir. Banyak bagian dalam definisi pemicu ini bersifat opsional. Perilaku pemicu tergantung pada apakah bagian disertakan atau tidak.
"<APIConnection_trigger_name>": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['<connection-name>']['connectionId']"
}
},
"method": "<method-type>",
"path": "/<api-operation>",
"retryPolicy": { "<retry-behavior>" },
"queries": { "<query-parameters>" }
},
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
}
Diperlukan
Properti | Nilai | Tipe | Deskripsi |
---|---|---|---|
Tidak | <APIConnection_trigger_name> | String | Nama untuk pemicu |
host.connection.name | <nama-koneksi> | String | Nama untuk koneksi ke API terkelola yang digunakan alur kerja |
metode | <method-type> | String | Metode HTTP untuk berkomunikasi dengan API terkelola: GET, PUT, POST, PATCH, DELETE |
jalan | <api-operation> | String | Operasi API yang akan dipanggil |
pengulangan.frekuensi | <time-unit> | String | Unit waktu yang menjelaskan seberapa sering pemicu diaktifkan: Detik, Menit, Jam, Hari, Minggu, Bulan |
pengulangan.interval | <number-of-time-units> | Bilangan bulat | Nilai yang menentukan seberapa sering pemicu diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga pemicu diaktifkan lagi Berikut adalah interval minimum dan maksimum: - Bulan: 1-16 bulan - Hari: 1-500 hari - Jam: 1-12.000 jam - Menit: 1-72.000 menit - Kedua: 1-9.999.999 detik Misalnya, jika intervalnya adalah 6, dan frekuensinya adalah Bulan, pengulangannya adalah setiap 6 bulan. |
Opsional
Properti | Nilai | Tipe | Deskripsi |
---|---|---|---|
retryPolicy | <retry-behavior> | Objek JSON | Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi. |
Pertanyaan | <query-parameters> | Objek JSON | Parameter kueri apa pun yang disertakan dengan panggilan API. Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan. |
runtimeConfiguration.concurrency.runs | <max-runs> | Bilangan bulat | Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu. |
runtimeConfiguration.maximumWaitingRuns | <max-runs-queue> | Bilangan bulat | Jika alur kerja Anda sudah menjalankan jumlah maksimum instans, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu. Untuk mengubah jumlah maksimum instans, tentukan nilai untuk properti runtimeConfiguration.concurrency.runs . Catatan: Jika Anda mengatur |
splitOn | <splitOn-expression> | String | Untuk pemicu yang menampilkan array, ekspresi ini mereferensikan array untuk digunakan sehingga Anda dapat membuat dan menjalankan instans alur kerja untuk setiap item array, daripada menggunakan perulangan "untuk setiap". Misalnya, ekspresi ini menunjukkan item dalam array yang ditampilkan dalam konten isi pemicu: @triggerbody()?['value'] |
operationOptions | <operation-option> | String | Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi. |
Output
Elemen | Tipe | Deskripsi |
---|---|---|
header | Objek JSON | header dari respons |
body | Objek JSON | Isi dari respons |
kode status | Bilangan bulat | Kode status dari respons |
Contoh
Definisi pemicu ini memeriksa email setiap hari di dalam kotak masuk untuk akun kantor atau sekolah:
"When_a_new_email_arrives": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "get",
"path": "/Mail/OnNewEmail",
"queries": {
"fetchOnlyWithAttachment": false,
"folderPath": "Inbox",
"importance": "Any",
"includeAttachments": false
}
},
"recurrence": {
"frequency": "Day",
"interval": 1
}
}
Pemicu ApiConnectionWebhook
Pemicu ini mengirim permintaan langganan ke titik akhir menggunakan API yang dikelola Microsoft, menyediakan URL panggilan balik ke tempat titik akhir dapat mengirim respons, dan menunggu titik akhir merespons. Untuk informasi selengkapnya, lihat Langganan titik akhir.
"<ApiConnectionWebhook_trigger_name>": {
"type": "ApiConnectionWebhook",
"inputs": {
"body": {
"NotificationUrl": "@{listCallbackUrl()}"
},
"host": {
"connection": {
"name": "@parameters('$connections')['<connection-name>']['connectionId']"
}
},
"retryPolicy": { "<retry-behavior>" },
"queries": "<query-parameters>"
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-run-queue>
}
},
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<nama-koneksi> | String | Nama untuk koneksi ke API terkelola yang digunakan alur kerja |
<body-content> | Objek JSON | Konten pesan apa pun yang dikirim sebagai payload ke API terkelola |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<retry-behavior> | Objek JSON | Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi. |
<query-parameters> | Objek JSON | Parameter kueri apa pun untuk disertakan dengan panggilan API Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan. |
<max-runs> | Bilangan bulat | Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu. |
<max-runs-queue> | Bilangan bulat | Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu. |
<splitOn-expression> | String | Untuk pemicu yang menampilkan array, ekspresi ini mereferensikan array untuk digunakan sehingga Anda dapat membuat dan menjalankan instans alur kerja untuk setiap item array, daripada menggunakan perulangan "untuk setiap". Misalnya, ekspresi ini menunjukkan item dalam array yang ditampilkan dalam konten isi pemicu: @triggerbody()?['value'] |
<operation-option> | String | Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi. |
Contoh
Definisi pemicu ini berlangganan API Office 365 Outlook, menyediakan URL panggilan balik ke titik akhir API, dan menunggu titik akhir merespons saat email baru tiba.
"When_a_new_email_arrives_(webhook)": {
"type": "ApiConnectionWebhook",
"inputs": {
"body": {
"NotificationUrl": "@{listCallbackUrl()}"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"path": "/MailSubscription/$subscriptions",
"queries": {
"folderPath": "Inbox",
"hasAttachment": "Any",
"importance": "Any"
}
},
"splitOn": "@triggerBody()?['value']"
}
Pemicu HTTP
Pemicu ini mengirimkan permintaan ke titik akhir HTTP atau HTTPS yang ditentukan berdasarkan jadwal pengulangan yang ditentukan. Pemicu kemudian memeriksa respons untuk menentukan apakah alur kerja berjalan. Untuk informasi selengkapnya, lihat Memanggil titik akhir layanan melalui HTTP atau HTTPS dari Azure Logic Apps.
"HTTP": {
"type": "Http",
"inputs": {
"method": "<method-type>",
"uri": "<HTTP-or-HTTPS-endpoint-URL>",
"headers": { "<header-content>" },
"queries": "<query-parameters>",
"body": "<body-content>",
"authentication": { "<authentication-type-and-property-values>" },
"retryPolicy": {
"type": "<retry-behavior>"
}
},
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
Diperlukan
Properti | Nilai | Tipe | Deskripsi |
---|---|---|---|
method |
<method-type> | String | Metode yang digunakan untuk mengirim permintaan keluar: "GET", "PUT", "POST", "PATCH", atau "DELETE" |
uri |
<HTTP-or-HTTPS-endpoint-URL> | String | URL titik akhir HTTP atau HTTPS tempat Anda ingin mengirim permintaan keluar. Ukuran string maksimum: 2 KB Untuk layanan atau sumber daya Azure, sintaks URI ini menyertakan ID sumber daya dan jalur ke sumber daya yang ingin Anda akses. |
frequency |
<time-unit> | String | Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan" |
interval |
<number-of-time-units> | Bilangan bulat | Nilai yang menentukan seberapa sering pemicu diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga pemicu diaktifkan lagi Berikut adalah interval minimum dan maksimum: - Bulan: 1-16 bulan - Hari: 1-500 hari - Jam: 1-12.000 jam - Menit: 1-72.000 menit - Detik: 1-9.999.999 detik Misalnya, jika intervalnya adalah 6, dan frekuensinya adalah "Bulan", maka pengulangannya adalah setiap 6 bulan. |
Opsional
Properti | Nilai | Tipe | Deskripsi |
---|---|---|---|
headers |
<header-content> | Objek JSON | Header apa pun yang perlu Anda sertakan dengan permintaan Misalnya, untuk mengatur bahasa dan jenis: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
queries |
<query-parameters> | Objek JSON | Parameter kueri apa pun yang perlu Anda gunakan dalam permintaan Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan. |
body |
<body-content> | Objek JSON | Konten pesan untuk dikirim sebagai payload dengan permintaan |
authentication |
<authentication-type-and-property-values> | Objek JSON | Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar. Selain Scheduler, authority properti didukung. Saat tidak ditentukan, nilai defaultnya adalah https://management.azure.com/ , tapi Anda dapat menggunakan nilai yang berbeda. |
retryPolicy > type |
<retry-behavior> | Objek JSON | Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi. |
runs |
<max-runs> | Bilangan bulat | Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu. |
maximumWaitingRuns |
<max-runs-queue> | Bilangan bulat | Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu. |
operationOptions |
<operation-option> | String | Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi. |
Output
Elemen | Tipe | Deskripsi |
---|---|---|
headers |
Objek JSON | header dari respons |
body |
Objek JSON | Isi dari respons |
status code |
Bilangan bulat | Kode status dari respons |
Persyaratan untuk permintaan masuk
Agar berfungsi dengan baik dengan aplikasi logika Anda, titik akhir harus sesuai dengan pola pemicu atau kontrak tertentu, dan mengenali properti respons ini:
Properti | Wajib | Deskripsi |
---|---|---|
Kode status | Ya | Kode status "200 OK" mulai dijalankan. Kode status lainnya tidak mulai dijalankan. |
Header coba lagi-setelah | No | Jumlah detik hingga aplikasi logika Anda polling titik akhir lagi |
Header lokasi | No | URL yang akan dipanggil pada interval polling berikutnya. Jika tidak ditentukan, URL asli akan digunakan. |
Contoh perilaku untuk permintaan yang berbeda
Kode status | Coba lagi setelah | Perilaku |
---|---|---|
200 | {none} | Jalankan alur kerja, lalu periksa lagi data lainnya setelah pengulangan yang ditentukan. |
200 | 10 detik | Jalankan alur kerja, lalu periksa lagi data lainnya setelah 10 detik. |
202 | 60 detik | Jangan memicu alur kerja. Upaya berikutnya terjadi dalam satu menit, tergantung pada pengulangan yang ditentukan. Jika pengulangan yang ditentukan kurang dari satu menit, header coba lagi diutamakan. Jika tidak, pengulangan yang ditentukan digunakan. |
400 | {none} | Permintaan buruk, jangan jalankan alur kerja. Jika tidak retryPolicy didefinisikan, maka kebijakan default digunakan. Setelah mencapai jumlah pengulangan, pemicu memeriksa data lagi setelah pengulangan yang ditentukan. |
500 | {none} | Kesalahan server, jangan jalankan alur kerja. Jika tidak retryPolicy didefinisikan, maka kebijakan default digunakan. Setelah mencapai jumlah pengulangan, pemicu memeriksa data lagi setelah pengulangan yang ditentukan. |
Pemicu HTTPWebhook
Pemicu ini membuat aplikasi logika Anda dapat dihubungi dengan membuat titik akhir yang dapat mendaftarkan langganan dengan memanggil URL titik akhir yang ditentukan. Saat Anda membuat pemicu ini di alur kerja Anda, permintaan keluar melakukan panggilan untuk mendaftarkan langganan. Dengan begitu, pemicu bisa mulai mendengarkan peristiwa. Saat operasi membuat pemicu ini tidak valid, permintaan keluar secara otomatis melakukan panggilan untuk membatalkan langganan. Untuk informasi selengkapnya, lihat Langganan titik akhir.
Anda juga dapat menentukan batas asinkron pada pemicu HTTPWebhook. Perilaku pemicu tergantung pada bagian yang Anda gunakan atau hilangkan.
"HTTP_Webhook": {
"type": "HttpWebhook",
"inputs": {
"subscribe": {
"method": "<method-type>",
"uri": "<endpoint-subscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"retryPolicy": { "<retry-behavior>" }
},
"unsubscribe": {
"method": "<method-type>",
"url": "<endpoint-unsubscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" }
}
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
Beberapa nilai, seperti, <jenis metode>, tersedia untuk objek "subscribe"
dan "unsubscribe"
.
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<method-type> | String | Metode HTTP yang digunakan untuk permintaan langganan: "GET", "PUT", "POST", "PATCH", atau "DELETE" |
<endpoint-subscribe-URL> | String | URL titik akhir tempat mengirim permintaan langganan |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<method-type> | String | Metode HTTP yang digunakan untuk permintaan pembatalan: "GET", "PUT", "POST", "PATCH", atau "DELETE" |
<endpoint-unsubscribe-URL> | String | URL titik akhir tempat mengirim permintaan pembatalan |
<body-content> | String | Konten pesan apa pun yang akan dikirim dalam permintaan langganan atau pembatalan |
<authentication-type> | Objek JSON | Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar. |
<retry-behavior> | Objek JSON | Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi. |
<max-runs> | Bilangan bulat | Secara default, semua instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu. |
<max-runs-queue> | Bilangan bulat | Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu. |
<operation-option> | String | Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi. |
Output
Elemen | Tipe | Deskripsi |
---|---|---|
header | Objek JSON | header dari respons |
body | Objek JSON | Isi dari respons |
status code | Bilangan bulat | Kode status dari respons |
Contoh
Pemicu ini membuat langganan ke titik akhir yang ditentukan, menyediakan URL panggilan balik yang unik, dan menunggu artikel teknologi yang baru diterbitkan.
"HTTP_Webhook": {
"type": "HttpWebhook",
"inputs": {
"subscribe": {
"method": "POST",
"uri": "https://pubsubhubbub.appspot.com/subscribe",
"body": {
"hub.callback": "@{listCallbackUrl()}",
"hub.mode": "subscribe",
"hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
},
},
"unsubscribe": {
"method": "POST",
"url": "https://pubsubhubbub.appspot.com/subscribe",
"body": {
"hub.callback": "@{workflow().endpoint}@{listCallbackUrl()}",
"hub.mode": "unsubscribe",
"hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
}
}
}
}
Pemicu Pengulangan
Pemicu ini berjalan berdasarkan jadwal pengulangan yang ditentukan dan menyediakan cara mudah untuk membuat alur kerja yang berjalan secara teratur.
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
"startTime": "<start-date-time-with-format-YYYY-MM-DDThh:mm:ss>",
"timeZone": "<time-zone>",
"schedule": {
// Applies only when frequency is Day or Week. Separate values with commas.
"hours": [ <one-or-more-hour-marks> ],
// Applies only when frequency is Day or Week. Separate values with commas.
"minutes": [ <one-or-more-minute-marks> ],
// Applies only when frequency is Week. Separate values with commas.
"weekDays": [ "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday" ]
}
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<time-unit> | String | Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan" |
<number-of-time-units> | Bilangan bulat | Nilai yang menentukan seberapa sering pemicu diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga pemicu diaktifkan lagi Berikut adalah interval minimum dan maksimum: - Bulan: 1-16 bulan - Hari: 1-500 hari - Jam: 1-12.000 jam - Menit: 1-72.000 menit - Detik: 1-9.999.999 detik Misalnya, jika intervalnya adalah 6, dan frekuensinya adalah "Bulan", maka pengulangannya adalah setiap 6 bulan. |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<start-date-time-with-format-YYYY-MM-DDThh:mm:ss> | String | Tanggal dan waktu mulai dalam format ini: YYYY-MM-DDThh:mm:ss jika Anda menentukan zona waktu -Atau- YYYY-MM-DDThh:mm:ssZ jika Anda tidak menentukan zona waktu Jadi misalnya, jika Anda ingin 18 September 2017 pukul 14.00, maka tentukan "18--09-2017T14:00:00" dan tentukan zona waktu seperti "Waktu Standar Pasifik", atau tentukan "18-09-2017T14:00:00Z" tanpa zona waktu. Catatan: Waktu mulai ini memiliki maksimum 49 tahun di masa depan dan harus mengikuti spesifikasi waktu tanggal ISO 8601 dalam format waktu tanggal UTC, tapi tanpa offset UTC. Jika Anda tidak menentukan zona waktu, Anda harus menambahkan huruf "Z" di akhir tanpa spasi. "Z" ini mengacu pada waktu bahariyang ekuivalen. Untuk jadwal sederhana, waktu mulai adalah kejadian pertama, sedangkan untuk jadwal kompleks, pemicu tidak aktif lebih cepat dari waktu mulai. Untuk informasi selengkapnya tentang tanggal dan waktu mulai, lihat Membuat dan menjadwalkan tugas yang berjalan secara rutin. |
<time-zone> | String | Hanya berlaku saat Anda menentukan waktu mulai karena pemicu ini tidak menerima offset UTC. Tentukan zona waktu yang ingin Anda terapkan. |
<one-or-more-hour-marks> | Bilangan bulat atau array bilangan bulat | Jika Anda menentukan "Hari" atau "Minggu" untuk frequency , Anda dapat menentukan satu atau beberapa bilangan bulat dari 0 hingga 23, dipisahkan dengan koma, sebagai jam dalam sehari saat Anda ingin menjalankan alur kerja. Misalnya, jika Anda menentukan "10", "12", dan "14", Anda mendapatkan 10.00, 12.00, dan 14.00 sebagai tanda jam. |
<one-or-more-minute-marks> | Bilangan bulat atau array bilangan bulat | Jika Anda menentukan "Hari" atau "Minggu" untuk frequency , Anda dapat menentukan satu atau beberapa bilangan bulat dari 0 hingga 59, dipisahkan dengan koma, sebagai menit dalam sejam saat Anda ingin menjalankan alur kerja. Misalnya, Anda dapat menentukan "30" sebagai tanda menit dan menggunakan contoh sebelumnya selama berjam-jam dalam sehari, Anda mendapatkan 10.30, 12.30, dan 14.30. |
weekDays | String atau array string | Jika Anda menentukan "Minggu" untuk frequency , Anda dapat menentukan satu atau beberapa hari, dipisahkan dengan koma, saat Anda ingin menjalankan alur kerja: "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", dan "Minggu" |
<max-runs> | Bilangan bulat | Secara default, semua instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu. |
<max-runs-queue> | Bilangan bulat | Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu. |
<operation-option> | String | Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi. |
Contoh 1
Pemicu pengulangan dasar ini berjalan setiap hari:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1
}
}
Contoh 2
Anda dapat menentukan tanggal dan waktu mulai untuk mengaktifkan pemicu. Pemicu pengulangan ini dimulai pada tanggal yang ditentukan lalu aktif setiap hari:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1,
"startTime": "2017-09-18T00:00:00Z"
}
}
Contoh 3
Pemicu pengulangan ini dimulai pada 9 September 2017 pukul 14.00, dan aktif setiap minggu setiap Senin pukul 10.30, 12.30, dan 14.30 Waktu Standar Pasifik:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Week",
"interval": 1,
"schedule": {
"hours": [ 10, 12, 14 ],
"minutes": [ 30 ],
"weekDays": [ "Monday" ]
},
"startTime": "2017-09-07T14:00:00",
"timeZone": "Pacific Standard Time"
}
}
Untuk informasi selengkapnya serta contoh pemicu ini, lihat Membuat dan menjadwalkan tugas yang berjalan secara rutin.
Pemicu Permintaan
Pemicu ini membuat aplikasi logika Anda dapat dipanggil dengan membuat titik akhir yang dapat menerima permintaan masuk. Untuk pemicu ini, berikan skema JSON yang menjelaskan dan memvalidasi muatan atau input yang diterima pemicu dari permintaan masuk. Skema ini juga membuat properti pemicu lebih mudah direferensikan dari tindakan di kemudian hari dalam alur kerja.
Untuk memanggil pemicu ini, Anda harus menggunakan listCallbackUrl
API, yang dijelaskan dalam REST API Layanan Alur Kerja. Untuk mempelajari cara menggunakan pemicu ini sebagai titik akhir HTTP, lihat Alur kerja panggilan, pemicu, atau lapis dengan titik akhir HTTP.
"manual": {
"type": "Request",
"kind": "Http",
"inputs": {
"method": "<method-type>",
"relativePath": "<relative-path-for-accepted-parameter>",
"schema": {
"type": "object",
"properties": {
"<property-name>": {
"type": "<property-type>"
}
},
"required": [ "<required-properties>" ]
}
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-run-queue>
},
},
"operationOptions": "<operation-option>"
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<property-name> | String | Nama properti dalam skema JSON, yang menggambarkan payload |
<property-type> | String | Jenis properti |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<method-type> | String | Metode yang harus digunakan permintaan masuk untuk memanggil aplikasi logika Anda: "GET", "PUT", "POST", "PATCH", "DELETE" |
<relative-path-for-accepted-parameter> | String | Jalur relatif untuk parameter yang dapat diterima URL titik akhir Anda |
<required-properties> | Array | Satu atau beberapa properti yang memerlukan nilai |
<max-runs> | Bilangan bulat | Secara default, semua instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu. |
<max-runs-queue> | Bilangan bulat | Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu. |
<operation-option> | String | Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi. |
Contoh
Pemicu ini menentukan bahwa permintaan masuk harus menggunakan metode HTTP POST untuk memanggil pemicu dan menyertakan skema yang memvalidasi input dari permintaan masuk:
"manual": {
"type": "Request",
"kind": "Http",
"inputs": {
"method": "POST",
"schema": {
"type": "object",
"properties": {
"customerName": {
"type": "String"
},
"customerAddress": {
"type": "Object",
"properties": {
"streetAddress": {
"type": "string"
},
"city": {
"type": "string"
}
}
}
}
}
}
}
Kondisi pemicu
Untuk pemicu apa pun, dan hanya pemicu, Anda bisa menyertakan array yang berisi satu atau beberapa ekspresi untuk kondisi yang menentukan apakah alur kerja harus berjalan. Untuk menambahkan conditions
properti ke pemicu di alur kerja Anda, buka aplikasi logika Anda di editor tampilan kode.
Misalnya, Anda dapat menentukan bahwa pemicu hanya aktif saat situs web menampilkan kesalahan server internal dengan mereferensikan kode status pemicu di conditions
properti:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Hour",
"interval": 1
},
"conditions": [ {
"expression": "@equals(triggers().code, 'InternalServerError')"
} ]
}
Secara default, pemicu hanya akan aktif setelah mendapatkan respons "200 OK". Saat ekspresi mereferensikan kode status pemicu, perilaku default pemicu diganti. Jadi, jika Anda ingin pemicu aktif untuk lebih dari satu kode status, seperti kode status "200" dan "201", Anda harus menyertakan ekspresi ini sebagai kondisi Anda:
@or(equals(triggers().code, 200),equals(triggers().code, 201))
Memicu beberapa eksekusi pada array
Jika pemicu menampilkan array untuk diproses oleh alur kerja Anda, kadang perulangan "untuk setiap" mungkin terlalu lama untuk memproses setiap item array. Sebagai gantinya, Anda dapat menggunakan properti SplitOn properti di pemicu Anda untuk memperdebatkan array. Mendebat akan memisahkan item array dan memulai instans alur kerja baru yang berjalan untuk setiap item array. Pendekatan ini berguna, misalnya, saat Anda ingin polling titik akhir yang mungkin menampilkan beberapa item baru di antara interval polling.
Jika file Swagger pemicu Anda menjelaskan payload yang merupakan array, properti SplitOn secara otomatis ditambahkan ke pemicu Anda. Jika tidak, tambahkan properti ini di dalam payload respons yang memiliki array yang ingin Anda debat.
Sebelum Anda menggunakan kemampuan SplitOn, tinjau pertimbangan berikut:
Saat konkurensi pemicu diaktifkan, batas SplitOn berkurang secara signifikan. Jika jumlah item melebihi batas ini, kapabilitas SplitOn dinonaktifkan.
Anda tidak dapat menggunakan kemampuan SplitOn dengan pola respons sinkron. Alur kerja apa pun yang menggunakan properti SplitOn dan menyertakan tindakan respons berjalan secara asinkron dan segera mengirim respons
202 ACCEPTED
.Untuk jumlah maksimum item array yang dapat diproses splitOn dalam satu alur kerja, lihat Batas dan konfigurasi.
Contoh
Misalkan Anda memiliki pemicu HTTP yang memanggil API dan menerima respons ini:
{
"Status": "Succeeded",
"Rows": [
{
"id": 938109380,
"name": "customer-name-one"
},
{
"id": 938109381,
"name": "customer-name-two"
}
]
}
Alur kerja hanya memerlukan konten dari array di Rows
, sehingga Anda dapat membuat pemicu seperti contoh ini:
"HTTP_Debatch": {
"type": "Http",
"inputs": {
"uri": "https://mydomain.com/myAPI",
"method": "GET"
},
"recurrence": {
"frequency": "Second",
"interval": 1
},
"splitOn": "@triggerBody()?.Rows"
}
Catatan
Jika Anda menggunakan SplitOn
perintah, Anda tidak bisa mendapatkan properti yang berada di luar array.
Jadi misalnya, Anda tidak bisa mendapatkan status
properti dalam respons yang ditampilkan dari API.
Untuk menghindari kegagalan jika Rows
properti tidak ada, contoh ini menggunakan ?
operator.
Definisi alur kerja Anda sekarang dapat digunakan @triggerBody().name
untuk mendapatkan name
nilai, yang "customer-name-one"
berasal dari eksekusi pertama dan "customer-name-two"
dari eksekusi kedua. Jadi, output pemicu Anda terlihat seperti contoh-contoh ini:
{
"body": {
"id": 938109380,
"name": "customer-name-one"
}
}
{
"body": {
"id": 938109381,
"name": "customer-name-two"
}
}
Gambaran umum tindakan
Microsoft Azure Logic Apps menyediakan berbagai jenis tindakan - masing-masing dengan input berbeda yang menentukan perilaku unik tindakan. Tindakan memiliki elemen tingkat tinggi ini, meskipun beberapa bersifat opsional:
"<action-name>": {
"type": "<action-type>",
"inputs": {
"<input-name>": { "<input-value>" },
"retryPolicy": "<retry-behavior>"
},
"runAfter": { "<previous-trigger-or-action-status>" },
"runtimeConfiguration": { "<runtime-config-options>" },
"operationOptions": "<operation-option>"
},
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<action-name> | String | Nama untuk tindakan |
<action-type> | String | Jenis tindakan, misalnya, "Http" atau "ApiConnection" |
<input-name> | String | Nama untuk input yang mendefinisikan perilaku tindakan |
<input-value> | Bermacam-macam | Nilai input, yang dapat menjadi string, bilangan bulat, objek JSON, dan sebagainya |
<previous-trigger-or-action-status> | Objek JSON | Nama dan status yang dihasilkan untuk pemicu atau tindakan yang harus segera dijalankan sebelum tindakan saat ini dapat berjalan |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<retry-behavior> | Objek JSON | Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat kebijakan Coba Lagi. |
<runtime-config-options> | Objek JSON | Untuk beberapa tindakan, Anda dapat mengubah perilaku tindakan saat durasi dengan menyetel runtimeConfiguration properti. Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum. |
<operation-option> | String | Untuk beberapa tindakan, Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi. |
Daftar jenis tindakan
Berikut adalah beberapa jenis tindakan yang umum digunakan:
Jenis tindakan bawaan seperti contoh ini dan lainnya:
HTTP untuk memanggil titik akhir melalui HTTP atau HTTPS
Respons untuk merespons permintaan
Menjalankan Kode JavaScript untuk menjalankan cuplikan kode JavaScript
Fungsi untuk memanggil Azure Functions
Tindakan operasi data seperti Gabung, Tulis, Tabel, Pilih, dan lainnya yang membuat atau mentransformasi data dari berbagai input
Alur kerja untuk memanggil alur kerja aplikasi logika lain
Jenis tindakan API terkelola seperti ApiConnection dan ApiConnectionWebHook yang memanggil berbagai konektor dan API yang dikelola oleh Microsoft, misalnya, Azure Service Bus, Office 365 Outlook, Power BI, Azure Blob Storage, OneDrive, GitHub, dan banyak lagi
Mengontrol jenis tindakan alur kerja seperti If, Foreach, Switch, Scope, dan Until, yang berisi tindakan lain dan membantu Anda menata eksekusi alur kerja
Tindakan bawaan
Jenis tindakan | Deskripsi |
---|---|
Tulis | Membuat output tunggal dari input, yang dapat memiliki berbagai jenis. |
Jalankan Kode JavaScript | Jalankan cuplikan kode JavaScript yang sesuai dengan kriteria tertentu. Untuk persyaratan kode dan informasi selengkapnya, lihat Menambahkan dan menjalankan cuplikan kode dengan kode sebaris. |
Fungsi | Memanggil Azure Function. |
HTTP | Memanggil titik akhir HTTP. |
Gabungkan | Membuat string dari semua item dalam array dan memisahkan item tersebut dengan karakter pemisah tertentu. |
Menguraikan JSON | Membuat token yang mudah digunakan dari properti dalam konten JSON. Anda kemudian dapat mereferensikan properti tersebut dengan menyertakan token di aplikasi logika Anda. |
Kueri | Membuat string dari item dalam array lain berdasarkan kondisi atau filter. |
Respons | Membuat respons terhadap panggilan masuk atau permintaan. |
Pilih | Membuat array dengan objek JSON dengan mengubah item dari array lain berdasarkan peta yang ditentukan. |
Table | Membuat tabel CSV atau HTML dari array. |
Mengakhiri | Menghentikan alur kerja yang berjalan secara aktif. |
Tunggu | Menjeda alur kerja Anda untuk durasi yang ditentukan atau hingga tanggal dan waktu yang ditentukan. |
Alur kerja | Menumpuk alur kerja di dalam alur kerja lain. |
Tindakan API terkelola
Jenis tindakan | Deskripsi |
---|---|
ApiConnection | Memanggil titik akhir HTTP dengan menggunakan API yang dikelola Microsoft. |
ApiConnectionWebhook | Berfungsi seperti HTTP Webhook tapi menggunakan API yang dikelola Microsoft. |
Mengontrol tindakan alur kerja
Tindakan ini membantu Anda mengontrol eksekusi alur kerja dan menyertakan tindakan lain. Dari luar tindakan alur kerja kontrol, Anda bisa langsung mereferensikan tindakan di dalam tindakan alur kerja kontrol tersebut. Misalnya, jika Anda memiliki Http
tindakan di dalam lingkup, Anda bisa mereferensikan @body('Http')
ekspresi dari mana saja dalam alur kerja. Namun, tindakan yang ada di dalam tindakan alur kerja kontrol hanya dapat "berjalan setelah" tindakan lain yang berada dalam struktur alur kerja kontrol yang sama.
Jenis tindakan | Deskripsi |
---|---|
ForEach | Jalankan tindakan yang sama dalam perulangan untuk setiap item dalam array. |
Jika | Jalankan tindakan berdasarkan apakah kondisi yang ditentukan benar atau salah. |
Cakupan | Jalankan tindakan berdasarkan status grup dari serangkaian tindakan. |
Sakelar | Jalankan tindakan yang diatur ke dalam kasus saat nilai dari ekspresi, objek, atau token cocok dengan nilai yang ditentukan oleh setiap kasus. |
Sampai | Jalankan tindakan dalam perulangan hingga kondisi yang ditentukan benar. |
Tindakan - Referensi detail
Tindakan APIConnection
Tindakan ini mengirimkan permintaan HTTP ke API yang dikelola Microsoft dan memerlukan informasi tentang API dan parameter ditambah referensi ke koneksi yang valid.
"<action-name>": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['<api-name>']['connectionId']"
},
"<other-action-specific-input-properties>"
},
"method": "<method-type>",
"path": "/<api-operation>",
"retryPolicy": "<retry-behavior>",
"queries": { "<query-parameters>" },
"<other-action-specific-properties>"
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<action-name> | String | Nama tindakan yang disediakan oleh konektor |
<api-name> | String | Nama API yang dikelola Microsoft yang digunakan untuk koneksi |
<method-type> | String | Metode HTTP untuk memanggil API: "GET", "PUT", "POST", "PATCH", atau "DELETE" |
<api-operation> | String | Operasi API yang akan dipanggil |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<other-action-specific-input-properties> | Objek JSON | Properti input lain yang berlaku untuk tindakan khusus ini |
<retry-behavior> | Objek JSON | Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi. |
<query-parameters> | Objek JSON | Parameter kueri apa pun yang disertakan dengan panggilan API. Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan. |
<other-action-specific-properties> | Objek JSON | Properti lain yang berlaku untuk tindakan khusus ini |
Contoh
Definisi ini menguraikan tindakan Kirim email untuk konektor Office 365 Outlook, yang merupakan API yang dikelola Microsoft:
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "Thank you for your membership!",
"Subject": "Hello and welcome!",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "POST",
"path": "/Mail"
},
"runAfter": {}
}
Tindakan APIConnectionWebhook
Pemicu ini mengirim permintaan langganan ke titik akhir HTTP menggunakan API yang dikelola Microsoft, menyediakan URL panggilan balik ke tempat titik akhir dapat mengirim respons, dan menunggu titik akhir merespons. Untuk informasi selengkapnya, lihat Langganan titik akhir.
"<action-name>": {
"type": "ApiConnectionWebhook",
"inputs": {
"subscribe": {
"method": "<method-type>",
"uri": "<api-subscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"retryPolicy": "<retry-behavior>",
"queries": { "<query-parameters>" },
"<other-action-specific-input-properties>"
},
"unsubscribe": {
"method": "<method-type>",
"uri": "<api-unsubscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"<other-action-specific-properties>"
},
},
"runAfter": {}
}
Beberapa nilai, seperti, <jenis metode>, tersedia untuk objek "subscribe"
dan "unsubscribe"
.
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<action-name> | String | Nama tindakan yang disediakan oleh konektor |
<method-type> | String | Metode HTTP yang digunakan untuk berlangganan atau berhenti berlangganan dari titik akhir: "GET", "PUT", "POST", "PATCH", atau "DELETE" |
<api-subscribe-URL> | String | URI yang digunakan untuk berlangganan API |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<api-unsubscribe-URL> | String | URI yang digunakan untuk berhenti berlangganan dari API |
<header-content> | Objek JSON | Header apa pun yang akan dikirim dalam permintaan Misalnya, untuk mengatur bahasa dan mengetik pada permintaan: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
<body-content> | Objek JSON | Konten pesan apa pun yang akan dikirim dalam permintaan |
<authentication-type> | Objek JSON | Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar. |
<retry-behavior> | Objek JSON | Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi. |
<query-parameters> | Objek JSON | Parameter kueri apa pun untuk disertakan dengan panggilan API Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan. |
<other-action-specific-input-properties> | Objek JSON | Properti input lain yang berlaku untuk tindakan khusus ini |
<other-action-specific-properties> | Objek JSON | Properti lain yang berlaku untuk tindakan khusus ini |
Anda juga dapat menentukan batasan pada tindakan ApiConnectionWebhook dengan cara yang sama seperti batas asinkron HTTP.
Menulis tindakan
Tindakan ini membuat output tunggal dari beberapa input, termasuk ekspresi. Output dan input dapat memiliki jenis apa pun yang didukung oleh Azure Logic Apps secara asli, seperti array, objek JSON, XML, dan biner. Anda kemudian dapat menggunakan output tindakan di tindakan lain.
"Compose": {
"type": "Compose",
"inputs": "<inputs-to-compose>",
"runAfter": {}
},
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<inputs-to-compose> | Mana pun | Input untuk membuat output tunggal |
Contoh 1
Definisi tindakan ini bergabung abcdefg
dengan spasi berikutnya dan nilai 1234
:
"Compose": {
"type": "Compose",
"inputs": "abcdefg 1234",
"runAfter": {}
},
Berikut adalah output yang dibuat oleh tindakan ini:
abcdefg 1234
Contoh 2
Definisi tindakan ini menggabungkan variabel string yang berisi abcdefg
dan variabel bilangan bulat yang berisi 1234
:
"Compose": {
"type": "Compose",
"inputs": "@{variables('myString')}@{variables('myInteger')}",
"runAfter": {}
},
Berikut adalah output yang dibuat oleh tindakan ini:
"abcdefg1234"
Jalankan tindakan Kode JavaScript
Tindakan ini menjalankan cuplikan kode JavaScript dan menampilkan hasilnya melalui token yang nantinya dapat direferensikan oleh tindakan selanjutnya dalam arus kerja.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "<JavaScript-code-snippet>",
"explicitDependencies": {
"actions": [ <preceding-actions> ],
"includeTrigger": true
}
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<JavaScript-code-snippet> | Bervariasi | Kode JavaScript yang ingin Anda jalankan. Untuk persyaratan kode dan informasi selengkapnya, lihat Menjalankan cuplikan kode dalam alur kerja. Dalam code atribut, cuplikan kode Anda dapat menggunakan objek baca-saja workflowContext sebagai input. Objek ini memiliki subproperti yang memberi akses pada kode Anda ke hasil dari pemicu dan tindakan sebelumnya di alur kerja Anda. Untuk informasi selengkapnya tentang workflowContext objek, lihat pemicu Referensi dan hasil tindakan menggunakan objek workflowContext. |
Diperlukan dalam beberapa kasus
explicitDependencies
Atribut menentukan bahwa Anda ingin secara eksplisit menyertakan hasil dari pemicu, tindakan sebelumnya, atau keduanya sebagai dependensi untuk cuplikan kode Anda. Untuk informasi selengkapnya tentang menambahkan dependensi ini, lihat Menambahkan dependensi sebagai parameter ke tindakan Kode Sebaris.
Untuk includeTrigger
atribut, Anda dapat menentukan true
atau false
nilai.
Nilai | Tipe | Deskripsi |
---|---|---|
<tindakan sebelumnya> | Array string | Array dengan nama tindakan dalam format JSON sebagai dependensi. Pastikan untuk menggunakan nama tindakan yang muncul dalam definisi alur kerja Anda tempat nama tindakan menggunakan garis bawah (_), bukan spasi (" "). |
Contoh 1
Tindakan ini menjalankan kode untuk mendapatkan nama alur kerja aplikasi logika Anda dan menampilkan teks "Halo dunia dari <logic-app-name>" sebagai hasilnya. Dalam contoh ini, kode mereferensikan nama alur kerja dengan mengakses workflowContext.workflow.name
properti melalui objek baca-sajaworkflowContext
. Untuk informasi selengkapnya tentang menggunakan workflowContext
objek, lihat pemicu Referensi dan hasil tindakan dalam kode Anda.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "var text = \"Hello world from \" + workflowContext.workflow.name;\r\n\r\nreturn text;"
},
"runAfter": {}
}
Contoh 2
Tindakan ini menjalankan kode dalam alur kerja aplikasi logika yang dipicu saat email baru masuk ke akun Outlook. Alur kerja ini juga menggunakan tindakan Office 365 Outlook Kirim email persetujuan yang meneruskan konten dari email yang diterima bersama dengan permintaan persetujuan.
Kode mengekstrak alamat email dari properti pesan email Body
, dan menampilkan alamat bersama dengan nilai properti SelectedOption
dari tindakan persetujuan. Tindakan secara eksplisit menyertakan tindakan Kirim email persetujuan sebagai dependensi pada objek actions
di dalam objek explicitDependencies
.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "var myResult = /(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\r\n\r\nvar email = workflowContext.trigger.outputs.body.Body;\r\n\r\nvar reply = workflowContext.actions.Send_approval_email.outputs.body.SelectedOption;\r\n\r\nreturn email.match(myResult) + \" - \" + reply;\r\n;",
"explicitDependencies": {
"actions": [
"Send_approval_email"
]
}
},
"runAfter": {}
}
Tindakan fungsi
Tindakan ini memanggil fungsi Azure yang dibuat sebelumnya.
"<Azure-function-name>": {
"type": "Function",
"inputs": {
"function": {
"id": "<Azure-function-ID>"
},
"method": "<method-type>",
"headers": { "<header-content>" },
"body": { "<body-content>" },
"queries": { "<query-parameters>" }
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<Azure-function-ID> | String | ID sumber daya untuk fungsi Azure yang ingin Anda panggil. Berikut adalah format untuk nilai ini: "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Web/sites/<Azure-function-app-name>/functions/<Azure-function-name>" |
<method-type> | String | Metode HTTP yang digunakan untuk memanggil fungsi: "GET", "PUT", "POST", "PATCH", atau "DELETE" Jika tidak ditentukan, defaultnya adalah metode "POST". |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<header-content> | Objek JSON | Header apa pun yang akan dikirim dengan panggilan Misalnya, untuk mengatur bahasa dan mengetik pada permintaan: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
<body-content> | Objek JSON | Konten pesan apa pun yang akan dikirim dalam permintaan |
<query-parameters> | Objek JSON | Parameter kueri apa pun untuk disertakan dengan panggilan API Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan. |
<other-action-specific-input-properties> | Objek JSON | Properti input lain yang berlaku untuk tindakan khusus ini |
<other-action-specific-properties> | Objek JSON | Properti lain yang berlaku untuk tindakan khusus ini |
Saat Anda menyimpan aplikasi logika, Azure Logic Apps melakukan pemeriksaan ini pada fungsi yang dirujuk:
Alur kerja Anda harus memiliki akses ke fungsi tersebut.
Alur kerja Anda hanya dapat menggunakan pemicu HTTP standar atau pemicu webhook JSON generik.
Azure Logic Apps mendapatkan dan menyimpan URL pemicu, yang digunakan saat runtime. Namun, jika ada operasi yang tidak mengesahkan URL cache, tindakan Fungsi gagal pada runtime bahasa umum. Untuk memperbaiki masalah ini, simpan lagi aplikasi logika sehingga aplikasi logika tersebut mendapatkan dan meng-cache URL pemicu lagi.
Fungsi ini tidak dapat memiliki rute yang ditentukan.
Hanya tingkat otorisasi "fungsi" dan "anonim" yang diizinkan.
Contoh
Definisi tindakan ini memanggil fungsi "GetProductID" yang dibuat sebelumnya:
"GetProductID": {
"type": "Function",
"inputs": {
"function": {
"id": "/subscriptions/<XXXXXXXXXXXXXXXXXXXX>/resourceGroups/myLogicAppResourceGroup/providers/Microsoft.Web/sites/InventoryChecker/functions/GetProductID"
},
"method": "POST",
"headers": {
"x-ms-date": "@utcnow()"
},
"body": {
"Product_ID": "@variables('ProductID')"
}
},
"runAfter": {}
}
Tindakan HTTP
Tindakan ini mengirim permintaan ke titik akhir HTTP atau HTTPS yang ditentukan dan memeriksa respons untuk menentukan apakah alur kerja berjalan. Untuk informasi selengkapnya, lihat Memanggil titik akhir layanan melalui HTTP atau HTTPS dari Azure Logic Apps.
"HTTP": {
"type": "Http",
"inputs": {
"method": "<method-type>",
"uri": "<HTTP-or-HTTPS-endpoint-URL>",
"headers": { "<header-content>" },
"queries": { "<query-parameters>" },
"body": "<body-content>",
"authentication": { "<authentication-type-and-property-values>" },
"retryPolicy": {
"type": "<retry-behavior>"
},
},
"runAfter": {}
}
Diperlukan
Properti | Nilai | Tipe | Deskripsi |
---|---|---|---|
method |
<method-type> | String | Metode yang digunakan untuk mengirim permintaan keluar: "GET", "PUT", "POST", "PATCH", atau "DELETE" |
uri |
<HTTP-or-HTTPS-endpoint-URL> | String | URL titik akhir HTTP atau HTTPS tempat Anda ingin mengirim permintaan keluar. Ukuran string maksimum: 2 KB Untuk layanan atau sumber daya Azure, sintaks URI ini menyertakan ID sumber daya dan jalur ke sumber daya yang ingin Anda akses. |
Opsional
Properti | Nilai | Tipe | Deskripsi |
---|---|---|---|
headers |
<header-content> | Objek JSON | Header apa pun yang perlu Anda sertakan dengan permintaan Misalnya, untuk mengatur bahasa dan jenis: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
queries |
<query-parameters> | Objek JSON | Parameter kueri apa pun yang perlu Anda gunakan dalam permintaan Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan. |
body |
<body-content> | Objek JSON | Konten pesan untuk dikirim sebagai payload dengan permintaan |
authentication |
<authentication-type-and-property-values> | Objek JSON | Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar. Selain Scheduler, authority properti didukung. Saat tidak ditentukan, nilai defaultnya adalah https://management.azure.com/ , tapi Anda dapat menggunakan nilai yang berbeda. |
retryPolicy > type |
<retry-behavior> | Objek JSON | Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi. |
<other-action-specific-input-properties> | <input-property> | Objek JSON | Properti input lain yang berlaku untuk tindakan khusus ini |
<other-action-specific-properties> | <property-value> | Objek JSON | Properti lain yang berlaku untuk tindakan khusus ini |
Contoh
Definisi tindakan ini mendapatkan berita terbaru dengan mengirim permintaan ke titik akhir yang ditentukan:
"HTTP": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://mynews.example.com/latest"
}
}
Gabung dalam tindakan
Tindakan ini membuat string dari semua item dalam array dan memisahkan item tersebut dengan karakter pemisah tertentu.
"Join": {
"type": "Join",
"inputs": {
"from": <array>,
"joinWith": "<delimiter>"
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<array> | Array | Array atau ekspresi yang menyediakan item sumber. Jika Anda menentukan ekspresi, sertakan ekspresi tersebut dengan tanda kutip ganda. |
<delimiter> | String karakter tunggal | Karakter yang memisahkan setiap item dalam string |
Contoh
Misalkan Anda memiliki variabel "myIntegerArray" yang dibuat sebelumnya yang berisi array bilangan bulat ini:
[1,2,3,4]
Definisi tindakan ini mendapatkan nilai dari variabel dengan menggunakan variables()
fungsi dalam ekspresi dan membuat string ini dengan nilai-nilai tersebut, yang dipisahkan dengan koma: "1,2,3,4"
"Join": {
"type": "Join",
"inputs": {
"from": "@variables('myIntegerArray')",
"joinWith": ","
},
"runAfter": {}
}
Mengurai tindakan JSON
Tindakan ini membuat bidang atau token yang mudah digunakan dari properti dalam konten JSON. Anda kemudian dapat mengakses properti tersebut di aplikasi logika Anda dengan menggunakan token sebagai gantinya. Misalnya, saat Anda ingin menggunakan output JSON dari layanan seperti Microsoft Azure Service Bus dan Microsoft Azure Cosmos DB, Anda dapat menyertakan tindakan ini di aplikasi logika Anda sehingga Anda dapat dengan lebih mudah mereferensikan data dalam output tersebut.
"Parse_JSON": {
"type": "ParseJson",
"inputs": {
"content": "<JSON-source>",
"schema": { "<JSON-schema>" }
},
"runAfter": {}
},
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<JSON-source> | Objek JSON | Konten JSON yang ingin Anda uraikan |
<JSON-schema> | Objek JSON | Skema JSON yang menggambarkan konten JSON yang mendasarinya, yang digunakan tindakan untuk mengurai konten JSON sumber. Tips: Di perancang alur kerja, Anda dapat memberikan skema atau menyediakan payload sampel sehingga tindakan dapat menghasilkan skema. |
Contoh
Definisi tindakan ini membuat token ini yang bisa Anda gunakan di alur kerja Anda tapi hanya dalam tindakan yang berjalan mengikuti tindakan Urai JSON:
FirstName
, LastName
, dan Email
"Parse_JSON": {
"type": "ParseJson",
"inputs": {
"content": {
"Member": {
"Email": "Sophie.Owen@contoso.com",
"FirstName": "Sophie",
"LastName": "Owen"
}
},
"schema": {
"type": "object",
"properties": {
"Member": {
"type": "object",
"properties": {
"Email": {
"type": "string"
},
"FirstName": {
"type": "string"
},
"LastName": {
"type": "string"
}
}
}
}
}
},
"runAfter": { }
},
Dalam contoh ini, properti "konten" menentukan konten JSON agar tindakan diurai. Anda juga dapat menyediakan konten JSON ini sebagai contoh payload untuk menghasilkan skema.
"content": {
"Member": {
"FirstName": "Sophie",
"LastName": "Owen",
"Email": "Sophie.Owen@contoso.com"
}
},
Properti "skema" menentukan skema JSON yang digunakan untuk menggambarkan konten JSON:
"schema": {
"type": "object",
"properties": {
"Member": {
"type": "object",
"properties": {
"FirstName": {
"type": "string"
},
"LastName": {
"type": "string"
},
"Email": {
"type": "string"
}
}
}
}
}
Tindakan kueri
Tindakan ini membuat array dari item dalam array lain berdasarkan kondisi atau filter yang ditentukan.
"Filter_array": {
"type": "Query",
"inputs": {
"from": <array>,
"where": "<condition-or-filter>"
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<array> | Array | Array atau ekspresi yang menyediakan item sumber. Jika Anda menentukan ekspresi, sertakan ekspresi tersebut dengan tanda kutip ganda. |
<condition-or-filter> | String | Kondisi yang digunakan untuk memfilter item dalam array sumber Catatan: Jika tidak ada nilai yang memenuhi kondisi, tindakan akan membuat array kosong. |
Contoh
Definisi tindakan ini membuat array yang memiliki nilai lebih besar dari nilai yang ditentukan, yaitu dua:
"Filter_array": {
"type": "Query",
"inputs": {
"from": [ 1, 3, 0, 5, 4, 2 ],
"where": "@greater(item(), 2)"
}
}
Tindakan respons
Tindakan ini membuat payload untuk respons terhadap permintaan HTTP.
"Response" {
"type": "Response",
"kind": "http",
"inputs": {
"statusCode": 200,
"headers": { <response-headers> },
"body": { <response-body> }
},
"runAfter": {}
},
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<response-status-code> | Bilangan bulat | Kode status HTTP yang dikirim ke permintaan masuk. Kode default adalah "200 OK", tapi kode dapat menjadi kode status yang valid yang dimulai dengan 2xx, 4xx, atau 5xx, tapi tidak dengan 3xxx. |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<response-headers> | Objek JSON | Satu atau beberapa header untuk disertakan dengan respons |
<response-body> | Bermacam-macam | Badan respons, yang dapat menjadi string, objek JavaScript Object Notation, atau bahkan konten biner dari tindakan sebelumnya |
Contoh
Definisi tindakan ini membuat respons terhadap permintaan HTTP dengan kode status, isi pesan, dan header pesan yang ditentukan:
"Response": {
"type": "Response",
"inputs": {
"statusCode": 200,
"body": {
"ProductID": 0,
"Description": "Organic Apples"
},
"headers": {
"x-ms-date": "@utcnow()",
"content-type": "application/json"
}
},
"runAfter": {}
}
Pembatasan
Tidak seperti tindakan lain, tindakan Respons memiliki pembatasan khusus:
Alur kerja Anda hanya bisa menggunakan tindakan Respons saat alur kerja dimulai dengan pemicu permintaan HTTP, yang berarti alur kerja Anda harus dipicu oleh permintaan HTTP.
Alur kerja Anda dapat menggunakan tindakan Respons di mana saja kecuali di dalam perulangan Foreach, perulangan Until, termasuk perulangan berurutan, dan cabang paralel.
Permintaan asli hanya mendapatkan respons alur kerja Anda saat semua tindakan yang diperlukan oleh tindakan Respons selesai dalam batas dari batas waktu HTTP.
Namun, jika alur kerja Anda memanggil aplikasi logika lain sebagai alur kerja bertumpuk, alur kerja induk menunggu hingga alur kerja bertumpuk selesai, berapa pun waktu berlalu sebelum alur kerja bertumpuk selesai.
Saat alur kerja Anda menggunakan tindakan Respons dan pola respons sinkron, alur kerja tidak bisa juga menggunakan perintah splitOn dalam definisi pemicu karena perintah tersebut membuat beberapa eksekusi. Periksa kasus ini saat metode PUT digunakan, dan jika benar, tampilkan respons "permintaan buruk".
Jika tidak, jika alur kerja Anda menggunakan perintah splitOn dan tindakan Respons, alur kerja berjalan secara asinkron dan segera menampilkan respons "202 DITERIMA".
Saat eksekusi alur kerja Anda mencapai tindakan Respons, tapi permintaan masuk telah menerima respons, tindakan Respons ditandai sebagai "Gagal" karena konflik. Dan sebagai hasilnya, eksekusi aplikasi logika Anda juga ditandai dengan status "Gagal".
Pilih tindakan
Tindakan ini membuat array dengan objek JavaScript Object Notation dengan mengubah item dari array lain berdasarkan peta yang ditentukan. Array output dan array sumber selalu memiliki jumlah item yang sama. Meskipun Anda tidak dapat mengubah jumlah objek dalam array output, Anda dapat menambahkan atau menghapus properti dan nilainya di seluruh objek tersebut. select
Properti menentukan setidaknya satu pasangan kunci-nilai yang menentukan peta untuk mengubah item dalam array sumber. Pasangan kunci-nilai mewakili properti dan nilainya di semua objek dalam array output.
"Select": {
"type": "Select",
"inputs": {
"from": <array>,
"select": {
"<key-name>": "<expression>",
"<key-name>": "<expression>"
}
},
"runAfter": {}
},
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<array> | Array | Array atau ekspresi yang menyediakan item sumber. Pastikan Anda mengapit ekspresi dengan tanda kutip ganda. Catatan: Jika array sumber kosong, tindakan akan membuat array kosong. |
<nama kunci> | String | Nama properti yang ditetapkan ke hasil dari <ekspresi> Untuk menambahkan properti baru di semua objek dalam array output, berikan <key-name> untuk properti itu dan <ekspresi> untuk nilai propertinya. Untuk menghapus properti dari semua objek dalam array, hilangkan <key-name>untuk properti itu. |
<expression> | String | Ekspresi yang mengubah item dalam array sumber dan menetapkan hasil ke <key-name> |
Tindakan Pilih membuat array sebagai output, sehingga tindakan apa pun yang ingin menggunakan output ini harus menerima array, atau Anda harus mengonversi array ke dalam jenis yang diterima tindakan konsumen. Misalnya, untuk mengonversi array output menjadi string, Anda dapat meneruskan array tersebut ke tindakan Tulis, lalu mereferensikan output dari tindakan Tulis di tindakan Anda yang lain.
Contoh
Definisi tindakan ini membuat array objek JavaScript Object Notation dari array bilangan bulat. Tindakan akan diiterasi melalui array sumber, mendapatkan setiap nilai bilangan bulat dengan menggunakan @item()
ekspresi, dan menetapkan setiap nilai ke properti "number
" di setiap objek JSON:
"Select": {
"type": "Select",
"inputs": {
"from": [ 1, 2, 3 ],
"select": {
"number": "@item()"
}
},
"runAfter": {}
},
Berikut adalah array yang dibuat oleh tindakan ini:
[ { "number": 1 }, { "number": 2 }, { "number": 3 } ]
Untuk menggunakan output array ini di tindakan lain, berikan output ini ke dalam tindakan Tulis:
"Compose": {
"type": "Compose",
"inputs": "@body('Select')",
"runAfter": {
"Select": [ "Succeeded" ]
}
},
Anda kemudian bisa menggunakan output dari tindakan Tulis di tindakan Anda yang lain, misalnya, tindakan Office 365 Outlook - Kirim tindakan email:
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "@{outputs('Compose')}",
"Subject": "Output array from Select and Compose actions",
"To": "<your-email@domain>"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {
"Compose": [ "Succeeded" ]
}
},
Tindakan pada tabel
Tindakan ini membuat tabel CSV atau HTML dari array. Untuk array dengan objek JavaScript Object Notation, tindakan ini secara otomatis membuat header kolom dari nama properti objek. Untuk array dengan jenis data lain, Anda harus menentukan header dan nilai kolom. Misalnya, array ini menyertakan properti "ID" dan "Product_Name" yang dapat digunakan tindakan ini untuk nama header kolom:
[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]
"Create_<CSV | HTML>_table": {
"type": "Table",
"inputs": {
"format": "<CSV | HTML>",
"from": <array>,
"columns": [
{
"header": "<column-name>",
"value": "<column-value>"
},
{
"header": "<column-name>",
"value": "<column-value>"
}
]
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<CSV atau HTML> | String | Format untuk tabel yang ingin Anda buat |
<array> | Array | Array atau ekspresi yang menyediakan item sumber untuk tabel Catatan: Jika array sumber kosong, tindakan akan membuat tabel kosong. |
Opsional
Untuk menentukan atau mengustomisasi header dan nilai kolom, gunakan columns
array. Saat header-value
pasangan memiliki nama header yang sama, nilainya muncul di kolom yang sama di bawah nama header tersebut. Jika tidak, setiap header unik menentukan kolom unik.
Nilai | Tipe | Deskripsi |
---|---|---|
<column-name> | String | Nama header untuk kolom |
<column-value> | Mana pun | Nilai dalam kolom tersebut |
Contoh 1
Misalkan Anda memiliki variabel "myItemArray" yang dibuat sebelumnya yang saat ini berisi array ini:
[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]
Definisi tindakan ini membuat tabel CSV dari variabel "myItemArray". Ekspresi yang digunakan oleh from
properti mendapatkan array dari "myItemArray" dengan menggunakan variables()
fungsi:
"Create_CSV_table": {
"type": "Table",
"inputs": {
"format": "CSV",
"from": "@variables('myItemArray')"
},
"runAfter": {}
}
Berikut adalah tabel CSV yang dibuat tindakan ini:
ID,Product_Name
0,Apples
1,Oranges
Contoh 2
Definisi tindakan ini membuat tabel HTML dari variabel "myItemArray". Ekspresi yang digunakan oleh from
properti mendapatkan array dari "myItemArray" dengan menggunakan variables()
fungsi:
"Create_HTML_table": {
"type": "Table",
"inputs": {
"format": "HTML",
"from": "@variables('myItemArray')"
},
"runAfter": {}
}
Berikut adalah tabel HTML yang dibuat tindakan ini:
ID | Nama_Produk |
---|---|
0 | Apel |
1 | Jeruk |
Contoh 3
Definisi tindakan ini membuat tabel HTML dari variabel "myItemArray". Namun, contoh ini mengambil alih nama header kolom default dengan "Stock_ID" dan "Deskripsi", dan menambahkan kata "Organik" ke nilai di kolom "Deskripsi".
"Create_HTML_table": {
"type": "Table",
"inputs": {
"format": "HTML",
"from": "@variables('myItemArray')",
"columns": [
{
"header": "Stock_ID",
"value": "@item().ID"
},
{
"header": "Description",
"value": "@concat('Organic ', item().Product_Name)"
}
]
},
"runAfter": {}
},
Berikut adalah tabel HTML yang dibuat tindakan ini:
Stock_ID | Deskripsi |
---|---|
0 | Apel Organik |
1 | Jeruk Organik |
Hentikan tindakan
Tindakan ini menghentikan eksekusi instans alur kerja, membatalkan tindakan apa pun yang sedang berlangsung, melompati tindakan yang tersisa, dan menampilkan status yang ditentukan. Misalnya, Anda dapat menggunakan tindakan Hentikan saat aplikasi logika Anda harus keluar sepenuhnya dari status kesalahan. Tindakan ini tidak memengaruhi tindakan yang sudah selesai dan tidak dapat muncul di dalam perulangan Foreach dan Until, termasuk perulangan berurutan.
"Terminate": {
"type": "Terminate",
"inputs": {
"runStatus": "<status>",
"runError": {
"code": "<error-code-or-name>",
"message": "<error-message>"
}
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<status> | String | Status yang akan ditampilkan untuk dijalankan: "Gagal", "Dibatalkan", atau "Berhasil" |
Opsional
Properti untuk objek "runStatus" hanya berlaku saat properti "runStatus" disetel ke status "Gagal".
Nilai | Tipe | Deskripsi |
---|---|---|
<error-code-or-name> | String | Kode atau nama untuk kesalahan |
<error-message> | String | Pesan atau teks yang menjelaskan kesalahan dan tindakan apa pun yang dapat dilakukan pengguna aplikasi |
Contoh
Definisi tindakan ini menghentikan eksekusi alur kerja, menyetel status jalankan menjadi "Gagal", dan menampilkan status, kode kesalahan, dan pesan kesalahan:
"Terminate": {
"type": "Terminate",
"inputs": {
"runStatus": "Failed",
"runError": {
"code": "Unexpected response",
"message": "The service received an unexpected response. Please try again."
}
},
"runAfter": {}
}
Tindakan tunggu
Tindakan ini menjeda eksekusi alur kerja untuk interval yang ditentukan atau hingga waktu yang ditentukan, tapi tidak keduanya.
Interval yang ditentukan
"Delay": {
"type": "Wait",
"inputs": {
"interval": {
"count": <number-of-units>,
"unit": "<interval>"
}
},
"runAfter": {}
},
Waktu yang ditentukan
"Delay_until": {
"type": "Wait",
"inputs": {
"until": {
"timestamp": "<date-time-stamp>"
}
},
"runAfter": {}
},
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<number-of-units> | Bilangan bulat | Untuk tindakan Tunda, jumlah unit yang menunggu |
<interval> | String | Untuk tindakan Tunda, interval untuk menunggu: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan" |
<date-time-stamp> | String | Untuk tindakan Tunda Hingga, tanggal dan waktu untuk melanjutkan eksekusi. Nilai ini harus menggunakan format waktu tanggal UTC. |
Contoh 1
Definisi tindakan ini menjeda alur kerja selama 15 menit:
"Delay": {
"type": "Wait",
"inputs": {
"interval": {
"count": 15,
"unit": "Minute"
}
},
"runAfter": {}
},
Contoh 2
Definisi tindakan ini menjeda alur kerja hingga waktu yang ditentukan:
"Delay_until": {
"type": "Wait",
"inputs": {
"until": {
"timestamp": "2017-10-01T00:00:00Z"
}
},
"runAfter": {}
},
Tindakan alur kerja
Tindakan ini memanggil aplikasi logika lain yang dibuat sebelumnya, yang berarti Anda dapat menyertakan dan menggunakan kembali alur kerja aplikasi logika lainnya. Anda juga dapat menggunakan output dari elemen anak atau aplikasi logika bertumpukdalam tindakan yang mengikuti aplikasi logika bertumpuk, asalkan aplikasi logika elemen anak menampilkan respons.
Azure Logic Apps memeriksa akses ke pemicu yang ingin Anda panggil, jadi pastikan Anda dapat mengakses pemicu tersebut. Selain itu, aplikasi logika bertumpuk harus memenuhi kriteria berikut:
Pemicu membuat aplikasi logika bertumpuk dapat dipanggil, seperti pemicu Permintaan atau HTTP
Langganan Azure yang sama dengan aplikasi logika induk Anda
Untuk menggunakan output dari aplikasi logika bertumpuk di aplikasi logika induk Anda, aplikasi logika bertumpuk harus memiliki tindakan Respons
"<nested-logic-app-name>": {
"type": "Workflow",
"inputs": {
"body": { "<body-content" },
"headers": { "<header-content>" },
"host": {
"triggerName": "<trigger-name>",
"workflow": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Logic/<nested-logic-app-name>"
}
}
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<nested-logic-app-name> | String | Nama untuk aplikasi logika yang ingin Anda panggil |
<trigger-name> | String | Nama pemicu di aplikasi logika bertumpuk yang ingin Anda panggil |
<Azure-subscription-ID> | String | ID langganan Azure untuk aplikasi logika bertumpuk |
<Grup-sumber daya-Azure> | String | Nama grup sumber daya Azure untuk aplikasi logika bertumpuk |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<header-content> | Objek JSON | Header apa pun yang akan dikirim dengan panggilan |
<body-content> | Objek JSON | Konten pesan apa pun yang akan dikirim dengan panggilan |
Output
Output tindakan ini bervariasi berdasarkan tindakan Respons aplikasi logika bertumpuk. Jika aplikasi logika bertumpuk tidak menyertakan tindakan Respons, output kosong.
Contoh
Setelah tindakan "Start_search" berhasil diselesaikan, definisi tindakan alur kerja ini memanggil aplikasi logika lain bernama "Get_product_information", yang meneruskan input yang ditentukan:
"actions": {
"Start_search": { <action-definition> },
"Get_product_information": {
"type": "Workflow",
"inputs": {
"body": {
"ProductID": "24601",
},
"host": {
"id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/InventoryManager-RG/providers/Microsoft.Logic/Get_product_information",
"triggerName": "Find_product"
},
"headers": {
"content-type": "application/json"
}
},
"runAfter": {
"Start_search": [ "Succeeded" ]
}
}
},
Mengontrol detail tindakan alur kerja
Aksi Foreach
TIndakan perulangan ini berulang melalui array dan melakukan tindakan pada setiap item array. Secara default, perulangan "untuk setiap" berjalan secara paralel hingga jumlah maksimum perulangan. Untuk maksimum ini, lihat Batas dan konfigurasi. Pelajari cara membuat perulangan "untuk setiap".
"For_each": {
"type": "Foreach",
"actions": {
"<action-1>": { "<action-definition-1>" },
"<action-2>": { "<action-definition-2>" }
},
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": <count>
}
},
"operationOptions": "<operation-option>"
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<action-1...n> | String | Nama tindakan yang berjalan pada setiap item array |
<action-definition-1...n> | Objek JSON | Definisi tindakan yang berjalan |
<for-each-expression> | String | Ekspresi yang mereferensikan setiap item dalam array yang ditentukan |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<count> | Bilangan bulat | Secara default, iterasi perulangan "untuk setiap" berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi perulangan "untuk masing-masing". |
<operation-option> | String | Untuk menjalankan perulangan "untuk masing-masing" secara berurutan, dan bukan secara paralel, atur salah satu, <operation-option> menjadi Sequential atur <jumlah> menjadi 1 , tapi jangan atur keduanya sekaligus. Untuk informasi selengkapnya, lihat Menjalankan perulangan "untuk setiap" secara berurutan. |
Contoh
Perulangan "untuk setiap" ini mengirim email untuk setiap item dalam array, yang berisi lampiran dari email masuk. Perulangan mengirim email, termasuk lampiran, kepada orang yang meninjau lampiran.
"For_each": {
"type": "Foreach",
"actions": {
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "@base64ToString(items('For_each')?['Content'])",
"Subject": "Review attachment",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"id": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
},
"foreach": "@triggerBody()?['Attachments']",
"runAfter": {}
}
Untuk menentukan hanya array yang diteruskan sebagai output dari pemicu, ekspresi ini mendapatkan array <array-name> dari isi pemicu. Untuk menghindari kegagalan jika array tidak ada, ekspresi menggunakan ?
operator:
@triggerBody()?['<array-name>']
Tindakan if
Tindakan ini, yang merupakan pernyataan kondisional, mengevaluasi ekspresi yang mewakili kondisi dan menjalankan cabang yang berbeda berdasarkan apakah kondisinya benar atau salah. Jika kondisinya benar, kondisi ditandai dengan status "Berhasil". Pelajari cara membuat pernyataan kondisional.
"Condition": {
"type": "If",
"expression": { "<condition>" },
"actions": {
"<action-1>": { "<action-definition>" }
},
"else": {
"actions": {
"<action-2>": { "<action-definition" }
}
},
"runAfter": {}
}
Nilai | Tipe | Deskripsi |
---|---|---|
<kondisi> | Objek JSON | Kondisi, yang dapat menjadi ekspresi, untuk mengevaluasi |
<action-1> | Objek JSON | Tindakan yang dijalankan saat <kondisi> bernilai benar |
<action-definition> | Objek JSON | Definisi untuk tindakan |
<action-2> | Objek JSON | Tindakan yang dijalankan saat <kondisi> bernilai salah |
Tindakan dalam objek actions
atau else
mendapatkan status ini:
- "Berhasil" saat status berjalan dan berhasil
- "Gagal" saat status berjalan dan gagal
- "Dilompati" saat masing-masing cabang tidak berjalan
Contoh
Kondisi ini menentukan bahwa saat variabel bilangan bulat memiliki nilai yang lebih besar dari nol, alur kerja akan memeriksa situs web. Jika variabel nol atau kurang, alur kerja akan memeriksa situs web yang berbeda.
"Condition": {
"type": "If",
"expression": {
"and": [ {
"greater": [ "@variables('myIntegerVariable')", 0 ]
} ]
},
"actions": {
"HTTP - Check this website": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://this-url"
},
"runAfter": {}
}
},
"else": {
"actions": {
"HTTP - Check this other website": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://this-other-url"
},
"runAfter": {}
}
}
},
"runAfter": {}
}
Bagaimana kondisi menggunakan ekspresi
Berikut adalah beberapa contoh yang memperlihatkan bagaimana Anda bisa menggunakan ekspresi dalam kondisi:
JSON | Hasil |
---|---|
"expression": "@parameters('<hasSpecialAction>')" | Hanya untuk ungkapan bersyarat, kondisi melewati untuk nilai apa pun yang dievaluasi ke true. Untuk mengonversi jenis lain ke Boolean, gunakan fungsi ini: empty() atau equals() . |
"expression": "@greater(actions('<action>').output.value, parameters('<threshold>'))" | Untuk fungsi perbandingan, tindakannya hanya berjalan ketika output dari <tindakan> melebihi nilai <ambang>. |
"expression": "@or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100))" | Untuk fungsi logika dan membuat ekspresi Boolean berlapis, tindakannya berjalan saat output dari <action> melebihi nilai <ambang> atau di bawah 100. |
"expression": "@equals(length(actions('<action>').outputs.errors), 0)" | Anda bisa menggunakan fungsi array untuk memeriksa apakah array memiliki item apa pun. Tindakan berjalan saat errors array kosong. |
Tindakan cakupan
Tindakan ini secara logis mengelompokkan tindakan ke dalam cakupan, yang mendapatkan statusnya sendiri setelah tindakan dalam cakupan tersebut selesai berjalan. Anda kemudian dapat menggunakan status cakupan untuk menentukan apakah tindakan lain berjalan. Pelajari cara membuat cakupan.
"Scope": {
"type": "Scope",
"actions": {
"<inner-action-1>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
},
"<inner-action-2>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
}
}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<inner-action-1...n> | Objek JSON | Satu atau beberapa tindakan yang berjalan di dalam cakupan |
<action-inputs> | Objek JSON | Input untuk setiap tindakan |
Tindakan alihkan
Tindakan ini, juga dikenal sebagai pernyataan alihkan, mengatur tindakan lain ke dalam kasus, dan menetapkan nilai untuk setiap kasus, kecuali untuk kasus default jika ada. Saat alur kerja Anda berjalan, tindakan Alihkan membandingkan nilai dari ekspresi, objek, atau token terhadap nilai yang ditentukan untuk setiap kasus. Jika tindakan Alihkan menemukan kasus yang cocok, alur kerja Anda hanya menjalankan tindakan untuk kasus tersebut. Setiap kali tindakan Alihkan berjalan, hanya ada satu kasus yang cocok atau tidak ada kecocokan. Jika tidak ada kecocokan, tindakan Alihkan menjalankan tindakan default. Pelajari cara membuat pernyataan alihkan.
"Switch": {
"type": "Switch",
"expression": "<expression-object-or-token>",
"cases": {
"Case": {
"actions": {
"<action-name>": { "<action-definition>" }
},
"case": "<matching-value>"
},
"Case_2": {
"actions": {
"<action-name>": { "<action-definition>" }
},
"case": "<matching-value>"
}
},
"default": {
"actions": {
"<default-action-name>": { "<default-action-definition>" }
}
},
"runAfter": {}
}
Diperlukan
Nilai | Tipe | Deskripsi |
---|---|---|
<expression-object-or-token> | Bervariasi | Ekspresi, objek JSON, atau token untuk dievaluasi |
<action-name> | String | Nama tindakan yang akan dijalankan untuk kasus yang cocok |
<action-definition> | Objek JSON | Definisi untuk tindakan yang dijalankan untuk kasus yang cocok |
<matching-value> | Bervariasi | Nilai untuk dibandingkan dengan hasil yang dievaluasi |
Opsional
Nilai | Tipe | Deskripsi |
---|---|---|
<default-action-name> | String | Nama tindakan default yang dijalankan saat tidak ada kasus yang cocok |
<default-action-definition> | Objek JSON | Definisi untuk tindakan yang dijalankan saat tidak ada kasus yang cocok |
Contoh
Definisi tindakan ini mengevaluasi apakah orang yang menanggapi email permintaan persetujuan memilih opsi "Setuju" atau opsi "Tolak". Berdasarkan pilihan ini, tindakan Alihkan menjalankan tindakan untuk kasus yang cocok, yaitu mengirim email lain ke penanggap tapi dengan kata-kata yang berbeda dalam setiap kasus.
"Switch": {
"type": "Switch",
"expression": "@body('Send_approval_email')?['SelectedOption']",
"cases": {
"Case": {
"actions": {
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"Body": "Thank you for your approval.",
"Subject": "Response received",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
},
"case": "Approve"
},
"Case_2": {
"actions": {
"Send_an_email_2": {
"type": "ApiConnection",
"inputs": {
"Body": "Thank you for your response.",
"Subject": "Response received",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
},
"case": "Reject"
}
},
"default": {
"actions": {
"Send_an_email_3": {
"type": "ApiConnection",
"inputs": {
"Body": "Please respond with either 'Approve' or 'Reject'.",
"Subject": "Please respond",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
},
"runAfter": {
"Send_approval_email": [
"Succeeded"
]
}
}
Tindakan Until
Tindakan perulangan ini memuat tindakan yang berjalan hingga kondisi yang ditentukan benar. Perulangan memeriksa kondisi sebagai langkah terakhir setelah semua tindakan lain berjalan. Anda dapat menyertakan lebih dari satu tindakan dalam "actions"
objek, dan tindakan harus menentukan setidaknya satu batas. Pelajari cara membuat perulangan "until".
"Until": {
"type": "Until",
"actions": {
"<action-name>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
},
"<action-name>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
}
},
"expression": "<condition>",
"limit": {
"count": <loop-count>,
"timeout": "<loop-timeout>"
},
"runAfter": {}
}
Nilai | Tipe | Deskripsi |
---|---|---|
<action-name> | String | Nama untuk tindakan yang ingin Anda jalankan di dalam perulangan |
<action-type> | String | Jenis tindakan yang ingin Anda jalankan |
<action-inputs> | Bermacam-macam | Input untuk aksi yang akan dijalankan |
<kondisi> | String | Kondisi atau ekspresi untuk mengevaluasi setelah semua tindakan dalam perulangan selesai berjalan |
<loop-count> | Bilangan bulat | Batas pada jumlah perulangan terbanyak yang dapat dijalankan tindakan. Untuk informasi selengkapnya tentang batas default dan batas maksimum, lihat Batas dan konfigurasi untuk Microsoft Azure Logic Apps. |
<loop-timeout> | String | Batas waktu terlama yang dapat dijalankan perulangan. Nilai default timeout adalah PT1H , yang merupakan format ISO 8601 yang diperlukan. |
Catatan
Jika ekspresi bergantung pada output dari tindakan apa pun dalam perulangan Hingga, pastikan Anda memperhitungkan kegagalan apa pun yang dihasilkan dari tindakan tersebut.
Contoh
Definisi tindakan permintaan ini mengirimkan permintaan HTTP ke URL yang ditentukan hingga salah satu kondisi ini terpenuhi:
- Permintaan mendapatkan respons dengan kode status "200 OK".
- Perulangan telah berjalan 60 kali.
- Perulangan telah berjalan selama satu jam.
"Run_until_loop_succeeds_or_expires": {
"type": "Until",
"actions": {
"HTTP": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://myurl"
},
"runAfter": {}
}
},
"expression": "@equals(outputs('HTTP')['statusCode'], 200)",
"limit": {
"count": 60,
"timeout": "PT1H"
},
"runAfter": {}
}
Webhook dan langganan
Pemicu dan tindakan berbasis Webhook tidak secara teratur memeriksa titik akhir, tapi tunggu peristiwa atau data tertentu di titik akhir tersebut. Pemicu dan tindakan ini berlangganan titik akhir dengan menyediakan URL panggilan balik tempat titik akhir dapat mengirim respons.
Panggilan subscribe
terjadi saat alur kerja berubah dengan cara apa pun, misalnya, saat informasi masuk diperbarui, atau saat parameter input berubah untuk pemicu atau tindakan. Panggilan ini menggunakan parameter yang sama dengan tindakan HTTP standar.
unsubscribe
Panggilan secara otomatis terjadi saat operasi membuat pemicu atau tindakan tidak valid, misalnya:
- Menghapus atau menonaktifkan pemicu.
- Menghapus atau menonaktifkan alur kerja.
- Menghapus atau menonaktifkan langganan.
Untuk mendukung panggilan ini, ekspresi @listCallbackUrl()
menampilkan "URL panggilan balik" unik untuk pemicu atau tindakan. URL ini menunjukkan pengidentifikasi unik untuk titik akhir yang menggunakan REST API layanan. Parameter untuk fungsi ini sama dengan pemicu atau tindakan webhook.
Mengubah durasi asinkron
Untuk pemicu dan tindakan, Anda dapat membatasi durasi pola asinkron ke interval waktu tertentu dengan menambahkan limit.timeout
properti. Dengan demikian, jika tindakan belum selesai saat interval berakhir, status tindakan ditandai Cancelled
dengan ActionTimedOut
kode. timeout
Properti ini menggunakan format ISO 8601.
"<trigger-or-action-name>": {
"type": "Workflow | Webhook | Http | ApiConnectionWebhook | ApiConnection",
"inputs": {},
"limit": {
"timeout": "PT10S"
},
"runAfter": {}
}
Pengaturan konfigurasi runtime bahasa umum
Anda dapat mengubah perilaku runtime bahasa umum default untuk pemicu dan tindakan dengan menambahkan properti runtimeConfiguration
ini ke definisi pemicu atau tindakan.
Properti | Tipe | Deskripsi | Pemicu atau tindakan |
---|---|---|---|
runtimeConfiguration.concurrency.runs |
Bilangan bulat | Ubah batas default pada jumlah instans alur kerja yang dapat berjalan secara bersamaan (secara bersamaan atau paralel). Menyesuaikan nilai ini dapat membantu membatasi jumlah permintaan yang diterima sistem backend. Menyetel runs properti ke 1 berfungsi dengan cara yang sama seperti menyetel operationOptions properti ke SingleInstance . Anda dapat menyetel properti, tapi tidak keduanya. Untuk mengubah batas default, lihat Mengubah konkurensi pemicu atau Instans pemicu secara berurutan. |
Semua pemicu |
runtimeConfiguration.concurrency.maximumWaitingRuns |
Bilangan bulat | Ubah batas default jumlah instans alur kerja yang harus menunggu untuk dijalankan saat aplikasi logika Anda sudah menjalankan instans konkuren maksimum. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu. |
Semua pemicu |
runtimeConfiguration.concurrency.repetitions |
Bilangan bulat | Ubah batas default pada jumlah iterasi perulangan “untuk setiap” yang dapat berjalan secara bersamaan (secara bersamaan atau paralel). Menyetel repetitions properti ke 1 berfungsi dengan cara yang sama seperti menyetel operationOptions properti ke SingleInstance . Anda dapat menyetel properti, tapi tidak keduanya. Untuk mengubah batas default, lihat Mengubah konkurensi "untuk setiap" atau Menjalankan perulangan "untuk setiap" secara berurutan. |
Tindakan: Foreach |
runtimeConfiguration.paginationPolicy.minimumItemCount |
Bilangan bulat | Untuk tindakan tertentu yang mendukung dan mengaktifkan pagination, nilai ini menentukan jumlah minimum hasil yang akan diambil. Untuk mengaktifkan pagination, lihat Mendapatkan data, item, atau hasil massal dengan menggunakan pagination |
Tindakan: Bervariasi |
runtimeConfiguration.secureData.properties |
Array | Pada banyak pemicu dan tindakan, pengaturan ini menyembunyikan input, output, atau keduanya dari riwayat jalankan aplikasi logika. Untuk mempelajari selengkapnya tentang melindungi data ini, lihat Menyembunyikan input dan output dari riwayat jalankan. |
Sebagian besar pemicu dan tindakan |
runtimeConfiguration.staticResult |
Objek JSON | Untuk tindakan yang mendukung dan mengaktifkan pengaturan hasil statis, staticResult objek memiliki atribut ini: - name , yang mereferensikan nama definisi hasil statis tindakan saat ini, yang muncul di dalam atribut staticResults di atribut alur kerja aplikasi logika Andadefinition . Untuk informasi selengkapnya, lihat Hasil statis - Referensi skema untuk Bahasa Pemrogram Definisi Alur Kerja. - staticResultOptions , yang menentukan apakah hasil statis adalah Enabled atau tidak untuk tindakan saat ini. Untuk mengaktifkan hasil statis, lihat Menguji aplikasi logika dengan data tiruan dengan menyiapkan hasil statis |
Tindakan: Bervariasi |
Opsi operasi
Anda dapat mengubah perilaku default untuk pemicu dan tindakan dengan operationOptions
properti dalam definisi pemicu atau tindakan.
Opsi operasi | Tipe | Deskripsi | Pemicu atau tindakan |
---|---|---|---|
DisableAsyncPattern |
String | Jalankan tindakan berbasis HTTP secara sinkron, bukan secara asinkron. Untuk mengatur opsi ini, lihat Menjalankan tindakan secara sinkron. |
Tindakan: Api Koneksi ion, HTTP, Respons |
IncludeAuthorizationHeadersInOutputs |
String | Untuk aplikasi logika yang mengaktifkan OAuth dengan MICROSOFT Entra ID untuk mengotorisasi akses untuk panggilan masuk ke titik akhir pemicu berbasis permintaan, sertakan Authorization header dari token akses OAuth dalam output pemicu. Untuk informasi selengkapnya, lihat Menyertakan header 'Otorisasi' dalam output pemicu permintaan. |
Memicu: Permintaan, HTTP Webhook |
Sequential |
String | Jalankan iterasi perulangan "untuk setiap" satu per satu, bukan semua pada saat yang sama secara paralel. Opsi ini berfungsi dengan cara yang sama seperti menyetel runtimeConfiguration.concurrency.repetitions properti ke 1 . Anda dapat menyetel properti, tapi tidak keduanya. Untuk menyetel opsi ini, lihat Menjalankan perulangan "untuk setiap" secara berurutan. |
Tindakan: Foreach |
SingleInstance |
String | Jalankan pemicu untuk setiap instans aplikasi logika secara berurutan dan tunggu hingga proses yang sebelumnya aktif selesai sebelum memicu instans aplikasi logika berikutnya. Opsi ini berfungsi dengan cara yang sama seperti menyetel runtimeConfiguration.concurrency.runs properti ke 1 . Anda dapat menyetel properti, tapi tidak keduanya. Untuk mengatur opsi ini, lihat Instans pemicu secara berurutan. |
Semua pemicu |
SuppressWorkflowHeaders |
String | Jangan kirim x-ms-* header metadata di permintaan keluar. Secara default, Azure Logic Apps menyertakan header metadata tambahan dengan x-ms- awalan dalam nama header sebagai bagian dari permintaan keluar. Namun, beberapa layanan warisan tidak akan menerima permintaan dengan header tambahan yang tidak diketahui, yang mengakibatkan permintaan gagal. |
Tindakan: HTTP, Fungsi, APIManagement |
SuppressWorkflowHeadersOnResponse |
String | Jangan mengirim x-ms-* header metadata sebagai tanggapan atas permintaan pemicu masuk. Secara default, Azure Logic Apps mengirim respons ke permintaan masuk yang menyertakan header metadata tambahan dengan x-ms- awalan dalam nama header. Namun, beberapa layanan warisan tidak akan menerima permintaan atau repsons dengan header tambahan yang tidak diketahui, yang mengakibatkan permintaan gagal. |
Memicu: Permintaan, HTTP Webhook |
Ubah konkurensi pemicu
Secara default, semua instans alur kerja aplikasi logika berjalan pada saat yang sama (secara bersamaan atau paralel). Perilaku ini berarti bahwa setiap instans pemicu diaktifkan sebelum instans alur kerja sebelumnya selesai berjalan. Namun, jumlah instans yang berjalan bersamaan memiliki batas default. Saat jumlah instans alur kerja yang berjalan bersamaan mencapai batas ini, instans baru lainnya harus menunggu untuk dijalankan. Batas ini membantu mengontrol jumlah permintaan yang diterima sistem backend.
Saat Anda mengaktifkan kontrol konkurensi pemicu, instans pemicu berjalan secara paralel hingga batas default. Untuk mengubah batas konkurensi default ini, Anda dapat menggunakan editor tampilan kode atau perancang alur kerja karena mengubah pengaturan konkurensi melalui perancang menambahkan atau memperbarui runtimeConfiguration.concurrency.runs
properti dalam definisi pemicu yang mendasar dan sebaliknya. Properti ini mengontrol jumlah maksimum instans alur kerja baru yang dapat berjalan secara paralel.
Sebelum Anda mengaktifkan konkurensi pada pemicu, tinjau pertimbangan berikut:
Anda tidak dapat menonaktifkan konkurensi setelah mengaktifkan kontrol konkurensi.
Jika jumlah maksimum eksekusi pemicu bersamaan mencapai tingkat paralelisme maksimum, eksekusi pemicu berikutnya mungkin mengalami pembatasan atau kesalahan "429 - Terlalu banyak permintaan". Jika Anda menyiapkan kebijakan percobaan kembali yang menangani kesalahan 429, pemicu mungkin mengalami siklus perilaku coba lagi dan pembatasan yang menyebabkan keterlambatan panjang dalam memproses permintaan pemicu baru.
Saat konkurensi diaktifkan, batas SplitOn secara signifikan dikurangi untuk array debat. Jika jumlah item melebihi batas ini, kapabilitas SplitOn dinonaktifkan.
Saat konkurensi diaktifkan, instans aplikasi logika yang berjalan lama dapat menyebabkan instans aplikasi logika baru memasuki status tunggu. Status ini mencegah Microsoft Azure Logic Apps membuat instans baru dan terjadi bahkan saat jumlah eksekusi konkuren kurang dari jumlah maksimum eksekusi konkuren yang ditentukan.
Untuk mengganggu status ini, batalkan instans paling awal yang masih berjalan.
Dari menu aplikasi logika Anda, pilih Gambaran Umum.
Di bagian Riwayat eksekusi, pilih instans paling awal yang masih berjalan, misalnya:
Tip
Untuk melihat hanya instans yang masih berjalan, buka daftar Semua, dan pilih Berjalan.
Di bawah eksekusi aplikasi logika, pilih Batalkan eksekusi.
Untuk mengatasi kemungkinan ini, tambahkan batas waktu ke tindakan apa pun yang mungkin menahan proses ini. Jika Anda bekerja di editor kode, lihat Mengubah durasi asinkron. Jika tidak, jika Anda menggunakan perancang, ikuti langkah-langkah berikut:
Di alur kerja aplikasi logika Anda, pilih tindakan tempat Anda ingin menambahkan batas waktu. Di bagian sudut kanan atas tindakan, pilih tombol elipsis (...), lalu pilih Pengaturan.
Di bawah Batas Waktu, tentukan durasi batas waktu dalam format ISO 8601.
Untuk menjalankan aplikasi logika Anda secara berurutan, setel konkurensi pemicu ke
1
keduanya dengan menggunakan editor tampilan kode atau perancang. Pastikan Anda juga tidak menyeteloperationOptions
properti pemicu keSingleInstance
di editor tampilan kode. Jika tidak, Anda mendapatkan kesalahan validasi. Untuk informasi selengkapnya, lihat Instans pemicu secara berurutan.
Mengedit dalam tampilan kode
Dalam definisi pemicu yang mendasarinya, tambahkan runtimeConfiguration.concurrency.runs
properti, dan setel nilai berdasarkan batas konkurensi pemicu. Untuk menjalankan alur kerja Anda secara berurutan, setel nilai properti menjadi 1
.
Contoh ini membatasi proses konkuren hingga 10 instans:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"runs": 10
}
}
}
Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum.
Edit di perancang alur kerja
Di sudut kanan atas pemicu, pilih tombol elipsis (...), lalu pilih Pengaturan.
Di bawah Kontrol Konkurensi, setel Batas ke Aktif.
Seret penggeser Tingkat Paralelisme ke nilai yang Anda inginkan. Untuk menjalankan aplikasi logika Anda secara berurutan, seret nilai penggeser ke 1.
Ubah konkurensi "untuk setiap"
Secara default, semua iterasi perulangan "untuk setiap" berjalan pada saat yang sama (secara bersamaan atau paralel). Perilaku ini berarti bahwa setiap iterasi mulai berjalan sebelum iterasi sebelumnya selesai berjalan. Namun, jumlah iterasi yang berjalan bersamaan memiliki batas default. Saat jumlah iterasi yang berjalan bersamaan mencapai batas ini, iterasi lain harus menunggu untuk dijalankan.
Untuk mengubah batas default, Anda dapat menggunakan editor tampilan kode atau perancang alur kerja karena mengubah pengaturan konkurensi melalui perancang menambahkan atau memperbarui runtimeConfiguration.concurrency.repetitions
properti dalam definisi tindakan "untuk setiap" yang mendasar dan sebaliknya. Properti ini mengontrol jumlah maksimum iterasi yang dapat berjalan secara paralel.
Catatan
Jika Anda menyetel tindakan "untuk setiap" untuk berjalan secara berurutan baik dengan menggunakan perancang atau editor tampilan kode, jangan setel operationOptions
properti ke Sequential
tindakan di editor tampilan kode. Jika tidak, Anda mendapatkan kesalahan validasi. Untuk informasi selengkapnya, lihat Menjalankan perulangan "untuk setiap" secara berurutan.
Mengedit dalam tampilan kode
Dalam definisi "untuk setiap" yang mendasarinya, tambahkan atau perbarui runtimeConfiguration.concurrency.repetitions
properti, yang dapat memiliki nilai yang berkisar dari 1
dan 50
.
Berikut adalah contoh yang membatasi proses bersamaan hingga 10 iterasi:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 10
}
}
}
Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum.
Edit di perancang alur kerja
Di tindakan For each, dari sudut kanan atas, pilih tombol elipsis (...), lalu pilih Pengaturan.
Di bawah Kontrol Konkurensi, setel Kontrol Konkurensi ke Aktif.
Seret penggeser Tingkat Paralelisme ke nilai yang Anda inginkan. Untuk menjalankan aplikasi logika Anda secara berurutan, seret nilai penggeser ke 1.
Ubah batas eksekusi tunggu
Secara default, semua instans alur kerja aplikasi logika berjalan pada saat yang sama (secara bersamaan atau paralel). Perilaku ini berarti bahwa setiap instans pemicu diaktifkan sebelum instans alur kerja sebelumnya selesai berjalan. Namun, batas default ada pada jumlah instans alur kerja yang berjalan bersamaan. Ketika jumlah eksekusi bersamaan mencapai batas ini, instans alur kerja baru lainnya harus menunggu untuk dijalankan. Batas default juga ada pada jumlah instans alur kerja tunggu. Ketika jumlah instans tunggu mencapai batas ini, Azure Logic Apps tidak lagi menerima instans alur kerja baru untuk dijalankan. Pemicu permintaan dan webhook mengembalikan 429 - Terlalu banyak kesalahan permintaan, dan pemicu berulang mulai melewati upaya polling.
Anda dapat mengubah batas default pada konkurensi pemicu serta batas default pada eksekusi tunggu. Namun, perubahan ini terutama memperlambat pemicu untuk meringankan tekanan karena konkurensi. Misalnya, jika Anda memiliki pemicu polling, dan antrean eksekusi tunggu penuh karena eksekusi yang sedang berlangsung, Azure Logic Apps berhenti melakukan polling. Jika alur kerja Anda menggunakan pemicu berbasis permintaan, dan antrean eksekusi tunggu penuh, Azure Logic Apps mulai mengembalikan kesalahan 429. Beberapa skenario ada di mana Azure Logic Apps tidak dapat menghentikan pemicu dari polling tanpa memperkenalkan kegagalan dan memilih untuk menambahkan eksekusi tersebut ke antrean eksekusi tunggu tanpa gagal menjalankan panggilan.
Dalam definisi pemicu yang mendasarinya, tambahkan runtimeConfiguration.concurrency.maximumWaitingRuns
properti, yang dapat memiliki nilai yang berkisar dari 1
ke 100
.
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"maximumWaitingRuns": 50
}
}
}
Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum.
Instans pemicu secara berurutan
Untuk menjalankan setiap instans alur kerja aplikasi logika hanya setelah instans sebelumnya selesai berjalan, setel pemicu untuk berjalan secara berurutan. Anda dapat menggunakan editor tampilan kode atau perancang alur kerja karena mengubah pengaturan konkurensi melalui perancang juga menambahkan atau memperbarui runtimeConfiguration.concurrency.runs
properti dalam definisi pemicu yang mendasar dan sebaliknya.
Catatan
Jika Anda menyetel pemicu untuk berjalan secara berurutan baik dengan menggunakan perancang atau editor tampilan kode, jangan setel operationOptions
properti ke Sequential
pemicu di editor tampilan kode.
Jika tidak, Anda mendapatkan kesalahan validasi.
Mengedit dalam tampilan kode
Dalam definisi pemicu, setel salah satu properti ini, tapi tidak keduanya.
Setel runtimeConfiguration.concurrency.runs
properti ke 1
:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"runs": 1
}
}
}
-atau-
Setel operationOptions
properti ke SingleInstance
:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"operationOptions": "SingleInstance"
}
Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum dan opsi Operasi.
Edit di perancang alur kerja
Di sudut kanan atas pemicu, pilih tombol elipsis (...), lalu pilih Pengaturan.
Di bawah Kontrol Konkurensi, setel Batas ke Aktif.
Seret penggeser Tingkat Paralelisme ke angka
1
.
Jalankan perulangan "untuk setiap" secara berurutan
Untuk menjalankan iterasi perulangan "untuk setiap" hanya setelah iterasi sebelumnya selesai berjalan, setel tindakan "untuk setiap" agar berjalan secara berurutan. Anda dapat menggunakan editor tampilan kode atau perancang alur kerja karena mengubah konkurensi tindakan melalui perancang juga menambahkan atau memperbarui runtimeConfiguration.concurrency.repetitions
properti dalam definisi tindakan yang mendasar dan sebaliknya.
Catatan
Saat Anda menyetel tindakan "untuk setiap" untuk berjalan secara berurutan baik dengan menggunakan perancang atau editor tampilan kode, jangan setel operationOptions
properti ke Sequential
tindakan di editor tampilan kode.
Jika tidak, Anda mendapatkan kesalahan validasi.
Mengedit dalam tampilan kode
Dalam definisi tindakan, setel salah satu properti ini, tapi tidak keduanya.
Setel runtimeConfiguration.concurrency.repetitions
properti ke 1
:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 1
}
}
}
-atau-
Setel operationOptions
properti ke Sequential
:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"operationOptions": "Sequential"
}
Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum dan opsi Operasi.
Edit di perancang alur kerja
Di sudut kanan atas For eachtindakan, pilih tombol elipsis (...), lalu pilih Pengaturan.
Di bawah Kontrol Konkurensi, setel Kontrol Konkurensi ke Aktif.
Seret penggeser Tingkat Paralelisme ke angka
1
.
Jalankan tindakan dalam pola operasi sinkron
Secara default, tindakan HTTP dan tindakan APIConnection di Azure Logic Apps mengikuti pola operasi asinkronstandar, sementara tindakan Respons mengikuti pola operasi yang sinkron. Pola asinkron menentukan bahwa setelah tindakan memanggil atau mengirim permintaan ke titik akhir, layanan, sistem, atau API yang ditentukan, penerima segera menampilkan respons "202 DITERIMA". Kode ini mengonfirmasi bahwa penerima menerima permintaan tapi belum selesai diproses. Respons dapat menyertakan location
header yang menentukan URL dan ID refresh yang dapat digunakan pemanggil untuk terus melakukan polling atau memeriksa status untuk permintaan asinkron hingga penerima berhenti memproses dan mengembalikan respons keberhasilan "200 OK" atau respons non-202 lainnya. Untuk informasi selengkapnya, lihat Integrasi layanan mikro asinkron memberlakukan otonomi layanan mikro.
Di Azure Logic App Designer, tindakan HTTP, tindakan APIConnection, dan tindakan Respons memiliki pengaturan Pola Asinkron. Saat diaktifkan, pengaturan ini menentukan bahwa pemanggil tidak menunggu pemrosesan selesai dan dapat melanjutkan ke tindakan berikutnya tapi terus memeriksa status sampai pemrosesan berhenti. Jika dinonaktifkan, pengaturan ini menentukan bahwa pemanggil menunggu pemrosesan selesai sebelum melanjutkan ke tindakan berikutnya. Untuk menemukan pengaturan ini, ikuti langkah-langkah berikut:
Pada bilah judul tindakan HTTP, pilih tombol elipsis (...), yang membuka pengaturan tindakan.
Temukan pengaturan Pola Asinkron.
Dalam definisi JavaScript Object Notation (JSON) yang mendasari tindakan, tindakan HTTP dan tindakan APIConnection secara implisit mengikuti pola operasi asinkron.
Dalam beberapa skenario, Anda mungkin ingin tindakan untuk mengikuti pola sinkron sebagai gantinya. Misalnya, saat Anda menggunakan tindakan HTTP, Anda mungkin ingin:
Dalam kasus ini, Anda dapat membuat tindakan berjalan secara sinkron dengan menggunakan opsi ini:
Mengganti versi polling tindakan tersebut dengan versi webhook, jika tersedia.
Menonaktifkan perilaku asinkron tindakan dengan mengikuti salah satu opsi:
Di Azure Logic App Designer, nonaktifkan pengaturan Pola Asinkron.
Dalam definisi JSON yang mendasari tindakan, tambahkan
"DisableAsyncPattern"
opsi operasi.
Matikan pengaturan Pola Asinkron
Di Azure Logic App Designer, pada bilah judul tindakan, pilih tombol elipsis (...) yang membuka pengaturan tindakan.
Temukan pengaturan Pola Asinkron, ubah pengaturan ke Matikan jika diaktifkan, dan pilih Selesai.
Nonaktifkan pola asinkron dalam definisi JSON tindakan
Dalam definisi JSON yang mendasari tindakan, tambahkan dan setel properti "operationOptions" ke "DisableAsyncPattern"
di bawah bagian"inputs"
tindakan, misalnya:
"<some-long-running-action>": {
"type": "Http",
"inputs": { "<action-inputs>" },
"operationOptions": "DisableAsyncPattern",
"runAfter": {}
}
Mengautentikasi pemicu dan tindakan
Titik akhir HTTP dan HTTPS mendukung berbagai jenis autentikasi. Berdasarkan pemicu atau tindakan yang Anda gunakan untuk melakukan panggilan keluar atau permintaan untuk mengakses titik akhir ini, Anda dapat memilih dari berbagai rentang jenis autentikasi. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar.
Langkah berikutnya
- Pelajari selengkapnya tentang Bahasa Pemrogram Definisi Alur Kerja