Panduan referensi skema untuk jenis pemicu dan tindakan di Azure Logic Apps

Referensi ini menjelaskan jenis umum yang digunakan untuk mengidentifikasi pemicu dan tindakan dalam definisi alur kerja yang mendasari aplikasi logika Anda, yang dijelaskan dan divalidasi oleh Bahasa Pemrogram Definisi Alur Kerja. Untuk menemukan pemicu dan tindakan konektor tertentu yang bisa Anda gunakan di aplikasi logika Anda, lihat daftar di bawah gambaran umum Konektor.

Gambaran umum pemicu

Setiap alur kerja menyertakan pemicu, yang menentukan panggilan yang membuat instans dan memulai alur kerja. Berikut adalah kategori pemicu umum:

  • Pemicu polling, yang memeriksa titik akhir layanan secara berkala

  • Pemicu dorong, yang membuat langganan ke titik akhir dan menyediakan URL panggilan balik sehingga titik akhir dapat memberi tahu pemicu saat peristiwa yang ditentukan terjadi atau data tersedia. Pemicu kemudian menunggu respons titik akhir sebelum pengaktifan.

Pemicu memiliki elemen tingkat atas ini, meskipun beberapa bersifat opsional:

"<trigger-name>": {
   "type": "<trigger-type>",
   "inputs": { "<trigger-inputs>" },
   "recurrence": { 
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "conditions": [ "<array-with-conditions>" ],
   "runtimeConfiguration": { "<runtime-config-options>" },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
},

Diperlukan

Value Tipe Deskripsi
<trigger-name> String Nama untuk pemicu
<trigger-type> String Jenis pemicu seperti "Http" atau "ApiConnection"
<trigger-inputs> Objek JSON Input yang menentukan perilaku pemicu
<time-unit> String Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan"
<number-of-time-units> Bilangan bulat Nilai yang menentukan seberapa sering pemicu diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga pemicu diaktifkan lagi

Berikut adalah interval minimum dan maksimum:

- Bulan: 1-16 bulan
- Hari: 1-500 hari
- Jam: 1-12.000 jam
- Menit: 1-72.000 menit
- Detik: 1-9.999.999 detik

Misalnya, jika intervalnya adalah 6, dan frekuensinya adalah "Bulan", maka pengulangannya adalah setiap 6 bulan.

Opsional

Value Tipe Deskripsi
<array-with-conditions> Array Array yang berisi satu atau beberapa kondisi yang menentukan apakah akan menjalankan alur kerja. Hanya tersedia untuk pemicu.
<runtime-config-options> Objek JSON Anda dapat mengubah perilaku runtime bahasa umum pemicu dengan menyetel runtimeConfiguration properti. Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum.
<splitOn-expression> String Untuk pemicu yang menampilkan array, Anda dapat menentukan ekspresi yang memisahkan atau memperdebatkan item array menjadi beberapa contoh alur kerja untuk diproses.
<operation-option> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Daftar jenis pemicu

Setiap jenis pemicu memiliki antarmuka dan input berbeda yang menentukan perilaku pemicu.

Pemicu bawaan

Jenis pemicu Deskripsi
HTTP Memeriksa atau polling titik akhir apa pun. Titik akhir ini harus sesuai dengan kontrak pemicu tertentu baik dengan menggunakan 202 pola asinkron atau dengan menampilkan array.
HTTPWebhook Membuat titik akhir yang dapat dipanggil untuk aplikasi logika Anda tapi memanggil URL yang ditentukan untuk mendaftar atau tidak mendaftar.
Pengulangan Pengaktifan berdasarkan jadwal yang ditentukan. Anda dapat menyetel tanggal dan waktu mendatang untuk mengaktifkan pemicu ini. Berdasarkan frekuensi, Anda juga dapat menentukan waktu dan hari untuk menjalankan alur kerja Anda.
Permintaan Membuat titik akhir yang dapat dipanggil untuk aplikasi logika Anda dan juga dikenal sebagai pemicu "manual". Misalnya, lihat Memanggil, memicu, atau menyusun alur kerja dengan titik akhir HTTP.

Pemicu API terkelola

Jenis pemicu Deskripsi
ApiConnection Memeriksa atau melakukan polling titik akhir dengan menggunakan API yang dikelola Microsoft atau "konektor".
ApiConnectionWebhook Membuat titik akhir yang dapat dipanggil untuk alur kerja aplikasi logika Anda dengan memanggil API yang dikelola Microsoft atau "konektor" untuk berlangganan dan berhenti berlangganan.

Pemicu - Referensi detail

Pemicu APIConnection

Pemicu ini memeriksa atau melakukan polling titik akhir dengan menggunakan API yang dikelola Microsoft atau "konektor" sehingga parameter untuk pemicu ini dapat berbeda berdasarkan titik akhir. Banyak bagian dalam definisi pemicu ini bersifat opsional. Perilaku pemicu tergantung pada apakah bagian disertakan atau tidak.

"<APIConnection_trigger_name>": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<connection-name>']['connectionId']"
         }
      },
      "method": "<method-type>",
      "path": "/<api-operation>",
      "retryPolicy": { "<retry-behavior>" },
      "queries": { "<query-parameters>" }
   },
   "recurrence": { 
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
}

Diperlukan

Value Tipe Deskripsi
<APIConnection_trigger_name> String Nama untuk pemicu
<nama-koneksi> String Nama untuk koneksi ke API terkelola yang digunakan alur kerja
<method-type> String Metode HTTP untuk berkomunikasi dengan API terkelola: "GET", "PUT", "POST", "PATCH", "DELETE"
<api-operation> String Operasi API yang akan dipanggil
<time-unit> String Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan"
<number-of-time-units> Bilangan bulat Nilai yang menentukan seberapa sering pemicu diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga pemicu diaktifkan lagi

Berikut adalah interval minimum dan maksimum:

- Bulan: 1-16 bulan
- Hari: 1-500 hari
- Jam: 1-12.000 jam
- Menit: 1-72.000 menit
- Detik: 1-9.999.999 detik

Misalnya, jika intervalnya adalah 6, dan frekuensinya adalah "Bulan", maka pengulangannya adalah setiap 6 bulan.

Opsional

Value Tipe Deskripsi
<retry-behavior> Objek JSON Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi.
<query-parameters> Objek JSON Parameter kueri apa pun yang disertakan dengan panggilan API. Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan.
<max-runs> Bilangan bulat Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu.
<max-runs-queue> Bilangan bulat Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu.
<splitOn-expression> String Untuk pemicu yang menampilkan array, ekspresi ini mereferensikan array untuk digunakan sehingga Anda dapat membuat dan menjalankan instans alur kerja untuk setiap item array, daripada menggunakan perulangan "untuk setiap".

Misalnya, ekspresi ini menunjukkan item dalam array yang ditampilkan dalam konten isi pemicu: @triggerbody()?['value']

<operation-option> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Output

Elemen Tipe Deskripsi
header Objek JSON header dari respons
body Objek JSON Isi dari respons
status code Bilangan bulat Kode status dari respons

Contoh

Definisi pemicu ini memeriksa email setiap hari di dalam kotak masuk untuk akun kantor atau sekolah:

"When_a_new_email_arrives": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "get",
      "path": "/Mail/OnNewEmail",
      "queries": {
          "fetchOnlyWithAttachment": false,
          "folderPath": "Inbox",
          "importance": "Any",
          "includeAttachments": false
      }
   },
   "recurrence": {
      "frequency": "Day",
      "interval": 1
   }
}

Pemicu ApiConnectionWebhook

Pemicu ini mengirim permintaan langganan ke titik akhir menggunakan API yang dikelola Microsoft, menyediakan URL panggilan balik ke tempat titik akhir dapat mengirim respons, dan menunggu titik akhir merespons. Untuk informasi selengkapnya, lihat Langganan titik akhir.

"<ApiConnectionWebhook_trigger_name>": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "body": {
          "NotificationUrl": "@{listCallbackUrl()}"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<connection-name>']['connectionId']"
         }
      },
      "retryPolicy": { "<retry-behavior>" },
      "queries": "<query-parameters>"
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-run-queue>
      }
   },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
}

Diperlukan

Value Tipe Deskripsi
<nama-koneksi> String Nama untuk koneksi ke API terkelola yang digunakan alur kerja
<body-content> Objek JSON Konten pesan apa pun yang dikirim sebagai payload ke API terkelola

Opsional

Value Tipe Deskripsi
<retry-behavior> Objek JSON Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi.
<query-parameters> Objek JSON Parameter kueri apa pun untuk disertakan dengan panggilan API

Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan.

<max-runs> Bilangan bulat Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu.
<max-runs-queue> Bilangan bulat Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu.
<splitOn-expression> String Untuk pemicu yang menampilkan array, ekspresi ini mereferensikan array untuk digunakan sehingga Anda dapat membuat dan menjalankan instans alur kerja untuk setiap item array, daripada menggunakan perulangan "untuk setiap".

Misalnya, ekspresi ini menunjukkan item dalam array yang ditampilkan dalam konten isi pemicu: @triggerbody()?['value']

<operation-option> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Contoh

Definisi pemicu ini berlangganan API Office 365 Outlook, menyediakan URL panggilan balik ke titik akhir API, dan menunggu titik akhir merespons saat email baru tiba.

"When_a_new_email_arrives_(webhook)": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "body": {
         "NotificationUrl": "@{listCallbackUrl()}" 
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "path": "/MailSubscription/$subscriptions",
      "queries": {
          "folderPath": "Inbox",
          "hasAttachment": "Any",
          "importance": "Any"
      }
   },
   "splitOn": "@triggerBody()?['value']"
}

Pemicu HTTP

Pemicu ini mengirimkan permintaan ke titik akhir HTTP atau HTTPS yang ditentukan berdasarkan jadwal pengulangan yang ditentukan. Pemicu kemudian memeriksa respons untuk menentukan apakah alur kerja berjalan. Untuk informasi selengkapnya, lihat Memanggil titik akhir layanan melalui HTTP atau HTTPS dari Azure Logic Apps.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "<method-type>",
      "uri": "<HTTP-or-HTTPS-endpoint-URL>",
      "headers": { "<header-content>" },
      "queries": "<query-parameters>",
      "body": "<body-content>",
      "authentication": { "<authentication-type-and-property-values>" },
      "retryPolicy": {
         "type": "<retry-behavior>"
      }
   },
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Diperlukan

Properti Nilai Tipe Deskripsi
method <method-type> String Metode yang digunakan untuk mengirim permintaan keluar: "GET", "PUT", "POST", "PATCH", atau "DELETE"
uri <HTTP-or-HTTPS-endpoint-URL> String URL titik akhir HTTP atau HTTPS tempat Anda ingin mengirim permintaan keluar. Ukuran string maksimum: 2 KB

Untuk layanan atau sumber daya Azure, sintaks URI ini menyertakan ID sumber daya dan jalur ke sumber daya yang ingin Anda akses.

frequency <time-unit> String Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan"
interval <number-of-time-units> Bilangan bulat Nilai yang menentukan seberapa sering pemicu diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga pemicu diaktifkan lagi

Berikut adalah interval minimum dan maksimum:

- Bulan: 1-16 bulan
- Hari: 1-500 hari
- Jam: 1-12.000 jam
- Menit: 1-72.000 menit
- Detik: 1-9.999.999 detik

Misalnya, jika intervalnya adalah 6, dan frekuensinya adalah "Bulan", maka pengulangannya adalah setiap 6 bulan.

Opsional

Properti Nilai Tipe Deskripsi
headers <header-content> Objek JSON Header apa pun yang perlu Anda sertakan dengan permintaan

Misalnya, untuk mengatur bahasa dan jenis:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

queries <query-parameters> Objek JSON Parameter kueri apa pun yang perlu Anda gunakan dalam permintaan

Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan.

