Bagikan melalui


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 dapat Anda gunakan di aplikasi logika Anda, lihat daftar di bawah gambaran umum Konektor.

Ikhtisar 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 push , 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>"
},

Required

Value Type Description
< nama pemicu> String Nama untuk pemicu
< jenis pemicu> String Jenis pemicu seperti "Http" atau "ApiConnection"
< input pemicu> Objek JSON Input yang menentukan perilaku pemicu
< unit waktu> String Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan"
< jumlah unit waktu> Integer 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.

Optional

Value Type Description
< array-with-condition> 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.
< opsi operasi> 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 Description
HTTP Memeriksa atau melakukan 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.
Recurrence 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.
Request 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 Description
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>"
}

Required

Property Value Type Description
None < APIConnection_trigger_name> String Nama untuk pemicu
host.connection.name < nama-koneksi> String Nama untuk koneksi ke API terkelola yang digunakan alur kerja
method < jenis metode> String Metode HTTP untuk berkomunikasi dengan API terkelola: GET, PUT, POST, PATCH, DELETE
path < operasi api> String Operasi API yang akan dipanggil
recurrence.frequency < unit waktu> String Unit waktu yang menjelaskan seberapa sering pemicu diaktifkan: Detik, Menit, Jam, Hari, Minggu, Bulan
recurrence.interval < jumlah unit waktu> Integer 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.

Optional

Property Value Type Description
retryPolicy < perilaku coba lagi> 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.
queries < parameter kueri> 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> Integer Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai < baru>, lihat Mengubah konkurensi pemicu.
runtimeConfiguration.maximumWaitingRuns < max-runs-queue> Integer 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 < opsi operasi> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Outputs

Element Type Description
headers Objek JSON header dari respons
body Objek JSON Isi dari respons
kode status Integer Kode status dari respons

Example

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 dengan 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>"
}

Required

Value Type Description
< nama-koneksi> String Nama untuk koneksi ke API terkelola yang digunakan alur kerja
< konten isi> Objek JSON Konten pesan apa pun yang dikirim sebagai payload ke API terkelola

Optional

Value Type Description
< perilaku coba lagi> 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.
< parameter kueri> 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> Integer Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai < baru>, lihat Mengubah konkurensi pemicu.
< max-runs-queue> Integer 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']
< opsi operasi> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Example

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>"
}

Required

Property Value Type Description
method < jenis metode> 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 < unit waktu> String Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan"
interval < jumlah unit waktu> Integer 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.

Optional

Property Value Type Description
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 < parameter kueri> 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 < konten isi> 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 < perilaku coba lagi> 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> Integer Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai < baru>, lihat Mengubah konkurensi pemicu.
maximumWaitingRuns < max-runs-queue> Integer 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 < opsi operasi> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Outputs

Element Type Description
headers Objek JSON header dari respons
body Objek JSON Isi dari respons
status code Integer 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:

Property Required Description
Kode status Yes Kode status "200 OK" mulai dijalankan. Kode status lainnya tidak mulai dijalankan.
Coba lagi header 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 Behavior
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 "subscribe" objek dan "unsubscribe" .

Required

Value Type Description
< jenis metode> 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

Optional

Value Type Description
< jenis metode> 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
< konten isi> String Konten pesan apa pun yang akan dikirim dalam permintaan langganan atau pembatalan
< jenis autentikasi> Objek JSON Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar.
< perilaku coba lagi> 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> Integer Secara default, instans alur kerja semuanya berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai < baru>, lihat Mengubah konkurensi pemicu.
< max-runs-queue> Integer 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.
< opsi operasi> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Outputs

Element Type Description
headers Objek JSON header dari respons
body Objek JSON Isi dari respons
status code Integer Kode status dari respons

Example

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>"
}

Required

Value Type Description
< unit waktu> String Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan"
< jumlah unit waktu> Integer 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.

Optional

Value Type Description
< 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

-or-

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.
< zona waktu> String Hanya berlaku saat Anda menentukan waktu mulai karena pemicu ini tidak menerima offset UTC. Tentukan zona waktu yang ingin Anda terapkan.
< tanda satu jam atau lebih> 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.
< tanda satu atau beberapa menit> 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> Integer Secara default, instans alur kerja semuanya berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai < baru>, lihat Mengubah konkurensi pemicu.
< max-runs-queue> Integer 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.
< opsi operasi> 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.

Note

Nama asli untuk pemicu Permintaanadalah manual, yang mungkin masih muncul di beberapa tempat. Nama ini berubah untuk membuat lebih banyak konsistensi di sekitar jenis pola alur kerja yang Anda gunakan pemicu untuk membangun.

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.

"Request": {
   "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>"
}

Required

Value Type Description
< nama properti> String Nama properti dalam skema JSON, yang menggambarkan payload
< jenis properti> String Jenis properti

Optional

Value Type Description
< jenis metode> 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
< properti yang diperlukan> Array Satu atau beberapa properti yang memerlukan nilai
< max-runs> Integer Secara default, instans alur kerja semuanya berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai < baru>, lihat Mengubah konkurensi pemicu.
< max-runs-queue> Integer 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.
< opsi operasi> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Example

Pemicu ini menentukan bahwa permintaan masuk harus menggunakan metode HTTP POST untuk memanggil pemicu dan menyertakan skema yang memvalidasi input dari permintaan masuk:

"Request": {
   "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 alur kerja berjalan pada array

Dalam skenario di mana alur kerja Anda menggunakan pemicu yang menerima array untuk diproses, terkadang menggunakan untuk setiap perulangan mungkin memakan waktu terlalu lama. Untuk mempercepat pemrosesan, salah satu opsinya adalah membuat cabang paralel. Atau, jika pemicu mendukung debatching, Anda dapat memicu pemicu membagi item array dan menjalankan instans alur kerja terpisah untuk setiap item array. Opsi ini berguna, misalnya, ketika Anda ingin melakukan polling titik akhir yang mungkin mengembalikan beberapa item baru di antara interval polling.

Hanya pemicu yang dapat menerima array dan menampilkan array yang mendukung kemampuan ini seperti Permintaan, HTTP, Azure Service Bus, atau Office Outlook 365. Untuk pemicu ini, di perancang alur kerja, Anda dapat mengaktifkan pengaturan PisahkansplitOn pada, yang menambahkan properti ke definisi pemicu.

Note

Jika file Swagger pemicu menjelaskan payload yang merupakan array, splitOn properti secara otomatis ditambahkan ke definisi pemicu Anda. Jika tidak, dan pemicu dapat menerima array, Anda dapat menambahkan properti ke payload respons yang berisi array yang ingin Anda debat.

Sebelum Anda menggunakan kemampuan debatching, tinjau pertimbangan berikut:

  • Jika konkurensi pemicu juga diaktifkan, batas Pisahkan pada berkurang secara signifikan. Jika jumlah item melebihi batas ini, kemampuan Pisahkan pada tidak tersedia.

  • Kemampuan Pisahkan pada tidak berfungsi dengan pola respons sinkron. Jika alur kerja menggunakan tindakan Respons dan mengaktifkan pengaturan Pisahkan saat berjalan secara asinkron dan segera mengirim 202 ACCEPTED respons.

  • Batas ada pada jumlah item array yang dipisahkan dapat diproses dalam satu eksekusi alur kerja. Untuk informasi selengkapnya, lihat Batas perulangan dan batching.

  • Jika Anda menyiapkan debatching melalui definisi pemicu dengan menggunakan splitOn properti , Anda tidak dapat langsung mereferensikan atau mengakses properti yang ada di luar array. Untuk menghindari kegagalan, awali referensi dengan ? operator. Misalnya, lihat Mengaktifkan debatching dalam definisi pemicu.

Aktifkan debatching melalui perancang

Ikuti langkah-langkah ini dalam perancang alur kerja untuk menyiapkan debatching pada pemicu jika didukung:

  1. Di [portal Microsoft Azure], buka sumber daya aplikasi logika Anda.

  2. Buka alur kerja Anda di perancang.

  3. Di perancang, pilih pemicu yang mendukung debatching untuk membuka panel informasi pemicu.

  4. Pada tab Pengaturan , di bawah Umum, temukan pengaturan Pisahkan pada , dan ubah pengaturan menjadi Aktif jika tidak diaktifkan.

Mengaktifkan debatching dalam definisi pemicu

Beberapa pemicu menangani array, tetapi pengaturan Pisahkan saat tidak tersedia melalui perancang. Untuk pemicu tersebut splitOn , ikuti langkah-langkah berikut untuk menambahkan properti dalam definisi pemicu:

Misalnya, alur kerja Anda menggunakan pemicu HTTP untuk memanggil API dan mendapatkan respons berikut:

{
   "Status": "Succeeded",
   "Rows": [ 
      { 
         "id": 938109380,
         "name": "customer-name-one"
      },
      {
         "id": 938109381,
         "name": "customer-name-two"
      }
   ]
}

Jika alur kerja Anda hanya memerlukan konten dari Rows array, Anda dapat menambahkan dan menyiapkan splitOn properti dalam definisi pemicu seperti yang ditunjukkan dalam contoh berikut:

"HTTP_trigger_debatch": {
   "type": "Http",
    "inputs": {
        "uri": "https://mydomain.com/myAPI",
        "method": "GET"
    },
   "recurrence": {
      "frequency": "Second",
      "interval": 1
    },
    "splitOn": "@triggerBody()?.Rows"
}

Note

Ingat, jika Anda menggunakan splitOn properti , Anda tidak dapat langsung mengakses atau mereferensikan properti yang ada di luar array. Untuk menghindari kegagalan, gunakan operator seperti yang ? ditunjukkan dalam contoh.

Definisi alur kerja Anda juga dapat menggunakan splitOn dan @triggerBody().name untuk mendapatkan nilai dari name properti . Nilai-nilai ini berasal "customer-name-one" dari eksekusi alur kerja pertama dan "customer-name-two" dari alur kerja kedua yang dijalankan. Untuk contoh ini, output pemicu terlihat seperti nilai berikut:

{
   "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>"
},

Required

Value Type Description
< nama tindakan> String Nama untuk tindakan
< jenis tindakan> String Jenis tindakan, misalnya, "Http" atau "ApiConnection"
< nama input> String Nama untuk input yang mendefinisikan perilaku tindakan
< input-value> Various 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

Optional

Value Type Description
< perilaku coba lagi> 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.
< opsi operasi> 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:

Tindakan bawaan

Jenis tindakan Description
Compose 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.
Function Memanggil Azure Function.
HTTP Memanggil titik akhir HTTP.
Join Membuat string dari semua item dalam array dan memisahkan item tersebut dengan karakter pemisah tertentu.
Mengurai JSON Membuat token yang mudah digunakan dari properti dalam konten JSON. Anda kemudian dapat mereferensikan properti tersebut dengan menyertakan token di aplikasi logika Anda.
Query Membuat string dari item dalam array lain berdasarkan kondisi atau filter.
Response Membuat respons terhadap panggilan masuk atau permintaan.
Select Membuat array dengan objek JSON dengan mengubah item dari array lain berdasarkan peta yang ditentukan.
Table Membuat tabel CSV atau HTML dari array.
Terminate Menghentikan alur kerja yang berjalan secara aktif.
Wait Menjeda alur kerja Anda untuk durasi yang ditentukan atau hingga tanggal dan waktu yang ditentukan.
Workflow Menumpuk alur kerja di dalam alur kerja lain.

Tindakan API terkelola

Jenis tindakan Description
ApiConnection Memanggil titik akhir HTTP dengan menggunakan API yang dikelola Microsoft.
ApiConnectionWebhook Berfungsi seperti HTTP Webhook tetapi 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 Description
ForEach Jalankan tindakan yang sama dalam perulangan untuk setiap item dalam array.
If Jalankan tindakan berdasarkan apakah kondisi yang ditentukan benar atau salah.
Scope Jalankan tindakan berdasarkan status grup dari serangkaian tindakan.
Switch Jalankan tindakan yang diatur ke dalam kasus saat nilai dari ekspresi, objek, atau token cocok dengan nilai yang ditentukan oleh setiap kasus.
Until 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": {}
}