body <body-content> Objek JSON Konten pesan untuk dikirim sebagai payload dengan permintaan
authentication <authentication-type-and-property-values> Objek JSON Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar. Selain Scheduler, authority properti didukung. Saat tidak ditentukan, nilai defaultnya adalah https://management.azure.com/, tapi Anda dapat menggunakan nilai yang berbeda.
retryPolicy > type <retry-behavior> Objek JSON Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi.
runs <max-runs> Bilangan bulat Secara default, instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu.
maximumWaitingRuns <max-runs-queue> Bilangan bulat Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu.
operationOptions <operation-option> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Output

Elemen Tipe Deskripsi
headers Objek JSON header dari respons
body Objek JSON Isi dari respons
status code Bilangan bulat Kode status dari respons

Persyaratan untuk permintaan masuk

Agar berfungsi dengan baik dengan aplikasi logika Anda, titik akhir harus sesuai dengan pola pemicu atau kontrak tertentu, dan mengenali properti respons ini:

Properti Wajib Deskripsi
Kode status Ya Kode status "200 OK" mulai dijalankan. Kode status lainnya tidak mulai dijalankan.
Header coba lagi-setelah Tidak Jumlah detik hingga aplikasi logika Anda polling titik akhir lagi
Header lokasi Tidak URL yang akan dipanggil pada interval polling berikutnya. Jika tidak ditentukan, URL asli akan digunakan.

Contoh perilaku untuk permintaan yang berbeda

Kode status Coba lagi setelah Perilaku
200 {none} Jalankan alur kerja, lalu periksa lagi data lainnya setelah pengulangan yang ditentukan.
200 10 detik Jalankan alur kerja, lalu periksa lagi data lainnya setelah 10 detik.
202 60 detik Jangan memicu alur kerja. Upaya berikutnya terjadi dalam satu menit, tergantung pada pengulangan yang ditentukan. Jika pengulangan yang ditentukan kurang dari satu menit, header coba lagi diutamakan. Jika tidak, pengulangan yang ditentukan digunakan.
400 {none} Permintaan buruk, jangan jalankan alur kerja. Jika tidak retryPolicy didefinisikan, maka kebijakan default digunakan. Setelah mencapai jumlah pengulangan, pemicu memeriksa data lagi setelah pengulangan yang ditentukan.
500 {none} Kesalahan server, jangan jalankan alur kerja. Jika tidak retryPolicy didefinisikan, maka kebijakan default digunakan. Setelah mencapai jumlah pengulangan, pemicu memeriksa data lagi setelah pengulangan yang ditentukan.

Pemicu HTTPWebhook

Pemicu ini membuat aplikasi logika Anda dapat dihubungi dengan membuat titik akhir yang dapat mendaftarkan langganan dengan memanggil URL titik akhir yang ditentukan. Saat Anda membuat pemicu ini di alur kerja Anda, permintaan keluar melakukan panggilan untuk mendaftarkan langganan. Dengan begitu, pemicu bisa mulai mendengarkan peristiwa. Saat operasi membuat pemicu ini tidak valid, permintaan keluar secara otomatis melakukan panggilan untuk membatalkan langganan. Untuk informasi selengkapnya, lihat Langganan titik akhir.

Anda juga dapat menentukan batas asinkron pada pemicu HTTPWebhook. Perilaku pemicu tergantung pada bagian yang Anda gunakan atau hilangkan.

"HTTP_Webhook": {
   "type": "HttpWebhook",
   "inputs": {
      "subscribe": {
         "method": "<method-type>",
         "uri": "<endpoint-subscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "retryPolicy": { "<retry-behavior>" }
         },
      },
      "unsubscribe": {
         "method": "<method-type>",
         "url": "<endpoint-unsubscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" }
      }
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Beberapa nilai, seperti, <jenis metode>, tersedia untuk objek "subscribe" dan "unsubscribe".

Diperlukan

Value Tipe Deskripsi
<method-type> String Metode HTTP yang digunakan untuk permintaan langganan: "GET", "PUT", "POST", "PATCH", atau "DELETE"
<endpoint-subscribe-URL> String URL titik akhir tempat mengirim permintaan langganan

Opsional

Value Tipe Deskripsi
<method-type> String Metode HTTP yang digunakan untuk permintaan pembatalan: "GET", "PUT", "POST", "PATCH", atau "DELETE"
<endpoint-unsubscribe-URL> String URL titik akhir tempat mengirim permintaan pembatalan
<body-content> String Konten pesan apa pun yang akan dikirim dalam permintaan langganan atau pembatalan
<authentication-type> Objek JSON Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar.
<retry-behavior> Objek JSON Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi.
<max-runs> Bilangan bulat Secara default, semua instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu.
<max-runs-queue> Bilangan bulat Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu.
<operation-option> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Output

Elemen Tipe Deskripsi
header Objek JSON header dari respons
body Objek JSON Isi dari respons
status code Bilangan bulat Kode status dari respons

Contoh

Pemicu ini membuat langganan ke titik akhir yang ditentukan, menyediakan URL panggilan balik yang unik, dan menunggu artikel teknologi yang baru diterbitkan.

"HTTP_Webhook": {
   "type": "HttpWebhook",
   "inputs": {
      "subscribe": {
         "method": "POST",
         "uri": "https://pubsubhubbub.appspot.com/subscribe",
         "body": {
            "hub.callback": "@{listCallbackUrl()}",
            "hub.mode": "subscribe",
            "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
         },
      },
      "unsubscribe": {
         "method": "POST",
         "url": "https://pubsubhubbub.appspot.com/subscribe",
         "body": {
            "hub.callback": "@{workflow().endpoint}@{listCallbackUrl()}",
            "hub.mode": "unsubscribe",
            "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
         }
      }
   }
}

Pemicu Pengulangan

Pemicu ini berjalan berdasarkan jadwal pengulangan yang ditentukan dan menyediakan cara mudah untuk membuat alur kerja yang berjalan secara teratur.

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
      "startTime": "<start-date-time-with-format-YYYY-MM-DDThh:mm:ss>",
      "timeZone": "<time-zone>",
      "schedule": {
         // Applies only when frequency is Day or Week. Separate values with commas.
         "hours": [ <one-or-more-hour-marks> ], 
         // Applies only when frequency is Day or Week. Separate values with commas.
         "minutes": [ <one-or-more-minute-marks> ], 
         // Applies only when frequency is Week. Separate values with commas.
         "weekDays": [ "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday" ] 
      }
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Diperlukan

Value Tipe Deskripsi
<time-unit> String Satuan waktu yang menggambarkan seberapa sering pemicu diaktifkan: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan"
<number-of-time-units> Bilangan bulat Nilai yang menentukan seberapa sering pemicu diaktifkan berdasarkan frekuensi, yang merupakan jumlah unit waktu untuk menunggu hingga pemicu diaktifkan lagi

Berikut adalah interval minimum dan maksimum:

- Bulan: 1-16 bulan
- Hari: 1-500 hari
- Jam: 1-12.000 jam
- Menit: 1-72.000 menit
- Detik: 1-9.999.999 detik

Misalnya, jika intervalnya adalah 6, dan frekuensinya adalah "Bulan", maka pengulangannya adalah setiap 6 bulan.

Opsional

Value Tipe Deskripsi
<start-date-time-with-format-YYYY-MM-DDThh:mm:ss> String Tanggal dan waktu mulai dalam format ini:

YYYY-MM-DDThh:mm:ss jika Anda menentukan zona waktu

-Atau-

YYYY-MM-DDThh:mm:ssZ jika Anda tidak menentukan zona waktu

Jadi misalnya, jika Anda ingin 18 September 2017 pukul 14.00, maka tentukan "18--09-2017T14:00:00" dan tentukan zona waktu seperti "Waktu Standar Pasifik", atau tentukan "18-09-2017T14:00:00Z" tanpa zona waktu.

Catatan: Waktu mulai ini memiliki maksimum 49 tahun di masa depan dan harus mengikuti spesifikasi waktu tanggal ISO 8601 dalam format waktu tanggal UTC, tapi tanpa offset UTC. Jika Anda tidak menentukan zona waktu, Anda harus menambahkan huruf "Z" di akhir tanpa spasi. "Z" ini mengacu pada waktu bahariyang ekuivalen.

Untuk jadwal sederhana, waktu mulai adalah kejadian pertama, sedangkan untuk jadwal kompleks, pemicu tidak aktif lebih cepat dari waktu mulai. Untuk informasi selengkapnya tentang tanggal dan waktu mulai, lihat Membuat dan menjadwalkan tugas yang berjalan secara rutin.

<time-zone> String Hanya berlaku saat Anda menentukan waktu mulai karena pemicu ini tidak menerima offset UTC. Tentukan zona waktu yang ingin Anda terapkan.
<one-or-more-hour-marks> Bilangan bulat atau array bilangan bulat Jika Anda menentukan "Hari" atau "Minggu" untuk frequency, Anda dapat menentukan satu atau beberapa bilangan bulat dari 0 hingga 23, dipisahkan dengan koma, sebagai jam dalam sehari saat Anda ingin menjalankan alur kerja.

Misalnya, jika Anda menentukan "10", "12", dan "14", Anda mendapatkan 10.00, 12.00, dan 14.00 sebagai tanda jam.

<one-or-more-minute-marks> Bilangan bulat atau array bilangan bulat Jika Anda menentukan "Hari" atau "Minggu" untuk frequency, Anda dapat menentukan satu atau beberapa bilangan bulat dari 0 hingga 59, dipisahkan dengan koma, sebagai menit dalam sejam saat Anda ingin menjalankan alur kerja.

Misalnya, Anda dapat menentukan "30" sebagai tanda menit dan menggunakan contoh sebelumnya selama berjam-jam dalam sehari, Anda mendapatkan 10.30, 12.30, dan 14.30.

weekDays String atau array string Jika Anda menentukan "Minggu" untuk frequency, Anda dapat menentukan satu atau beberapa hari, dipisahkan dengan koma, saat Anda ingin menjalankan alur kerja: "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", dan "Minggu"
<max-runs> Bilangan bulat Secara default, semua instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu.
<max-runs-queue> Bilangan bulat Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu.
<operation-option> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Contoh 1

Pemicu pengulangan dasar ini berjalan setiap hari:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Day",
      "interval": 1
   }
}

Contoh 2

Anda dapat menentukan tanggal dan waktu mulai untuk mengaktifkan pemicu. Pemicu pengulangan ini dimulai pada tanggal yang ditentukan lalu aktif setiap hari:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Day",
      "interval": 1,
      "startTime": "2017-09-18T00:00:00Z"
   }
}

Contoh 3

Pemicu pengulangan ini dimulai pada 9 September 2017 pukul 14.00, dan aktif setiap minggu setiap Senin pukul 10.30, 12.30, dan 14.30 Waktu Standar Pasifik:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Week",
      "interval": 1,
      "schedule": {
         "hours": [ 10, 12, 14 ],
         "minutes": [ 30 ],
         "weekDays": [ "Monday" ]
      },
      "startTime": "2017-09-07T14:00:00",
      "timeZone": "Pacific Standard Time"
   }
}

Untuk informasi selengkapnya serta contoh pemicu ini, lihat Membuat dan menjadwalkan tugas yang berjalan secara rutin.

Pemicu Permintaan

Pemicu ini membuat aplikasi logika Anda dapat dipanggil dengan membuat titik akhir yang dapat menerima permintaan masuk. Untuk pemicu ini, berikan skema JSON yang menjelaskan dan memvalidasi muatan atau input yang diterima pemicu dari permintaan masuk. Skema ini juga membuat properti pemicu lebih mudah direferensikan dari tindakan di kemudian hari dalam alur kerja.

Untuk memanggil pemicu ini, Anda harus menggunakan listCallbackUrl API, yang dijelaskan dalam REST API Layanan Alur Kerja. Untuk mempelajari cara menggunakan pemicu ini sebagai titik akhir HTTP, lihat Alur kerja panggilan, pemicu, atau lapis dengan titik akhir HTTP.