Required

Value Type Description
< nama tindakan> String Nama tindakan yang disediakan oleh konektor
< nama api> String Nama API yang dikelola Microsoft yang digunakan untuk koneksi
< jenis metode> String Metode HTTP untuk memanggil API: "GET", "PUT", "POST", "PATCH", atau "DELETE"
< operasi api> String Operasi API yang akan dipanggil

Optional

Value Type Description
< other-action-specific-input-properties> Objek JSON Properti input lain yang berlaku untuk tindakan khusus ini
< perilaku coba lagi> 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.
< parameter kueri> 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.
< properti khusus tindakan lainnya> Objek JSON Properti lain yang berlaku untuk tindakan khusus ini

Example

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

Tindakan ini mengirim permintaan langganan melalui HTTP ke titik akhir dengan 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 "subscribe" objek dan "unsubscribe" .

Required

Value Type Description
< nama tindakan> String Nama tindakan yang disediakan oleh konektor
< jenis metode> 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

Optional

Value Type Description
< 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" }
< konten isi> Objek JSON Konten pesan apa pun yang akan dikirim dalam permintaan
< jenis autentikasi> Objek JSON Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar.
< perilaku coba lagi> 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.
< parameter kueri> 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
< properti khusus tindakan lainnya> 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.

Buat 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": {}
},