"manual": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "<method-type>",
      "relativePath": "<relative-path-for-accepted-parameter>",
      "schema": {
         "type": "object",
         "properties": { 
            "<property-name>": {
               "type": "<property-type>"
            }
         },
         "required": [ "<required-properties>" ]
      }
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-run-queue>
      },
   },
   "operationOptions": "<operation-option>"
}

Diperlukan

Value Tipe Deskripsi
<property-name> String Nama properti dalam skema JSON, yang menggambarkan payload
<property-type> String Jenis properti

Opsional

Value Tipe Deskripsi
<method-type> String Metode yang harus digunakan permintaan masuk untuk memanggil aplikasi logika Anda: "GET", "PUT", "POST", "PATCH", "DELETE"
<relative-path-for-accepted-parameter> String Jalur relatif untuk parameter yang dapat diterima URL titik akhir Anda
<required-properties> Array Satu atau beberapa properti yang memerlukan nilai
<max-runs> Bilangan bulat Secara default, semua instans alur kerja berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi pemicu.
<max-runs-queue> Bilangan bulat Saat alur kerja Anda sudah menjalankan jumlah maksimum instans, yang dapat Anda ubah berdasarkan runtimeConfiguration.concurrency.runs properti, setiap eksekusi baru dimasukkan ke dalam antrean ini hingga batas default. Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu.
<operation-option> String Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Contoh

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

"manual": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "POST",
      "schema": {
         "type": "object",
         "properties": {
            "customerName": {
               "type": "String"
            },
            "customerAddress": { 
               "type": "Object",
               "properties": {
                  "streetAddress": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  }
               }
            }
         }
      }
   }
}

Kondisi pemicu

Untuk pemicu apa pun, dan hanya pemicu, Anda bisa menyertakan array yang berisi satu atau beberapa ekspresi untuk kondisi yang menentukan apakah alur kerja harus berjalan. Untuk menambahkan conditions properti ke pemicu di alur kerja Anda, buka aplikasi logika Anda di editor tampilan kode.

Misalnya, Anda dapat menentukan bahwa pemicu hanya aktif saat situs web menampilkan kesalahan server internal dengan mereferensikan kode status pemicu di conditions properti:

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Hour",
      "interval": 1
   },
   "conditions": [ {
      "expression": "@equals(triggers().code, 'InternalServerError')"
   } ]
}

Secara default, pemicu hanya akan aktif setelah mendapatkan respons "200 OK". Saat ekspresi mereferensikan kode status pemicu, perilaku default pemicu diganti. Jadi, jika Anda ingin pemicu aktif untuk lebih dari satu kode status, seperti kode status "200" dan "201", Anda harus menyertakan ekspresi ini sebagai kondisi Anda:

@or(equals(triggers().code, 200),equals(triggers().code, 201))

Memicu beberapa eksekusi pada array

Jika pemicu menampilkan array untuk diproses oleh alur kerja Anda, kadang perulangan "untuk setiap" mungkin terlalu lama untuk memproses setiap item array. Sebagai gantinya, Anda dapat menggunakan properti SplitOn properti di pemicu Anda untuk memperdebatkan array. Mendebat akan memisahkan item array dan memulai instans alur kerja baru yang berjalan untuk setiap item array. Pendekatan ini berguna, misalnya, saat Anda ingin polling titik akhir yang mungkin menampilkan beberapa item baru di antara interval polling.

Jika file Swagger pemicu Anda menjelaskan payload yang merupakan array, properti SplitOn secara otomatis ditambahkan ke pemicu Anda. Jika tidak, tambahkan properti ini di dalam payload respons yang memiliki array yang ingin Anda debat.

Sebelum Anda menggunakan kemampuan SplitOn, tinjau pertimbangan berikut:

  • Saat konkurensi pemicu diaktifkan, batas SplitOn berkurang secara signifikan. Jika jumlah item melebihi batas ini, kapabilitas SplitOn dinonaktifkan.

  • Anda tidak dapat menggunakan kemampuan SplitOn dengan pola respons sinkron. Alur kerja apa pun yang menggunakan properti SplitOn dan menyertakan tindakan respons berjalan secara asinkron dan segera mengirim respons 202 ACCEPTED.

  • Untuk jumlah maksimum item array yang dapat diproses splitOn dalam satu alur kerja, lihat Batas dan konfigurasi.

Contoh

Misalkan Anda memiliki pemicu HTTP yang memanggil API dan menerima respons ini:

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

Alur kerja hanya memerlukan konten dari array di Rows, sehingga Anda dapat membuat pemicu seperti contoh ini:

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

Catatan

Jika Anda menggunakan SplitOn perintah, Anda tidak bisa mendapatkan properti yang berada di luar array. Jadi misalnya, Anda tidak bisa mendapatkan status properti dalam respons yang ditampilkan dari API.

Untuk menghindari kegagalan jika Rows properti tidak ada, contoh ini menggunakan ? operator.

Definisi alur kerja Anda sekarang dapat digunakan @triggerBody().nameuntuk mendapatkan name nilai, yang "customer-name-one" berasal dari eksekusi pertama dan "customer-name-two" dari eksekusi kedua. Jadi, output pemicu Anda terlihat seperti contoh-contoh ini:

{
   "body": {
      "id": 938109380,
      "name": "customer-name-one"
   }
}
{
   "body": {
      "id": 938109381,
      "name": "customer-name-two"
   }
}

Gambaran umum tindakan

Microsoft Azure Logic Apps menyediakan berbagai jenis tindakan - masing-masing dengan input berbeda yang menentukan perilaku unik tindakan. Tindakan memiliki elemen tingkat tinggi ini, meskipun beberapa bersifat opsional:

"<action-name>": {
   "type": "<action-type>",
   "inputs": { 
      "<input-name>": { "<input-value>" },
      "retryPolicy": "<retry-behavior>" 
   },
   "runAfter": { "<previous-trigger-or-action-status>" },
   "runtimeConfiguration": { "<runtime-config-options>" },
   "operationOptions": "<operation-option>"
},

Diperlukan

Value Tipe Deskripsi
<action-name> String Nama untuk tindakan
<action-type> String Jenis tindakan, misalnya, "Http" atau "ApiConnection"
<input-name> String Nama untuk input yang mendefinisikan perilaku tindakan
<input-value> Bermacam-macam Nilai input, yang dapat menjadi string, bilangan bulat, objek JSON, dan sebagainya
<previous-trigger-or-action-status> Objek JSON Nama dan status yang dihasilkan untuk pemicu atau tindakan yang harus segera dijalankan sebelum tindakan saat ini dapat berjalan

Opsional

Value Tipe Deskripsi
<retry-behavior> Objek JSON Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat kebijakan Coba Lagi.
<runtime-config-options> Objek JSON Untuk beberapa tindakan, Anda dapat mengubah perilaku tindakan saat durasi dengan menyetel runtimeConfiguration properti. Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum.
<operation-option> String Untuk beberapa tindakan, Anda dapat mengubah perilaku default dengan menyetel operationOptions properti. Untuk informasi selengkapnya, lihat Opsi operasi.

Daftar jenis tindakan

Berikut adalah beberapa jenis tindakan yang umum digunakan:

Tindakan bawaan

Jenis tindakan Deskripsi
Tulis Membuat output tunggal dari input, yang dapat memiliki berbagai jenis.
Jalankan Kode JavaScript Jalankan cuplikan kode JavaScript yang sesuai dengan kriteria tertentu. Untuk persyaratan kode dan informasi selengkapnya, lihat Menambahkan dan menjalankan cuplikan kode dengan kode sebaris.
Fungsi Memanggil Azure Function.
HTTP Memanggil titik akhir HTTP.
Gabungkan Membuat string dari semua item dalam array dan memisahkan item tersebut dengan karakter pemisah tertentu.
Menguraikan JSON Membuat token yang mudah digunakan dari properti dalam konten JSON. Anda kemudian dapat mereferensikan properti tersebut dengan menyertakan token di aplikasi logika Anda.
Kueri Membuat string dari item dalam array lain berdasarkan kondisi atau filter.
Respons Membuat respons terhadap panggilan masuk atau permintaan.
Pilih Membuat array dengan objek JSON dengan mengubah item dari array lain berdasarkan peta yang ditentukan.
Table Membuat tabel CSV atau HTML dari array.
Mengakhiri Menghentikan alur kerja yang berjalan secara aktif.
Tunggu Menjeda alur kerja Anda untuk durasi yang ditentukan atau hingga tanggal dan waktu yang ditentukan.
Alur kerja Menumpuk alur kerja di dalam alur kerja lain.

Tindakan API terkelola

Jenis tindakan Deskripsi
ApiConnection Memanggil titik akhir HTTP dengan menggunakan API yang dikelola Microsoft.
ApiConnectionWebhook Berfungsi seperti HTTP Webhook tapi menggunakan API yang dikelola Microsoft.

Mengontrol tindakan alur kerja

Tindakan ini membantu Anda mengontrol eksekusi alur kerja dan menyertakan tindakan lain. Dari luar tindakan alur kerja kontrol, Anda bisa langsung mereferensikan tindakan di dalam tindakan alur kerja kontrol tersebut. Misalnya, jika Anda memiliki Http tindakan di dalam lingkup, Anda bisa mereferensikan @body('Http') ekspresi dari mana saja dalam alur kerja. Namun, tindakan yang ada di dalam tindakan alur kerja kontrol hanya dapat "berjalan setelah" tindakan lain yang berada dalam struktur alur kerja kontrol yang sama.

Jenis tindakan Deskripsi
ForEach Jalankan tindakan yang sama dalam perulangan untuk setiap item dalam array.
Jika Jalankan tindakan berdasarkan apakah kondisi yang ditentukan benar atau salah.
Cakupan Jalankan tindakan berdasarkan status grup dari serangkaian tindakan.
Sakelar Jalankan tindakan yang diatur ke dalam kasus saat nilai dari ekspresi, objek, atau token cocok dengan nilai yang ditentukan oleh setiap kasus.
Sampai Jalankan tindakan dalam perulangan hingga kondisi yang ditentukan benar.

Tindakan - Referensi detail

Tindakan APIConnection

Tindakan ini mengirimkan permintaan HTTP ke API yang dikelola Microsoft dan memerlukan informasi tentang API dan parameter ditambah referensi ke koneksi yang valid.

"<action-name>": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<api-name>']['connectionId']"
         },
         "<other-action-specific-input-properties>"        
      },
      "method": "<method-type>",
      "path": "/<api-operation>",
      "retryPolicy": "<retry-behavior>",
      "queries": { "<query-parameters>" },
      "<other-action-specific-properties>"
    },
    "runAfter": {}
}

Diperlukan

Value Tipe Deskripsi
<action-name> String Nama tindakan yang disediakan oleh konektor
<api-name> String Nama API yang dikelola Microsoft yang digunakan untuk koneksi
<method-type> String Metode HTTP untuk memanggil API: "GET", "PUT", "POST", "PATCH", atau "DELETE"
<api-operation> String Operasi API yang akan dipanggil

Opsional

Value Tipe Deskripsi
<other-action-specific-input-properties> Objek JSON Properti input lain yang berlaku untuk tindakan khusus ini
<retry-behavior> Objek JSON Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi.
<query-parameters> Objek JSON Parameter kueri apa pun yang disertakan dengan panggilan API.

Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan.

<other-action-specific-properties> Objek JSON Properti lain yang berlaku untuk tindakan khusus ini

Contoh

Definisi ini menguraikan tindakan Kirim email untuk konektor Office 365 Outlook, yang merupakan API yang dikelola Microsoft:

"Send_an_email": {
   "type": "ApiConnection",
   "inputs": {
      "body": {
         "Body": "Thank you for your membership!",
         "Subject": "Hello and welcome!",
         "To": "Sophie.Owen@contoso.com"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "POST",
      "path": "/Mail"
    },
    "runAfter": {}
}

Tindakan APIConnectionWebhook

Pemicu ini mengirim permintaan langganan ke titik akhir HTTP menggunakan API yang dikelola Microsoft, menyediakan URL panggilan balik ke tempat titik akhir dapat mengirim respons, dan menunggu titik akhir merespons. Untuk informasi selengkapnya, lihat Langganan titik akhir.

"<action-name>": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "subscribe": {
         "method": "<method-type>",
         "uri": "<api-subscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "retryPolicy": "<retry-behavior>",
         "queries": { "<query-parameters>" },
         "<other-action-specific-input-properties>"
      },
      "unsubscribe": {
         "method": "<method-type>",
         "uri": "<api-unsubscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "<other-action-specific-properties>"
      },
   },
   "runAfter": {}
}

Beberapa nilai, seperti, <jenis metode>, tersedia untuk objek "subscribe" dan "unsubscribe".

Diperlukan

Value Tipe Deskripsi
<action-name> String Nama tindakan yang disediakan oleh konektor
<method-type> String Metode HTTP yang digunakan untuk berlangganan atau berhenti berlangganan dari titik akhir: "GET", "PUT", "POST", "PATCH", atau "DELETE"
<api-subscribe-URL> String URI yang digunakan untuk berlangganan API

Opsional

Value Tipe Deskripsi
<api-unsubscribe-URL> String URI yang digunakan untuk berhenti berlangganan dari API
<header-content> Objek JSON Header apa pun yang akan dikirim dalam permintaan

Misalnya, untuk mengatur bahasa dan mengetik pada permintaan:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

<body-content> Objek JSON Konten pesan apa pun yang akan dikirim dalam permintaan
<authentication-type> Objek JSON Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar.
<retry-behavior> Objek JSON Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi.
<query-parameters> Objek JSON Parameter kueri apa pun untuk disertakan dengan panggilan API

Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan.

<other-action-specific-input-properties> Objek JSON Properti input lain yang berlaku untuk tindakan khusus ini
<other-action-specific-properties> Objek JSON Properti lain yang berlaku untuk tindakan khusus ini

Anda juga dapat menentukan batasan pada tindakan ApiConnectionWebhook dengan cara yang sama seperti batas asinkron HTTP.

Menulis tindakan

Tindakan ini membuat output tunggal dari beberapa input, termasuk ekspresi. Output dan input dapat memiliki jenis apa pun yang didukung oleh Azure Logic Apps secara asli, seperti array, objek JSON, XML, dan biner. Anda kemudian dapat menggunakan output tindakan di tindakan lain.

"Compose": {
   "type": "Compose",
   "inputs": "<inputs-to-compose>",
   "runAfter": {}
},

Diperlukan

Value Tipe Deskripsi
<inputs-to-compose> Mana pun Input untuk membuat output tunggal

Contoh 1

Definisi tindakan ini bergabung abcdefg dengan spasi berikutnya dan nilai 1234:

"Compose": {
   "type": "Compose",
   "inputs": "abcdefg 1234",
   "runAfter": {}
},

Berikut adalah output yang dibuat oleh tindakan ini:

abcdefg 1234

Contoh 2

Definisi tindakan ini menggabungkan variabel string yang berisi abcdefg dan variabel bilangan bulat yang berisi 1234:

"Compose": {
   "type": "Compose",
   "inputs": "@{variables('myString')}@{variables('myInteger')}",
   "runAfter": {}
},

Berikut adalah output yang dibuat oleh tindakan ini:

"abcdefg1234"

Jalankan tindakan Kode JavaScript

Tindakan ini menjalankan cuplikan kode JavaScript dan menampilkan hasilnya melalui token yang nantinya dapat direferensikan oleh tindakan selanjutnya dalam arus kerja.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "<JavaScript-code-snippet>",
      "explicitDependencies": {
         "actions": [ <preceding-actions> ],
         "includeTrigger": true
      }
   },
   "runAfter": {}
}

Diperlukan

Value Tipe Deskripsi
<JavaScript-code-snippet> Bervariasi Kode JavaScript yang ingin Anda jalankan. Untuk persyaratan kode dan informasi selengkapnya, lihat Menjalankan cuplikan kode dalam alur kerja.

Dalam code atribut, cuplikan kode Anda dapat menggunakan objek baca-saja workflowContext sebagai input. Objek ini memiliki subproperti yang memberi akses pada kode Anda ke hasil dari pemicu dan tindakan sebelumnya di alur kerja Anda. Untuk informasi selengkapnya tentang workflowContext objek, lihat pemicu Referensi dan hasil tindakan menggunakan objek workflowContext.

Diperlukan dalam beberapa kasus

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 Tipe Deskripsi
<tindakan sebelumnya> Array string Array dengan nama tindakan dalam format JSON sebagai dependensi. Pastikan untuk menggunakan nama tindakan yang muncul dalam definisi alur kerja Anda tempat nama tindakan menggunakan garis bawah (_), bukan spasi (" ").

Contoh 1

Tindakan ini menjalankan kode untuk mendapatkan nama alur kerja aplikasi logika Anda dan menampilkan teks "Halo dunia dari <logic-app-name>" sebagai hasilnya. Dalam contoh ini, kode mereferensikan nama alur kerja dengan mengakses workflowContext.workflow.name properti melalui objek baca-sajaworkflowContext. Untuk informasi selengkapnya tentang menggunakan workflowContext objek, lihat pemicu Referensi dan hasil tindakan dalam kode Anda.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var text = \"Hello world from \" + workflowContext.workflow.name;\r\n\r\nreturn text;"
   },
   "runAfter": {}
}

Contoh 2

Tindakan ini menjalankan kode dalam alur kerja aplikasi logika yang dipicu saat email baru masuk ke akun Outlook. Alur kerja ini juga menggunakan tindakan Office 365 Outlook Kirim email persetujuan yang meneruskan konten dari email yang diterima bersama dengan permintaan persetujuan.

Kode mengekstrak alamat email dari properti pesan email Body, dan menampilkan alamat bersama dengan nilai properti SelectedOption dari tindakan persetujuan. Tindakan secara eksplisit menyertakan tindakan Kirim email persetujuan sebagai dependensi pada objek actions di dalam objek explicitDependencies.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var myResult = /(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\r\n\r\nvar email = workflowContext.trigger.outputs.body.Body;\r\n\r\nvar reply = workflowContext.actions.Send_approval_email.outputs.body.SelectedOption;\r\n\r\nreturn email.match(myResult) + \" - \" + reply;\r\n;",
      "explicitDependencies": {
         "actions": [
            "Send_approval_email"
         ]
      }
   },
   "runAfter": {}
}

Tindakan fungsi

Tindakan ini memanggil fungsi Azure yang dibuat sebelumnya.

"<Azure-function-name>": {
   "type": "Function",
   "inputs": {
     "function": {
        "id": "<Azure-function-ID>"
      },
      "method": "<method-type>",
      "headers": { "<header-content>" },
      "body": { "<body-content>" },
      "queries": { "<query-parameters>" } 
   },
   "runAfter": {}
}

Diperlukan

Value Tipe Deskripsi
<Azure-function-ID> String ID sumber daya untuk fungsi Azure yang ingin Anda panggil. Berikut adalah format untuk nilai ini:

"/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Web/sites/<Azure-function-app-name>/functions/<Azure-function-name>"

<method-type> String Metode HTTP yang digunakan untuk memanggil fungsi: "GET", "PUT", "POST", "PATCH", atau "DELETE"

Jika tidak ditentukan, defaultnya adalah metode "POST".

Opsional

Value Tipe Deskripsi
<header-content> Objek JSON Header apa pun yang akan dikirim dengan panggilan

Misalnya, untuk mengatur bahasa dan mengetik pada permintaan:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

<body-content> Objek JSON Konten pesan apa pun yang akan dikirim dalam permintaan
<query-parameters> Objek JSON Parameter kueri apa pun untuk disertakan dengan panggilan API

Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan.

<other-action-specific-input-properties> Objek JSON Properti input lain yang berlaku untuk tindakan khusus ini
<other-action-specific-properties> Objek JSON Properti lain yang berlaku untuk tindakan khusus ini

Saat Anda menyimpan aplikasi logika, mesin Azure Logic Apps melakukan pemeriksaan ini pada fungsi yang direferensikan:

  • Alur kerja Anda harus memiliki akses ke fungsi tersebut.

  • Alur kerja Anda hanya dapat menggunakan pemicu HTTP standar atau pemicu webhook JSON generik.

    Mesin Azure Logic Apps mendapatkan dan cache URL pemicu, yang digunakan saat runtime. Namun, jika ada operasi yang tidak mengesahkan URL cache, tindakan Fungsi gagal pada runtime bahasa umum. Untuk memperbaiki masalah ini, simpan lagi aplikasi logika sehingga aplikasi logika tersebut mendapatkan dan meng-cache URL pemicu lagi.

  • Fungsi ini tidak dapat memiliki rute yang ditentukan.

  • Hanya tingkat otorisasi "fungsi" dan "anonim" yang diizinkan.

Contoh

Definisi tindakan ini memanggil fungsi "GetProductID" yang dibuat sebelumnya:

"GetProductID": {
   "type": "Function",
   "inputs": {
     "function": {
        "id": "/subscriptions/<XXXXXXXXXXXXXXXXXXXX>/resourceGroups/myLogicAppResourceGroup/providers/Microsoft.Web/sites/InventoryChecker/functions/GetProductID"
      },
      "method": "POST",
      "headers": { 
          "x-ms-date": "@utcnow()"
       },
      "body": { 
          "Product_ID": "@variables('ProductID')"
      }
   },
   "runAfter": {}
}

Tindakan HTTP

Tindakan ini mengirim permintaan ke titik akhir HTTP atau HTTPS yang ditentukan dan memeriksa respons untuk menentukan apakah alur kerja berjalan. Untuk informasi selengkapnya, lihat Memanggil titik akhir layanan melalui HTTP atau HTTPS dari Azure Logic Apps.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "<method-type>",
      "uri": "<HTTP-or-HTTPS-endpoint-URL>",
      "headers": { "<header-content>" },
      "queries": { "<query-parameters>" },
      "body": "<body-content>",
      "authentication": { "<authentication-type-and-property-values>" },
      "retryPolicy": {
         "type": "<retry-behavior>"
      },
   },
   "runAfter": {}
}

Diperlukan

Properti Nilai Tipe Deskripsi
method <method-type> String Metode yang digunakan untuk mengirim permintaan keluar: "GET", "PUT", "POST", "PATCH", atau "DELETE"
uri <HTTP-or-HTTPS-endpoint-URL> String URL titik akhir HTTP atau HTTPS tempat Anda ingin mengirim permintaan keluar. Ukuran string maksimum: 2 KB

Untuk layanan atau sumber daya Azure, sintaks URI ini menyertakan ID sumber daya dan jalur ke sumber daya yang ingin Anda akses.

Opsional

Properti Nilai Tipe Deskripsi
headers <header-content> Objek JSON Header apa pun yang perlu Anda sertakan dengan permintaan

Misalnya, untuk mengatur bahasa dan jenis:

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }

queries <query-parameters> Objek JSON Parameter kueri apa pun yang perlu Anda gunakan dalam permintaan

Misalnya, "queries": { "api-version": "2018-01-01" } objek ditambahkan ?api-version=2018-01-01 ke panggilan.

body <body-content> Objek JSON Konten pesan untuk dikirim sebagai payload dengan permintaan
authentication <authentication-type-and-property-values> Objek JSON Model autentikasi yang digunakan permintaan untuk mengautentikasi permintaan keluar. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar. Selain Scheduler, authority properti didukung. Saat tidak ditentukan, nilai defaultnya adalah https://management.azure.com/, tapi Anda dapat menggunakan nilai yang berbeda.
retryPolicy > type <retry-behavior> Objek JSON Menyesuaikan perilaku mencoba kembali untuk kegagalan terputus-terputus, yang memiliki kode status 408, 429, serta 5XX, dan pengecualian konektivitas apa pun. Untuk informasi selengkapnya, lihat Kebijakan coba lagi.
<other-action-specific-input-properties> <input-property> Objek JSON Properti input lain yang berlaku untuk tindakan khusus ini
<other-action-specific-properties> <property-value> Objek JSON Properti lain yang berlaku untuk tindakan khusus ini

Contoh

Definisi tindakan ini mendapatkan berita terbaru dengan mengirim permintaan ke titik akhir yang ditentukan:

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "https://mynews.example.com/latest"
   }
}

Gabung dalam tindakan

Tindakan ini membuat string dari semua item dalam array dan memisahkan item tersebut dengan karakter pemisah tertentu.

"Join": {
   "type": "Join",
   "inputs": {
      "from": <array>,
      "joinWith": "<delimiter>"
   },
   "runAfter": {}
}

Diperlukan

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

Contoh

Misalkan Anda memiliki variabel "myIntegerArray" yang dibuat sebelumnya yang berisi array bilangan bulat ini:

[1,2,3,4]

Definisi tindakan ini mendapatkan nilai dari variabel dengan menggunakan variables() fungsi dalam ekspresi dan membuat string ini dengan nilai-nilai tersebut, yang dipisahkan dengan koma: "1,2,3,4"

"Join": {
   "type": "Join",
   "inputs": {
      "from": "@variables('myIntegerArray')",
      "joinWith": ","
   },
   "runAfter": {}
}

Mengurai tindakan JSON

Tindakan ini membuat bidang atau token yang mudah digunakan dari properti dalam konten JSON. Anda kemudian dapat mengakses properti tersebut di aplikasi logika Anda dengan menggunakan token sebagai gantinya. Misalnya, saat Anda ingin menggunakan output JSON dari layanan seperti Microsoft Azure Service Bus dan Microsoft Azure Cosmos DB, Anda dapat menyertakan tindakan ini di aplikasi logika Anda sehingga Anda dapat dengan lebih mudah mereferensikan data dalam output tersebut.

"Parse_JSON": {
   "type": "ParseJson",
   "inputs": {
      "content": "<JSON-source>",
         "schema": { "<JSON-schema>" }
      },
      "runAfter": {}
},

Diperlukan

Value Tipe Deskripsi
<JSON-source> Objek JSON Konten JSON yang ingin Anda uraikan
<JSON-schema> Objek JSON Skema JSON yang menggambarkan konten JSON yang mendasarinya, yang digunakan tindakan untuk mengurai konten JSON sumber.

Tips: Di Azure Logic Apps Designer, Anda dapat memberikan skema atau menyediakan contoh payload sehingga tindakan dapat menghasilkan skema.

Contoh

Definisi tindakan ini membuat token ini yang bisa Anda gunakan di alur kerja Anda tapi hanya dalam tindakan yang berjalan mengikuti tindakan Urai JSON:

FirstName, LastName, dan Email

"Parse_JSON": {
   "type": "ParseJson",
   "inputs": {
      "content": {
         "Member": {
            "Email": "Sophie.Owen@contoso.com",
            "FirstName": "Sophie",
            "LastName": "Owen"
         }
      },
      "schema": {
         "type": "object",
         "properties": {
            "Member": {
               "type": "object",
               "properties": {
                  "Email": {
                     "type": "string"
                  },
                  "FirstName": {
                     "type": "string"
                  },
                  "LastName": {
                     "type": "string"
                  }
               }
            }
         }
      }
   },
   "runAfter": { }
},

Dalam contoh ini, properti "konten" menentukan konten JSON agar tindakan diurai. Anda juga dapat menyediakan konten JSON ini sebagai contoh payload untuk menghasilkan skema.

"content": {
   "Member": { 
      "FirstName": "Sophie",
      "LastName": "Owen",
      "Email": "Sophie.Owen@contoso.com"
   }
},

Properti "skema" menentukan skema JSON yang digunakan untuk menggambarkan konten JSON:

"schema": {
   "type": "object",
   "properties": {
      "Member": {
         "type": "object",
         "properties": {
            "FirstName": {
               "type": "string"
            },
            "LastName": {
               "type": "string"
            },
            "Email": {
               "type": "string"
            }
         }
      }
   }
}

Tindakan kueri

Tindakan ini membuat array dari item dalam array lain berdasarkan kondisi atau filter yang ditentukan.

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": <array>,
      "where": "<condition-or-filter>"
   },
   "runAfter": {}
}

Diperlukan

Value Tipe Deskripsi
<array> Array Array atau ekspresi yang menyediakan item sumber. Jika Anda menentukan ekspresi, sertakan ekspresi tersebut dengan tanda kutip ganda.
<condition-or-filter> String Kondisi yang digunakan untuk memfilter item dalam array sumber

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

Contoh

Definisi tindakan ini membuat array yang memiliki nilai lebih besar dari nilai yang ditentukan, yaitu dua:

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": [ 1, 3, 0, 5, 4, 2 ],
      "where": "@greater(item(), 2)"
   }
}

Tindakan respons

Tindakan ini membuat payload untuk respons terhadap permintaan HTTP.

"Response" {
    "type": "Response",
    "kind": "http",
    "inputs": {
        "statusCode": 200,
        "headers": { <response-headers> },
        "body": { <response-body> }
    },
    "runAfter": {}
},

Diperlukan

Value Tipe Deskripsi
<response-status-code> Bilangan bulat Kode status HTTP yang dikirim ke permintaan masuk. Kode default adalah "200 OK", tapi kode dapat menjadi kode status yang valid yang dimulai dengan 2xx, 4xx, atau 5xx, tapi tidak dengan 3xxx.

Opsional

Value Tipe Deskripsi
<response-headers> Objek JSON Satu atau beberapa header untuk disertakan dengan respons
<response-body> Bermacam-macam Badan respons, yang dapat menjadi string, objek JavaScript Object Notation, atau bahkan konten biner dari tindakan sebelumnya

Contoh

Definisi tindakan ini membuat respons terhadap permintaan HTTP dengan kode status, isi pesan, dan header pesan yang ditentukan:

"Response": {
   "type": "Response",
   "inputs": {
      "statusCode": 200,
      "body": {
         "ProductID": 0,
         "Description": "Organic Apples"
      },
      "headers": {
         "x-ms-date": "@utcnow()",
         "content-type": "application/json"
      }
   },
   "runAfter": {}
}

Pembatasan

Tidak seperti tindakan lain, tindakan Respons memiliki pembatasan khusus:

  • Alur kerja Anda hanya bisa menggunakan tindakan Respons saat alur kerja dimulai dengan pemicu permintaan HTTP, yang berarti alur kerja Anda harus dipicu oleh permintaan HTTP.

  • Alur kerja Anda dapat menggunakan tindakan Respons di mana saja kecuali di dalam perulangan Foreach, perulangan Until, termasuk perulangan berurutan, dan cabang paralel.

  • Permintaan asli hanya mendapatkan respons alur kerja Anda saat semua tindakan yang diperlukan oleh tindakan Respons selesai dalam batas dari batas waktu HTTP.

    Namun, jika alur kerja Anda memanggil aplikasi logika lain sebagai alur kerja bertumpuk, alur kerja induk menunggu hingga alur kerja bertumpuk selesai, berapa pun waktu berlalu sebelum alur kerja bertumpuk selesai.

  • Saat alur kerja Anda menggunakan tindakan Respons dan pola respons sinkron, alur kerja tidak bisa juga menggunakan perintah splitOn dalam definisi pemicu karena perintah tersebut membuat beberapa eksekusi. Periksa kasus ini saat metode PUT digunakan, dan jika benar, tampilkan respons "permintaan buruk".

    Jika tidak, jika alur kerja Anda menggunakan perintah splitOn dan tindakan Respons, alur kerja berjalan secara asinkron dan segera menampilkan respons "202 DITERIMA".

  • Saat eksekusi alur kerja Anda mencapai tindakan Respons, tapi permintaan masuk telah menerima respons, tindakan Respons ditandai sebagai "Gagal" karena konflik. Dan sebagai hasilnya, eksekusi aplikasi logika Anda juga ditandai dengan status "Gagal".

Pilih tindakan

Tindakan ini membuat array dengan objek JavaScript Object Notation dengan mengubah item dari array lain berdasarkan peta yang ditentukan. Array output dan array sumber selalu memiliki jumlah item yang sama. Meskipun Anda tidak dapat mengubah jumlah objek dalam array output, Anda dapat menambahkan atau menghapus properti dan nilainya di seluruh objek tersebut. 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": {}
},

Diperlukan

Value Tipe Deskripsi
<array> Array Array atau ekspresi yang menyediakan item sumber. Pastikan Anda mengapit ekspresi dengan tanda kutip ganda.

Catatan: Jika array sumber kosong, tindakan akan membuat array kosong.

<nama kunci> String Nama properti yang ditetapkan ke hasil dari <ekspresi>

Untuk menambahkan properti baru di semua objek dalam array output, berikan <key-name> untuk properti itu dan <ekspresi> untuk nilai propertinya.

Untuk menghapus properti dari semua objek dalam array, hilangkan <key-name>untuk properti itu.

<expression> String Ekspresi yang mengubah item dalam array sumber dan menetapkan hasil ke <key-name>

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

Contoh

Definisi tindakan ini membuat array objek JavaScript Object Notation dari array bilangan bulat. Tindakan akan diiterasi melalui array sumber, mendapatkan setiap nilai bilangan bulat dengan menggunakan @item() ekspresi, dan menetapkan setiap nilai ke properti "number" di setiap objek JSON:

"Select": {
   "type": "Select",
   "inputs": {
      "from": [ 1, 2, 3 ],
      "select": { 
         "number": "@item()" 
      }
   },
   "runAfter": {}
},

Berikut adalah array yang dibuat oleh tindakan ini:

[ { "number": 1 }, { "number": 2 }, { "number": 3 } ]

Untuk menggunakan output array ini di tindakan lain, berikan output ini ke dalam tindakan Tulis:

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

Anda kemudian bisa menggunakan output dari tindakan Tulis di tindakan Anda yang lain, misalnya, tindakan Office 365 Outlook - Kirim tindakan email:

"Send_an_email": {
   "type": "ApiConnection",
   "inputs": {
      "body": {
         "Body": "@{outputs('Compose')}",
         "Subject": "Output array from Select and Compose actions",
         "To": "<your-email@domain>"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "post",
      "path": "/Mail"
   },
   "runAfter": {
      "Compose": [ "Succeeded" ]
   }
},

Tindakan pada tabel

Tindakan ini membuat tabel CSV atau HTML dari array. Untuk array dengan objek JavaScript Object Notation, tindakan ini secara otomatis membuat header kolom dari nama properti objek. Untuk array dengan jenis data lain, Anda harus menentukan header dan nilai kolom. Misalnya, array ini menyertakan properti "ID" dan "Product_Name" yang dapat digunakan tindakan ini untuk nama header kolom:

[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]

"Create_<CSV | HTML>_table": {
   "type": "Table",
   "inputs": {
      "format": "<CSV | HTML>",
      "from": <array>,
      "columns": [ 
         {
            "header": "<column-name>",
            "value": "<column-value>"
         },
         {
            "header": "<column-name>",
            "value": "<column-value>"
         } 
      ]
   },
   "runAfter": {}
}

Diperlukan

Value Tipe Deskripsi
<CSV atau HTML> String Format untuk tabel yang ingin Anda buat
<array> Array Array atau ekspresi yang menyediakan item sumber untuk tabel

Catatan: Jika array sumber kosong, tindakan akan membuat tabel kosong.

Opsional

Untuk menentukan atau mengustomisasi header dan nilai kolom, gunakan columns array. Saat header-value pasangan memiliki nama header yang sama, nilainya muncul di kolom yang sama di bawah nama header tersebut. Jika tidak, setiap header unik menentukan kolom unik.

Value Tipe Deskripsi
<column-name> String Nama header untuk kolom
<column-value> Mana pun Nilai dalam kolom tersebut

Contoh 1

Misalkan Anda memiliki variabel "myItemArray" yang dibuat sebelumnya yang saat ini berisi array ini:

[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]

Definisi tindakan ini membuat tabel CSV dari variabel "myItemArray". Ekspresi yang digunakan oleh from properti mendapatkan array dari "myItemArray" dengan menggunakan variables() fungsi:

"Create_CSV_table": {
   "type": "Table",
   "inputs": {
      "format": "CSV",
      "from": "@variables('myItemArray')"
   },
   "runAfter": {}
}

Berikut adalah tabel CSV yang dibuat tindakan ini:

ID,Product_Name 
0,Apples 
1,Oranges 

Contoh 2

Definisi tindakan ini membuat tabel HTML dari variabel "myItemArray". Ekspresi yang digunakan oleh from properti mendapatkan array dari "myItemArray" dengan menggunakan variables() fungsi:

"Create_HTML_table": {
   "type": "Table",
   "inputs": {
      "format": "HTML",
      "from": "@variables('myItemArray')"
   },
   "runAfter": {}
}

Berikut adalah tabel HTML yang dibuat tindakan ini:

IDNama_Produk
0Apel
1Jeruk

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

Diperlukan

Value Tipe Deskripsi
<status> String Status yang akan ditampilkan untuk dijalankan: "Gagal", "Dibatalkan", atau "Berhasil"

Opsional

Properti untuk objek "runStatus" hanya berlaku saat properti "runStatus" disetel ke status "Gagal".

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

Contoh

Definisi tindakan ini menghentikan eksekusi alur kerja, menyetel status jalankan menjadi "Gagal", dan menampilkan status, kode kesalahan, dan pesan kesalahan:

"Terminate": {
    "type": "Terminate",
    "inputs": {
        "runStatus": "Failed",
        "runError": {
            "code": "Unexpected response",
            "message": "The service received an unexpected response. Please try again."
        }
   },
   "runAfter": {}
}

Tindakan tunggu

Tindakan ini menjeda eksekusi alur kerja untuk interval yang ditentukan atau hingga waktu yang ditentukan, tapi tidak keduanya.

Interval yang ditentukan

"Delay": {
   "type": "Wait",
   "inputs": {
      "interval": {
         "count": <number-of-units>,
         "unit": "<interval>"
      }
   },
   "runAfter": {}
},

Waktu yang ditentukan

"Delay_until": {
   "type": "Wait",
   "inputs": {
      "until": {
         "timestamp": "<date-time-stamp>"
      }
   },
   "runAfter": {}
},

Diperlukan

Value Tipe Deskripsi
<number-of-units> Bilangan bulat Untuk tindakan Tunda, jumlah unit yang menunggu
<interval> String Untuk tindakan Tunda, interval untuk menunggu: "Detik", "Menit", "Jam", "Hari", "Minggu", "Bulan"
<date-time-stamp> String Untuk tindakan Tunda Hingga, tanggal dan waktu untuk melanjutkan eksekusi. Nilai ini harus menggunakan format waktu tanggal UTC.

Contoh 1

Definisi tindakan ini menjeda alur kerja selama 15 menit:

"Delay": {
   "type": "Wait",
   "inputs": {
      "interval": {
         "count": 15,
         "unit": "Minute"
      }
   },
   "runAfter": {}
},

Contoh 2

Definisi tindakan ini menjeda alur kerja hingga waktu yang ditentukan:

"Delay_until": {
   "type": "Wait",
   "inputs": {
      "until": {
         "timestamp": "2017-10-01T00:00:00Z"
      }
   },
   "runAfter": {}
},

Tindakan alur kerja

Tindakan ini memanggil aplikasi logika lain yang dibuat sebelumnya, yang berarti Anda dapat menyertakan dan menggunakan kembali alur kerja aplikasi logika lainnya. Anda juga dapat menggunakan output dari elemen anak atau aplikasi logika bertumpukdalam tindakan yang mengikuti aplikasi logika bertumpuk, asalkan aplikasi logika elemen anak menampilkan respons.

Mesin Azure Logic Apps memeriksa akses ke pemicu yang ingin Anda panggil, jadi pastikan Anda dapat mengakses pemicu tersebut. Selain itu, aplikasi logika bertumpuk harus memenuhi kriteria berikut:

  • Pemicu membuat aplikasi logika bertumpuk dapat dipanggil, seperti pemicu Permintaan atau HTTP

  • Langganan Azure yang sama dengan aplikasi logika induk Anda

  • Untuk menggunakan output dari aplikasi logika bertumpuk di aplikasi logika induk Anda, aplikasi logika bertumpuk harus memiliki tindakan Respons

"<nested-logic-app-name>": {
   "type": "Workflow",
   "inputs": {
      "body": { "<body-content" },
      "headers": { "<header-content>" },
      "host": {
         "triggerName": "<trigger-name>",
         "workflow": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Logic/<nested-logic-app-name>"
         }
      }
   },
   "runAfter": {}
}

Diperlukan

Value Tipe Deskripsi
<nested-logic-app-name> String Nama untuk aplikasi logika yang ingin Anda panggil
<trigger-name> String Nama pemicu di aplikasi logika bertumpuk yang ingin Anda panggil
<Azure-subscription-ID> String ID langganan Azure untuk aplikasi logika bertumpuk
<Grup-sumber daya-Azure> String Nama grup sumber daya Azure untuk aplikasi logika bertumpuk

Opsional

Value Tipe Deskripsi
<header-content> Objek JSON Header apa pun yang akan dikirim dengan panggilan
<body-content> Objek JSON Konten pesan apa pun yang akan dikirim dengan panggilan

Output

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

Contoh

Setelah tindakan "Start_search" berhasil diselesaikan, definisi tindakan alur kerja ini memanggil aplikasi logika lain bernama "Get_product_information", yang meneruskan input yang ditentukan:

"actions": {
   "Start_search": { <action-definition> },
   "Get_product_information": {
      "type": "Workflow",
      "inputs": {
         "body": {
            "ProductID": "24601",
         },
         "host": {
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/InventoryManager-RG/providers/Microsoft.Logic/Get_product_information",
            "triggerName": "Find_product"
         },
         "headers": {
            "content-type": "application/json"
         }
      },
      "runAfter": { 
         "Start_search": [ "Succeeded" ]
      }
   }
},

Mengontrol detail tindakan alur kerja

Aksi Foreach

TIndakan perulangan ini berulang melalui array dan melakukan tindakan pada setiap item array. Secara default, perulangan "untuk setiap" berjalan secara paralel hingga jumlah maksimum perulangan. Untuk maksimum ini, lihat Batas dan konfigurasi. Pelajari cara membuat perulangan "untuk setiap".

"For_each": {
   "type": "Foreach",
   "actions": { 
      "<action-1>": { "<action-definition-1>" },
      "<action-2>": { "<action-definition-2>" }
   },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": <count>
      }
    },
    "operationOptions": "<operation-option>"
}

Diperlukan

Value Tipe Deskripsi
<action-1...n> String Nama tindakan yang berjalan pada setiap item array
<action-definition-1...n> Objek JSON Definisi tindakan yang berjalan
<for-each-expression> String Ekspresi yang mereferensikan setiap item dalam array yang ditentukan

Opsional

Value Tipe Deskripsi
<count> Bilangan bulat Secara default, iterasi perulangan "untuk setiap" berjalan pada saat yang sama (secara bersamaan atau paralel) hingga batas default. Untuk mengubah batas ini dengan mengatur nilai <jumlah> yang baru, lihat Mengubah konkurensi perulangan "untuk masing-masing".
<operation-option> String Untuk menjalankan perulangan "untuk masing-masing" secara berurutan, dan bukan secara paralel, atur salah satu, <operation-option> menjadi Sequential atur <jumlah> menjadi 1, tapi jangan atur keduanya sekaligus. Untuk informasi selengkapnya, lihat Menjalankan perulangan "untuk setiap" secara berurutan.

Contoh

Perulangan "untuk setiap" ini mengirim email untuk setiap item dalam array, yang berisi lampiran dari email masuk. Perulangan mengirim email, termasuk lampiran, kepada orang yang meninjau lampiran.

"For_each": {
   "type": "Foreach",
   "actions": {
      "Send_an_email": {
         "type": "ApiConnection",
         "inputs": {
            "body": {
               "Body": "@base64ToString(items('For_each')?['Content'])",
               "Subject": "Review attachment",
               "To": "Sophie.Owen@contoso.com"
                },
            "host": {
               "connection": {
                  "id": "@parameters('$connections')['office365']['connectionId']"
               }
            },
            "method": "post",
            "path": "/Mail"
         },
         "runAfter": {}
      }
   },
   "foreach": "@triggerBody()?['Attachments']",
   "runAfter": {}
}

Untuk menentukan hanya array yang diteruskan sebagai output dari pemicu, ekspresi ini mendapatkan array <array-name> dari isi pemicu. Untuk menghindari kegagalan jika array tidak ada, ekspresi menggunakan ? operator:

@triggerBody()?['<array-name>']

Tindakan if

Tindakan ini, yang merupakan pernyataan kondisional, mengevaluasi ekspresi yang mewakili kondisi dan menjalankan cabang yang berbeda berdasarkan apakah kondisinya benar atau salah. Jika kondisinya benar, kondisi ditandai dengan status "Berhasil". Pelajari cara membuat pernyataan kondisional.

"Condition": {
   "type": "If",
   "expression": { "<condition>" },
   "actions": {
      "<action-1>": { "<action-definition>" }
   },
   "else": {
      "actions": {
        "<action-2>": { "<action-definition" }
      }
   },
   "runAfter": {}
}
Value Tipe Deskripsi
<kondisi> Objek JSON Kondisi, yang dapat menjadi ekspresi, untuk mengevaluasi
<action-1> Objek JSON Tindakan yang dijalankan saat <kondisi> bernilai benar
<action-definition> Objek JSON Definisi untuk tindakan
<action-2> Objek JSON Tindakan yang dijalankan saat <kondisi> bernilai salah

Tindakan dalam objek actions atau else mendapatkan status ini:

  • "Berhasil" saat status berjalan dan berhasil
  • "Gagal" saat status berjalan dan gagal
  • "Dilompati" saat masing-masing cabang tidak berjalan

Contoh

Kondisi ini menentukan bahwa saat variabel bilangan bulat memiliki nilai yang lebih besar dari nol, alur kerja akan memeriksa situs web. Jika variabel nol atau kurang, alur kerja akan memeriksa situs web yang berbeda.

"Condition": {
   "type": "If",
   "expression": {
      "and": [ {
         "greater": [ "@variables('myIntegerVariable')", 0 ] 
      } ]
   },
   "actions": { 
      "HTTP - Check this website": {
         "type": "Http",
         "inputs": {
         "method": "GET",
            "uri": "http://this-url"
         },
         "runAfter": {}
      }
   },
   "else": {
      "actions": {
         "HTTP - Check this other website": {
            "type": "Http",
            "inputs": {
               "method": "GET",
               "uri": "http://this-other-url"
            },
            "runAfter": {}
         }
      }
   },
   "runAfter": {}
}

Bagaimana kondisi menggunakan ekspresi

Berikut adalah beberapa contoh yang memperlihatkan bagaimana Anda bisa menggunakan ekspresi dalam kondisi:

JSON Hasil
"expression": "@parameters('<hasSpecialAction>')" Hanya untuk ungkapan bersyarat, kondisi melewati untuk nilai apa pun yang dievaluasi ke true.

Untuk mengonversi jenis lain ke Boolean, gunakan fungsi ini: empty() atau equals().

"expression": "@greater(actions('<action>').output.value, parameters('<threshold>'))" Untuk fungsi perbandingan, tindakannya hanya berjalan ketika output dari <tindakan> melebihi nilai <ambang>.
"expression": "@or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100))" Untuk fungsi logika dan membuat ekspresi Boolean berlapis, tindakannya berjalan saat output dari <action> melebihi nilai <ambang> atau di bawah 100.
"expression": "@equals(length(actions('<action>').outputs.errors), 0))" Anda bisa menggunakan fungsi array untuk memeriksa apakah array memiliki item apa pun. Tindakan berjalan saat errors array kosong.