Required

Value Type Description
< inputs-to-compose> Any 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": {}
}

Required

Value Type Description
< Cuplikan kode JavaScript> Varies 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

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

Value Type Description
< 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 di mana 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": {}
}

Required

Value Type Description
< 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>"
< jenis metode> String Metode HTTP yang digunakan untuk memanggil fungsi: "GET", "PUT", "POST", "PATCH", atau "DELETE"

Jika tidak ditentukan, defaultnya adalah metode "POST".

Optional

Value Type Description
< 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" }
< konten isi> Objek JSON Konten pesan apa pun yang akan dikirim dalam permintaan
< parameter kueri> 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
< properti khusus tindakan lainnya> 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 membatalkan URL yang di-cache, tindakan Fungsi gagal pada runtime. 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.

Example

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": {}
}

Required

Property Value Type Description
method < jenis metode> 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.

Optional

Property Value Type Description
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 < parameter kueri> 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 < konten isi> 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 < perilaku coba lagi> 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
< properti khusus tindakan lainnya> < nilai properti> Objek JSON Properti lain yang berlaku untuk tindakan khusus ini

Example

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"
   }
}

Gabungkan 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": {}
}

Required

Value Type Description
< Array> Array Array atau ekspresi yang menyediakan item sumber. Jika Anda menentukan ekspresi, sertakan ekspresi tersebut dengan tanda kutip ganda.
< Pembatas> String karakter tunggal Karakter yang memisahkan setiap item dalam string

Example

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": {}
},

Required

Value Type Description
< Sumber JSON> Objek JSON Konten JSON yang ingin Anda uraikan
< JSON-skema> 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.

Example

Definisi tindakan ini membuat token ini yang dapat Anda gunakan dalam alur kerja Anda tetapi 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": {}
}

Required

Value Type Description
< Array> Array Array atau ekspresi yang menyediakan item sumber. Jika Anda menentukan ekspresi, sertakan ekspresi tersebut dengan tanda kutip ganda.
< kondisi atau filter> String Kondisi yang digunakan untuk memfilter item dalam array sumber

Catatan: Jika tidak ada nilai yang memenuhi kondisi, tindakan akan membuat array kosong.

Example

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": {}
},

Required

Value Type Description
< kode status respons> Integer 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.

Optional

Value Type Description
< header respons> Objek JSON Satu atau beberapa header untuk disertakan dengan respons
< isi respons> Various Badan respons, yang dapat menjadi string, objek JavaScript Object Notation, atau bahkan konten biner dari tindakan sebelumnya

Example

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": {}
}

Restrictions

Tidak seperti tindakan lain, tindakan Respons memiliki batasan khusus:

  • Alur kerja Anda dapat menggunakan tindakan Respons hanya ketika 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 , Hingga perulangan, termasuk perulangan berurutan, dan cabang paralel.

  • Permintaan asli mendapatkan respons alur kerja Anda hanya ketika semua tindakan yang diperlukan oleh tindakan Respons selesai dalam batas waktu habis 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 juga tidak dapat 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 mengembalikan respons "202 DITERIMA".

  • Saat eksekusi alur kerja Anda mencapai tindakan Respons , tetapi 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. selectProperti 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": {}
},