Tindakan cakupan

Tindakan ini secara logis mengelompokkan tindakan ke dalam cakupan, yang mendapatkan statusnya sendiri setelah tindakan dalam cakupan tersebut selesai berjalan. Anda kemudian dapat menggunakan status cakupan untuk menentukan apakah tindakan lain berjalan. Pelajari cara membuat cakupan.

"Scope": {
   "type": "Scope",
   "actions": {
      "<inner-action-1>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      },
      "<inner-action-2>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      }
   }
}

Diperlukan

Value Tipe Deskripsi
<inner-action-1...n> Objek JSON Satu atau beberapa tindakan yang berjalan di dalam cakupan
<action-inputs> Objek JSON Input untuk setiap tindakan

Tindakan alihkan

Tindakan ini, juga dikenal sebagai pernyataan alihkan, mengatur tindakan lain ke dalam kasus, dan menetapkan nilai untuk setiap kasus, kecuali untuk kasus default jika ada. Saat alur kerja Anda berjalan, tindakan Alihkan membandingkan nilai dari ekspresi, objek, atau token terhadap nilai yang ditentukan untuk setiap kasus. Jika tindakan Alihkan menemukan kasus yang cocok, alur kerja Anda hanya menjalankan tindakan untuk kasus tersebut. Setiap kali tindakan Alihkan berjalan, hanya ada satu kasus yang cocok atau tidak ada kecocokan. Jika tidak ada kecocokan, tindakan Alihkan menjalankan tindakan default. Pelajari cara membuat pernyataan alihkan.

"Switch": {
   "type": "Switch",
   "expression": "<expression-object-or-token>",
   "cases": {
      "Case": {
         "actions": {
           "<action-name>": { "<action-definition>" }
         },
         "case": "<matching-value>"
      },
      "Case_2": {
         "actions": {
           "<action-name>": { "<action-definition>" }
         },
         "case": "<matching-value>"
      }
   },
   "default": {
      "actions": {
         "<default-action-name>": { "<default-action-definition>" }
      }
   },
   "runAfter": {}
}

Diperlukan

Value Tipe Deskripsi
<expression-object-or-token> Bervariasi Ekspresi, objek JSON, atau token untuk dievaluasi
<action-name> String Nama tindakan yang akan dijalankan untuk kasus yang cocok
<action-definition> Objek JSON Definisi untuk tindakan yang dijalankan untuk kasus yang cocok
<matching-value> Bervariasi Nilai untuk dibandingkan dengan hasil yang dievaluasi

Opsional

Value Tipe Deskripsi
<default-action-name> String Nama tindakan default yang dijalankan saat tidak ada kasus yang cocok
<default-action-definition> Objek JSON Definisi untuk tindakan yang dijalankan saat tidak ada kasus yang cocok

Contoh

Definisi tindakan ini mengevaluasi apakah orang yang menanggapi email permintaan persetujuan memilih opsi "Setuju" atau opsi "Tolak". Berdasarkan pilihan ini, tindakan Alihkan menjalankan tindakan untuk kasus yang cocok, yaitu mengirim email lain ke penanggap tapi dengan kata-kata yang berbeda dalam setiap kasus.

"Switch": {
   "type": "Switch",
   "expression": "@body('Send_approval_email')?['SelectedOption']",
   "cases": {
      "Case": {
         "actions": {
            "Send_an_email": { 
               "type": "ApiConnection",
               "inputs": {
                  "Body": "Thank you for your approval.",
                  "Subject": "Response received", 
                  "To": "Sophie.Owen@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/Mail"
            },
            "runAfter": {}
         },
         "case": "Approve"
      },
      "Case_2": {
         "actions": {
            "Send_an_email_2": { 
               "type": "ApiConnection",
               "inputs": {
                  "Body": "Thank you for your response.",
                  "Subject": "Response received", 
                  "To": "Sophie.Owen@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/Mail"
            },
            "runAfter": {}     
         },
         "case": "Reject"
      }
   },
   "default": {
      "actions": { 
         "Send_an_email_3": { 
            "type": "ApiConnection",
            "inputs": {
               "Body": "Please respond with either 'Approve' or 'Reject'.",
               "Subject": "Please respond", 
               "To": "Sophie.Owen@contoso.com"
            },
            "host": {
               "connection": {
                  "name": "@parameters('$connections')['office365']['connectionId']"
               }
            },
            "method": "post",
            "path": "/Mail"
         },
         "runAfter": {} 
      }
   },
   "runAfter": {
      "Send_approval_email": [ 
         "Succeeded"
      ]
   }
}

Tindakan Until

Tindakan perulangan ini memuat tindakan yang berjalan hingga kondisi yang ditentukan benar. Perulangan memeriksa kondisi sebagai langkah terakhir setelah semua tindakan lain berjalan. Anda dapat menyertakan lebih dari satu tindakan dalam "actions" objek, dan tindakan harus menentukan setidaknya satu batas. Pelajari cara membuat perulangan "until".

 "Until": {
   "type": "Until",
   "actions": {
      "<action-name>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      },
      "<action-name>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      }
   },
   "expression": "<condition>",
   "limit": {
      "count": <loop-count>,
      "timeout": "<loop-timeout>"
   },
   "runAfter": {}
}
Value Tipe Deskripsi
<action-name> String Nama untuk tindakan yang ingin Anda jalankan di dalam perulangan
<action-type> String Jenis tindakan yang ingin Anda jalankan
<action-inputs> Bermacam-macam Input untuk aksi yang akan dijalankan
<kondisi> String Kondisi atau ekspresi untuk mengevaluasi setelah semua tindakan dalam perulangan selesai berjalan
<loop-count> Bilangan bulat Batas pada jumlah perulangan terbanyak yang dapat dijalankan tindakan. Untuk informasi selengkapnya tentang batas default dan batas maksimum, lihat Batas dan konfigurasi untuk Microsoft Azure Logic Apps.
<loop-timeout> String Batas waktu terlama yang dapat dijalankan perulangan. Nilai default timeout adalah PT1H, yang merupakan format ISO 8601 yang diperlukan.

Catatan

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

Contoh

Definisi tindakan permintaan ini mengirimkan permintaan HTTP ke URL yang ditentukan hingga salah satu kondisi ini terpenuhi:

  • Permintaan mendapatkan respons dengan kode status "200 OK".
  • Perulangan telah berjalan 60 kali.
  • Perulangan telah berjalan selama satu jam.
 "Run_until_loop_succeeds_or_expires": {
    "type": "Until",
    "actions": {
        "HTTP": {
            "type": "Http",
            "inputs": {
                "method": "GET",
                "uri": "http://myurl"
            },
            "runAfter": {}
        }
    },
    "expression": "@equals(outputs('HTTP')['statusCode'], 200)",
    "limit": {
        "count": 60,
        "timeout": "PT1H"
    },
    "runAfter": {}
}

Webhook dan langganan

Pemicu dan tindakan berbasis Webhook tidak secara teratur memeriksa titik akhir, tapi tunggu peristiwa atau data tertentu di titik akhir tersebut. Pemicu dan tindakan ini berlangganan titik akhir dengan menyediakan URL panggilan balik tempat titik akhir dapat mengirim respons.

Panggilan subscribe terjadi saat alur kerja berubah dengan cara apa pun, misalnya, saat informasi masuk diperbarui, atau saat parameter input berubah untuk pemicu atau tindakan. Panggilan ini menggunakan parameter yang sama dengan tindakan HTTP standar.

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.

Properti Tipe Deskripsi Pemicu atau tindakan
runtimeConfiguration.concurrency.runs Bilangan bulat Ubah batas default pada jumlah instans alur kerja yang dapat berjalan secara bersamaan (secara bersamaan atau paralel). Menyesuaikan nilai ini dapat membantu membatasi jumlah permintaan yang diterima sistem backend.

Menyetel runs properti ke 1 berfungsi dengan cara yang sama seperti menyetel operationOptions properti ke SingleInstance. Anda dapat menyetel properti, tapi tidak keduanya.

Untuk mengubah batas default, lihat Mengubah konkurensi pemicu atau Instans pemicu secara berurutan.

Semua pemicu
runtimeConfiguration.concurrency.maximumWaitingRuns Bilangan bulat Ubah batas default jumlah instans alur kerja yang harus menunggu untuk dijalankan saat aplikasi logika Anda sudah menjalankan instans konkuren maksimum.

Untuk mengubah batas default, lihat Ubah batas eksekusi tunggu.

Semua pemicu
runtimeConfiguration.concurrency.repetitions Bilangan bulat Ubah batas default pada jumlah iterasi perulangan “untuk setiap” yang dapat berjalan secara bersamaan (secara bersamaan atau paralel).

Menyetel repetitions properti ke 1 berfungsi dengan cara yang sama seperti menyetel operationOptions properti ke SingleInstance. Anda dapat menyetel properti, tapi tidak keduanya.

Untuk mengubah batas default, lihat Mengubah konkurensi "untuk setiap" atau Menjalankan perulangan "untuk setiap" secara berurutan.

Tindakan:

Foreach

runtimeConfiguration.paginationPolicy.minimumItemCount Bilangan bulat Untuk tindakan tertentu yang mendukung dan mengaktifkan pagination, nilai ini menentukan jumlah minimum hasil yang akan diambil.

Untuk mengaktifkan pagination, lihat Mendapatkan data, item, atau hasil massal dengan menggunakan pagination

Tindakan: Bervariasi
runtimeConfiguration.secureData.properties Array Pada banyak pemicu dan tindakan, pengaturan ini menyembunyikan input, output, atau keduanya dari riwayat jalankan aplikasi logika.

Untuk mempelajari selengkapnya tentang melindungi data ini, lihat Menyembunyikan input dan output dari riwayat jalankan.

Sebagian besar pemicu dan tindakan
runtimeConfiguration.staticResult Objek JSON Untuk tindakan yang mendukung dan mengaktifkan pengaturan hasil statis, staticResult objek memiliki atribut ini:

- name, yang mereferensikan nama definisi hasil statis tindakan saat ini, yang muncul di dalam atribut staticResults di atribut alur kerja aplikasi logika Andadefinition. Untuk informasi selengkapnya, lihat Hasil statis - Referensi skema untuk Bahasa Pemrogram Definisi Alur Kerja.

- staticResultOptions, yang menentukan apakah hasil statis adalah Enabled atau tidak untuk tindakan saat ini.

Untuk mengaktifkan hasil statis, lihat Menguji aplikasi logika dengan data tiruan dengan menyiapkan hasil statis

Tindakan: Bervariasi

Opsi operasi

Anda dapat mengubah perilaku default untuk pemicu dan tindakan dengan operationOptions properti dalam definisi pemicu atau tindakan.

Opsi operasi Tipe Deskripsi Pemicu atau tindakan
DisableAsyncPattern String Jalankan tindakan berbasis HTTP secara sinkron, bukan secara asinkron.

Untuk mengatur opsi ini, lihat Menjalankan tindakan secara sinkron.

Tindakan:

Api Koneksi ion,
HTTP,
Respons

IncludeAuthorizationHeadersInOutputs String Untuk aplikasi logika yang mengaktifkan OAuth dengan MICROSOFT Entra ID untuk mengotorisasi akses untuk panggilan masuk ke titik akhir pemicu berbasis permintaan, sertakan Authorization header dari token akses OAuth dalam output pemicu. Untuk informasi selengkapnya, lihat Menyertakan header 'Otorisasi' dalam output pemicu permintaan. Memicu:

Permintaan,
HTTP Webhook

Sequential String Jalankan iterasi perulangan "untuk setiap" satu per satu, bukan semua pada saat yang sama secara paralel.

Opsi ini berfungsi dengan cara yang sama seperti menyetel runtimeConfiguration.concurrency.repetitions properti ke 1. Anda dapat menyetel properti, tapi tidak keduanya.

Untuk menyetel opsi ini, lihat Menjalankan perulangan "untuk setiap" secara berurutan.

Tindakan:

Foreach

SingleInstance String Jalankan pemicu untuk setiap instans aplikasi logika secara berurutan dan tunggu hingga proses yang sebelumnya aktif selesai sebelum memicu instans aplikasi logika berikutnya.

Opsi ini berfungsi dengan cara yang sama seperti menyetel runtimeConfiguration.concurrency.runs properti ke 1. Anda dapat menyetel properti, tapi tidak keduanya.

Untuk mengatur opsi ini, lihat Instans pemicu secara berurutan.

Semua pemicu
SuppressWorkflowHeaders String Jangan kirim x-ms-* header metadata di permintaan keluar. Secara default, layanan Azure Logic Apps menyertakan header metadata tambahan dengan x-ms- awalan dalam nama header sebagai bagian dari permintaan keluar. Namun, beberapa layanan warisan tidak akan menerima permintaan dengan header tambahan yang tidak diketahui, yang mengakibatkan permintaan gagal. Tindakan:

HTTP,
Fungsi,
APIManagement

SuppressWorkflowHeadersOnResponse String Jangan mengirim x-ms-* header metadata sebagai tanggapan atas permintaan pemicu masuk. Secara default, layanan Azure Logic Apps mengirim respons ke permintaan masuk yang menyertakan header metadata tambahan dengan x-ms- awalan dalam nama header. Namun, beberapa layanan warisan tidak akan menerima permintaan atau repsons dengan header tambahan yang tidak diketahui, yang mengakibatkan permintaan gagal. Memicu:

Permintaan,
HTTP Webhook

Ubah konkurensi pemicu

Secara default, semua instans alur kerja aplikasi logika berjalan pada saat yang sama (secara bersamaan atau paralel). Perilaku ini berarti bahwa setiap instans pemicu diaktifkan sebelum instans alur kerja sebelumnya selesai berjalan. Namun, jumlah instans yang berjalan bersamaan memiliki batas default. Saat jumlah instans alur kerja yang berjalan bersamaan mencapai batas ini, instans baru lainnya harus menunggu untuk dijalankan. Batas ini membantu mengontrol jumlah permintaan yang diterima sistem backend.

Saat Anda mengaktifkan kontrol konkurensi pemicu, instans pemicu berjalan secara paralel hingga batas default. Untuk mengubah batas konkurensi default ini, Anda dapat menggunakan editor tampilan kode atau Azure Logic Apps Designer karena mengubah pengaturan konkurensi melalui perancang menambahkan atau memperbarui runtimeConfiguration.concurrency.runs properti dalam definisi pemicu yang mendasarinya dan sebaliknya. Properti ini mengontrol jumlah maksimum instans alur kerja baru yang dapat berjalan secara paralel.

Sebelum Anda mengaktifkan konkurensi pada pemicu, tinjau pertimbangan berikut:

  • Anda tidak dapat menonaktifkan konkurensi setelah mengaktifkan kontrol konkurensi.

  • Jika jumlah maksimum eksekusi pemicu bersamaan mencapai tingkat paralelisme maksimum, eksekusi pemicu berikutnya mungkin mengalami pembatasan atau kesalahan "429 - Terlalu banyak permintaan". Jika Anda menyiapkan kebijakan percobaan kembali yang menangani kesalahan 429, pemicu mungkin mengalami siklus perilaku coba lagi dan pembatasan yang menyebabkan keterlambatan panjang dalam memproses permintaan pemicu baru.

  • Saat konkurensi diaktifkan, batas SplitOn secara signifikan dikurangi untuk array debat. Jika jumlah item melebihi batas ini, kapabilitas SplitOn dinonaktifkan.

  • Saat konkurensi diaktifkan, instans aplikasi logika yang berjalan lama dapat menyebabkan instans aplikasi logika baru memasuki status tunggu. Status ini mencegah Microsoft Azure Logic Apps membuat instans baru dan terjadi bahkan saat jumlah eksekusi konkuren kurang dari jumlah maksimum eksekusi konkuren yang ditentukan.

    • Untuk mengganggu status ini, batalkan instans paling awal yang masih berjalan.

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

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

        Select earliest running instance

        Tip

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

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

        Find earliest running instance

    • 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 bagian sudut kanan atas tindakan, pilih tombol elipsis (...), lalu pilih Pengaturan.

        Open action settings

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

        Specify timeout duration

  • 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 Azure Logic Apps Designer

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

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

  3. Seret penggeser Tingkat Paralelisme ke nilai yang Anda inginkan. Untuk menjalankan aplikasi logika Anda secara berurutan, seret nilai penggeser ke 1.

Ubah konkurensi "untuk setiap"

Secara default, semua iterasi perulangan "untuk setiap" berjalan pada saat yang sama (secara bersamaan atau paralel). Perilaku ini berarti bahwa setiap iterasi mulai berjalan sebelum iterasi sebelumnya selesai berjalan. Namun, jumlah iterasi yang berjalan bersamaan memiliki batas default. Saat jumlah iterasi yang berjalan bersamaan mencapai batas ini, iterasi lain harus menunggu untuk dijalankan.

Untuk mengubah batas default, Anda dapat menggunakan editor tampilan kode atau Azure Logic Apps Designer karena mengubah pengaturan konkurensi melalui perancang menambahkan atau memperbarui runtimeConfiguration.concurrency.repetitions properti dalam definisi tindakan “untuk setiap” yang mendasarinya dan sebaliknya. Properti ini mengontrol jumlah maksimum iterasi yang dapat berjalan secara paralel.

Catatan

Jika Anda menyetel tindakan "untuk setiap" untuk berjalan secara berurutan baik dengan menggunakan perancang atau editor tampilan kode, jangan setel operationOptions properti ke Sequential tindakan di editor tampilan kode. Jika tidak, Anda mendapatkan kesalahan validasi. Untuk informasi selengkapnya, lihat Menjalankan perulangan "untuk setiap" secara berurutan.

Mengedit dalam tampilan kode

Dalam definisi "untuk setiap" yang mendasarinya, tambahkan atau perbarui runtimeConfiguration.concurrency.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 Azure Logic Apps Designer

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

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

  3. Seret penggeser Tingkat Paralelisme ke nilai yang Anda inginkan. Untuk menjalankan aplikasi logika Anda secara berurutan, seret nilai penggeser ke 1.

Ubah batas eksekusi tunggu

Secara default, semua instans alur kerja aplikasi logika berjalan pada saat yang sama (secara bersamaan atau paralel). Perilaku ini berarti bahwa setiap instans pemicu diaktifkan sebelum instans alur kerja sebelumnya selesai berjalan. Namun, batas default ada pada jumlah instans alur kerja yang berjalan bersamaan. Ketika jumlah eksekusi bersamaan mencapai batas ini, instans alur kerja baru lainnya harus menunggu untuk dijalankan. Batas default juga ada pada jumlah instans alur kerja tunggu. Ketika jumlah instans tunggu mencapai batas ini, mesin 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 Azure Logic Apps Designer karena mengubah pengaturan konkurensi melalui perancang menambahkan atau memperbarui runtimeConfiguration.concurrency.runs properti dalam definisi pemicu yang mendasarinya dan sebaliknya.

Catatan

Jika Anda menyetel pemicu untuk berjalan secara berurutan baik dengan menggunakan perancang atau editor tampilan kode, jangan setel operationOptions properti ke Sequential pemicu di editor tampilan kode. Jika tidak, Anda mendapatkan kesalahan validasi.

Mengedit dalam tampilan kode

Dalam definisi pemicu, setel salah satu properti ini, tapi tidak keduanya.

Setel runtimeConfiguration.concurrency.runs properti ke 1:

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": 1
      }
   }
}

-atau-

Setel operationOptions properti ke SingleInstance:

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "operationOptions": "SingleInstance"
}

Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum dan opsi Operasi.

Edit di Azure Logic Apps Designer

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

  2. Di bawah Kontrol Konkurensi, setel 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 Azure Logic Apps Designer karena mengubah konkurensi tindakan melalui perancang menambahkan atau memperbarui runtimeConfiguration.concurrency.repetitions properti dalam definisi tindakan yang mendasarinya dan sebaliknya.

Catatan

Saat Anda menyetel tindakan "untuk setiap" untuk berjalan secara berurutan baik dengan menggunakan perancang atau editor tampilan kode, jangan setel operationOptions properti ke Sequential tindakan di editor tampilan kode. Jika tidak, Anda mendapatkan kesalahan validasi.

Mengedit dalam tampilan kode

Dalam definisi tindakan, setel salah satu properti ini, tapi tidak keduanya.

Setel runtimeConfiguration.concurrency.repetitions properti ke 1:

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": 1
      }
   }
}

-atau-

Setel operationOptions properti ke Sequential:

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "operationOptions": "Sequential"
}

Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum dan opsi Operasi.

Edit di Azure Logic Apps Designer

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

  2. Di bawah Kontrol Konkurensi, setel 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 menampilkan respons "202 DITERIMA". Kode ini mengonfirmasi bahwa penerima menerima permintaan tapi belum selesai diproses. Respons dapat menyertakan location header yang menentukan URL dan ID refresh yang dapat digunakan pemanggil untuk terus melakukan polling atau memeriksa status untuk permintaan asinkron hingga penerima berhenti memproses dan mengembalikan respons keberhasilan "200 OK" atau respons non-202 lainnya. Untuk informasi selengkapnya, lihat Integrasi layanan mikro asinkron memberlakukan otonomi layanan mikro.

  • Di Azure Logic App Designer, tindakan HTTP, tindakan APIConnection, dan tindakan Respons memiliki pengaturan Pola Asinkron. Saat diaktifkan, pengaturan ini menentukan bahwa pemanggil tidak menunggu pemrosesan selesai dan dapat melanjutkan ke tindakan berikutnya tapi terus memeriksa status sampai pemrosesan berhenti. Jika dinonaktifkan, pengaturan ini menentukan bahwa pemanggil menunggu pemrosesan selesai sebelum melanjutkan ke tindakan berikutnya. Untuk menemukan pengaturan ini, ikuti langkah-langkah berikut:

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

    2. Temukan pengaturan Pola Asinkron.

  • Dalam definisi JavaScript Object Notation (JSON) yang mendasari tindakan, tindakan HTTP dan tindakan APIConnection secara implisit mengikuti pola operasi asinkron.

Dalam beberapa skenario, Anda mungkin ingin tindakan untuk mengikuti pola sinkron sebagai gantinya. Misalnya, saat Anda menggunakan tindakan HTTP, Anda mungkin ingin:

Dalam kasus ini, Anda dapat membuat tindakan berjalan secara sinkron dengan menggunakan opsi ini:

Matikan pengaturan Pola Asinkron

  1. Di Azure Logic App Designer, pada bilah judul tindakan, pilih tombol elipsis (...) yang membuka pengaturan tindakan.

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

    Turn off

Nonaktifkan pola asinkron dalam definisi JSON tindakan

Dalam definisi JSON yang mendasari tindakan, tambahkan dan setel properti "operationOptions" ke "DisableAsyncPattern" di bawah bagian"inputs" tindakan, misalnya:

"<some-long-running-action>": {
   "type": "Http",
   "inputs": { "<action-inputs>" },
   "operationOptions": "DisableAsyncPattern",
   "runAfter": {}
}

Mengautentikasi pemicu dan tindakan

Titik akhir HTTP dan HTTPS mendukung berbagai jenis autentikasi. Berdasarkan pemicu atau tindakan yang Anda gunakan untuk melakukan panggilan keluar atau permintaan untuk mengakses titik akhir ini, Anda dapat memilih dari berbagai rentang jenis autentikasi. Untuk informasi selengkapnya, lihat Menambahkan autentikasi ke panggilan keluar.

Langkah berikutnya