Required

Value Type Description
< 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 <nama> kunci untuk properti tersebut dan <ekspresi> untuk nilai properti.

Untuk menghapus properti dari semua objek dalam array, hilangkan < kunci untuk properti tersebut>.
< Ekspresi> String Ekspresi yang mengubah item dalam array sumber dan menetapkan hasilnya ke <nama kunci>

Tindakan Pilih membuat array sebagai output, sehingga tindakan apa pun yang ingin menggunakan output ini harus menerima array, atau Anda harus mengonversi array menjadi jenis yang diterima tindakan konsumen. Misalnya, untuk mengonversi array output menjadi string, Anda dapat meneruskan array tersebut ke tindakan Buat , lalu mereferensikan output dari tindakan Buat di tindakan Anda yang lain.

Example

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 dalam tindakan lain, teruskan output ini ke dalam tindakan Buat :

"Compose": {
   "type": "Compose",
   "inputs": "@body('Select')",
   "runAfter": {
      "Select": [ "Succeeded" ]
   }
},

Anda kemudian bisa menggunakan output dari tindakan Buat di tindakan Anda yang lain, misalnya, tindakan Office 365 Outlook - Kirim 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 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": {}
}

Required

Value Type Description
<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.

Optional

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.

Value Type Description
< nama kolom> String Nama header untuk kolom
< nilai kolom> Any 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:

IDProduct_Name
0Apples
1Oranges

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_IDDescription
0Apel Organik
1Jeruk 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": {}
}

Required

Value Type Description
< keadaan> String Status yang akan ditampilkan untuk dijalankan: "Gagal", "Dibatalkan", atau "Berhasil"

Optional

Properti untuk objek "runError" hanya berlaku ketika properti "runStatus" diatur ke status "Gagal".

Value Type Description
< error-code-or-name> String Kode atau nama untuk kesalahan
< pesan kesalahan> String Pesan atau teks yang menjelaskan kesalahan dan tindakan apa pun yang dapat dilakukan pengguna aplikasi

Example

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": {}
},

Required

Value Type Description
< jumlah unit> Integer Untuk tindakan Tunda , jumlah unit yang akan ditunggu
< Interval> String Untuk tindakan Tunda , interval untuk menunggu: "Kedua", "Menit", "Jam", "Hari", "Minggu", "Bulan"
< stempel tanggal-waktu> 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 aplikasi logika turunan atau berlapis dalam tindakan yang mengikuti aplikasi logika berlapis, asalkan aplikasi logika turunan mengembalikan 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 berlapis dapat dipanggil, seperti pemicu Permintaan atau HTTP

  • Langganan Azure yang sama dengan aplikasi logika induk Anda

  • Untuk menggunakan output dari aplikasi logika berlapis di aplikasi logika induk Anda, aplikasi logika berlapis 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": {}
}

Required

Value Type Description
< nested-logic-app-name> String Nama untuk aplikasi logika yang ingin Anda panggil
< nama pemicu> String Nama pemicu di aplikasi logika bertumpuk yang ingin Anda panggil
< ID langganan Azure> String ID langganan Azure untuk aplikasi logika bertumpuk
< Grup-sumber daya-Azure> String Nama grup sumber daya Azure untuk aplikasi logika bertumpuk

Optional

Value Type Description
< header-content> Objek JSON Header apa pun yang akan dikirim dengan panggilan
< konten isi> Objek JSON Konten pesan apa pun yang akan dikirim dengan panggilan

Outputs

Output tindakan ini bervariasi berdasarkan tindakan Respons aplikasi logika bertumpuk. Jika aplikasi logika bertumpuk tidak menyertakan tindakan Respons, output kosong.

Example

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

Tindakan 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>"
}

Required

Value Type Description
< action-1... n> String Nama tindakan yang berjalan pada setiap item array
< action-definition-1... n> Objek JSON Definisi tindakan yang berjalan
< untuk setiap ekspresi> String Ekspresi yang mereferensikan setiap item dalam array yang ditentukan

Optional

Value Type Description
< hitung> Integer 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 < baru>, lihat Mengubah konkurensi perulangan "untuk setiap".
< opsi operasi> String Untuk menjalankan perulangan "untuk setiap" secara berurutan, bukan secara paralel, atur <opsi> operasi ke Sequential atau <hitung> ke 1, tetapi tidak keduanya. Untuk informasi selengkapnya, lihat Menjalankan perulangan "untuk setiap" secara berurutan.

Example

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>']

Jika tindakan

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": {}
}
Value Type Description
< keadaan> Objek JSON Kondisi, yang dapat menjadi ekspresi, untuk mengevaluasi
< action-1> Objek JSON Tindakan yang dijalankan ketika <kondisi> mengevaluasi ke true
< definisi tindakan> Objek JSON Definisi untuk tindakan
< action-2> Objek JSON Tindakan yang dijalankan ketika <kondisi> mengevaluasi ke false

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

Example

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 Result
"ekspresi": "@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 <, tindakan hanya berjalan ketika output dari >< lebih dari > nilai ambang batas.
"expression": "@or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100))" Untuk fungsi logika dan membuat ekspresi Boolean berlapis, tindakan berjalan saat output dari <tindakan> lebih dari < nilai ambang batas> 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": {}
      }
   }
}

Required

Value Type Description
< dalam-tindakan-1... n> Objek JSON Satu atau beberapa tindakan yang berjalan di dalam cakupan
< input tindakan> Objek JSON Input untuk setiap tindakan

Beralih tindakan

Tindakan ini, juga dikenal sebagai pernyataan pengalihan, mengatur tindakan lain ke dalam kasus, dan menetapkan nilai untuk setiap kasus, kecuali untuk kasus default jika ada. Saat alur kerja Anda berjalan, tindakan Beralih membandingkan nilai dari ekspresi, objek, atau token terhadap nilai yang ditentukan untuk setiap kasus. Jika tindakan Beralih menemukan kasus yang cocok, alur kerja Anda hanya menjalankan tindakan untuk kasus tersebut. Setiap kali tindakan Beralih berjalan, hanya ada satu kasus yang cocok atau tidak ada kecocokan. Jika tidak ada kecocokan, tindakan Beralih 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": {}
}

Required

Value Type Description
< expression-object-or-token> Varies Ekspresi, objek JSON, atau token untuk dievaluasi
< nama tindakan> String Nama tindakan yang akan dijalankan untuk kasus yang cocok
< definisi tindakan> Objek JSON Definisi untuk tindakan yang dijalankan untuk kasus yang cocok
< nilai pencocokan> Varies Nilai untuk dibandingkan dengan hasil yang dievaluasi

Optional

Value Type Description
< 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

Example

Definisi tindakan ini mengevaluasi apakah orang yang menanggapi email permintaan persetujuan memilih opsi "Setuju" atau opsi "Tolak". Berdasarkan pilihan ini, tindakan Beralih menjalankan tindakan untuk kasus yang cocok, yaitu mengirim email lain ke responden tetapi 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"
      ]
   }
}

Hingga tindakan

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": {}
}
Value Type Description
< nama tindakan> String Nama untuk tindakan yang ingin Anda jalankan di dalam perulangan
< jenis tindakan> String Jenis tindakan yang ingin Anda jalankan
< input tindakan> Various Input untuk aksi yang akan dijalankan
< keadaan> String Kondisi atau ekspresi untuk mengevaluasi setelah semua tindakan dalam perulangan selesai berjalan
< jumlah perulangan> Integer 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.
< batas waktu loop> String Batas waktu terlama yang dapat dijalankan perulangan. Nilai default timeout adalah PT1H, yang merupakan format ISO 8601 yang diperlukan.

Note

Jika ekspresi bergantung pada output dari tindakan apa pun dalam perulangan Hingga, pastikan Anda memperhitungkan kegagalan apa pun yang dihasilkan dari tindakan tersebut.

Example

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.

unsubscribePanggilan 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. timeoutProperti 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.

Property Type Description Pemicu atau tindakan
runtimeConfiguration.concurrency.runs Integer 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 Integer Ubah batas default pada jumlah instans alur kerja yang harus menunggu untuk dijalankan saat aplikasi logika Anda sudah menjalankan instans bersamaan maksimum.

Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu.
Semua pemicu
runtimeConfiguration.concurrency.repetitions Integer 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.
Action:

Foreach
runtimeConfiguration.paginationPolicy.minimumItemCount Integer Untuk tindakan tertentu yang mendukung dan mengaktifkan penomoran halaman, 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 Type Description Pemicu atau tindakan
DisableAsyncPattern String Jalankan tindakan berbasis HTTP secara sinkron, bukan secara asinkron.



Untuk mengatur opsi ini, lihat Menjalankan tindakan secara sinkron.
Actions:

ApiConnection,
HTTP,
Response
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. Triggers:

Request,
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.
Action:

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. Actions:

HTTP,
Function,
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. Triggers:

Request,
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.

  • Ketika konkurensi diaktifkan, batas Pisahkan pada berkurang secara signifikan untuk debatching array. Jika jumlah item melebihi batas ini, kemampuan Pisahkan pada 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.

      1. Pada menu aplikasi logika Anda, pilih Gambaran Umum.

      2. Di bagian Riwayat eksekusi, pilih instans paling awal yang masih berjalan, misalnya:

        Pilih instans yang berjalan paling awal

        Tip

        Untuk melihat hanya instans yang masih berjalan, buka daftar Semua , dan pilih Berjalan.

      3. Di bawah eksekusi aplikasi logika, pilih Batalkan eksekusi.

        Menemukan instans yang berjalan paling awal

    • 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:

      1. Di alur kerja aplikasi logika Anda, pilih tindakan tempat Anda ingin menambahkan batas waktu. Di sudut kanan atas tindakan, pilih tombol elipsis (...), lalu pilih Pengaturan.

        Buka pengaturan tindakan

      2. Di bawah Batas Waktu, tentukan durasi batas waktu dalam format ISO 8601.

        Tentukan durasi batas waktu

  • Untuk menjalankan aplikasi logika Anda secara berurutan, setel konkurensi pemicu ke 1keduanya dengan menggunakan editor tampilan kode atau perancang. Pastikan Anda juga tidak menyetel operationOptions properti pemicu ke SingleInstance 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.runsproperti, 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

  1. Di sudut kanan atas pemicu, pilih tombol elipsis (...), lalu pilih Pengaturan.

  2. Di bawah Kontrol Konkurensi, atur Batas ke Aktif.

  3. Seret penggeser Tingkat Paralelisme ke nilai yang Anda inginkan. Untuk menjalankan aplikasi logika Anda secara berurutan, seret nilai slider 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.

Note

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.repetitionsproperti, 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

  1. Di tombol Untuk setiap tindakan, dari sudut kanan atas, pilih tombol elipsis (...), lalu pilih Pengaturan.

  2. Di bawah Kontrol Konkurensi, atur Kontrol Konkurensi ke Aktif.

  3. Seret penggeser Tingkat Paralelisme ke nilai yang Anda inginkan. Untuk menjalankan aplikasi logika Anda secara berurutan, seret nilai slider 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.

Note

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
      }
   }
}

-or-

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

  1. Di sudut kanan atas pemicu, pilih tombol elipsis (...), lalu pilih Pengaturan.

  2. Di bawah Kontrol Konkurensi, atur Batas ke Aktif.

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

Note

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
      }
   }
}

-or-

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

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

  2. Di bawah Kontrol Konkurensi, atur Kontrol Konkurensi ke Aktif.

  3. 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 mengembalikan 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 Perancang Aplikasi Logika, 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:

    1. Pada bilah judul tindakan HTTP, pilih tombol elipsis (...), yang membuka pengaturan tindakan.

    2. Temukan pengaturan Pola Asinkron .

      Pengaturan

  • 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:

Menonaktifkan pengaturan Pola Asinkron

  1. Di Perancang Aplikasi Logika, pada bilah judul tindakan, pilih tombol elipsis (...), yang membuka pengaturan tindakan.

  2. Temukan pengaturan Pola Asinkron , ubah pengaturan ke Nonaktif jika diaktifkan, dan pilih Selesai.

    Matikan pengaturan “Pola Asinkron”

Nonaktifkan pola asinkron dalam definisi JSON tindakan

Dalam definisi JSON yang mendasar tindakan, tambahkan dan atur properti "operationOptions" ke "DisableAsyncPattern" di bawah bagian tindakan "inputs" , 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 selanjutnya