Panduan referensi skema untuk Bahasa Definisi Alur Kerja di Azure Logic Apps

Saat Anda membuat aplikasi logika di Azure Logic Apps, aplikasi logika Anda memiliki definisi alur kerja yang mendasarinya yang menjelaskan logika aktual yang berjalan di aplikasi logika Anda. Definisi alur kerja tersebut menggunakan JSON dan mengikuti struktur yang divalidasi oleh skema Bahasa Definisi Alur Kerja. Referensi ini memberikan gambaran umum tentang struktur ini dan bagaimana skema menentukan atribut dalam definisi alur kerja Anda.

Struktur definisi kebijakan

Definisi alur kerja selalu menyertakan pemicu untuk membuat instans aplikasi logika Anda, ditambah satu atau beberapa tindakan yang berjalan setelah pemicu diaktifkan.

Berikut adalah struktur tingkat tinggi untuk definisi alur kerja:

"definition": {
  "$schema": "<workflow-definition-language-schema-version>",
  "actions": { "<workflow-action-definitions>" },
  "contentVersion": "<workflow-definition-version-number>",
  "outputs": { "<workflow-output-definitions>" },
  "parameters": { "<workflow-parameter-definitions>" },
  "staticResults": { "<static-results-definitions>" },
  "triggers": { "<workflow-trigger-definitions>" }
}
Atribut Wajib Deskripsi
definition Ya Elemen awal untuk definisi alur kerja Anda
$schema Hanya saat merujuk definisi alur kerja secara eksternal Lokasi untuk file skema JSON yang menjelaskan versi Bahasa Definisi Alur Kerja, yang dapat Anda temukan di sini:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions Tidak Definisi untuk satu atau beberapa tindakan untuk dijalankan pada runtime alur kerja. Untuk informasi selengkapnya, lihat Pemicu dan tindakan.



Tindakan maksimum: 250
contentVersion Tidak Nomor versi untuk definisi alur kerja Anda, yaitu "1.0.0.0" secara default. Untuk membantu mengidentifikasi dan mengonfirmasi definisi yang benar saat menggunakan alur kerja, tentukan nilai yang akan digunakan.
outputs Tidak Definisi untuk output yang akan dikembalikan dari alur kerja yang dijalankan. Untuk informasi selengkapnya, lihat Output.



Output maksimum: 10
parameters Tidak Definisi untuk satu atau beberapa parameter yang meneruskan nilai untuk digunakan pada runtime aplikasi logika Anda. Untuk informasi selengkapnya, lihat Parameter.



Parameter maksimum: 50
staticResults Tidak Definisi untuk satu atau beberapa hasil statik yang dikembalikan oleh tindakan sebagai output tiruan ketika hasil statik diaktifkan pada tindakan tersebut. Dalam setiap definisi tindakan, atribut runtimeConfiguration.staticResult.name mereferensikan definisi yang sesuai dengan yang berada di dalam staticResults. Untuk informasi selengkapnya, lihat Hasil statik.
triggers Tidak Definisi untuk satu atau beberapa pemicu yang memicu instansiasi alur kerja Anda. Anda dapat menentukan lebih dari satu pemicu, tetapi hanya dengan Bahasa Definisi Alur Kerja, tidak secara visual melalui perancang alur kerja. Untuk informasi selengkapnya, lihat Pemicu dan tindakan.



Pemicu maksimum: 10

Pemicu dan tindakan

Dalam definisi alur kerja, bagian triggers dan actions menentukan panggilan yang terjadi selama eksekusi alur kerja Anda. Untuk sintaks dan informasi selengkapnya tentang bagian ini, lihat Pemicu dan tindakan alur kerja.

Parameter

Siklus hidup penyebaran biasanya memiliki lingkungan yang berbeda untuk pengembangan, pengujian, penahapan, dan produksi. Saat menerapkan aplikasi logika ke berbagai lingkungan, Anda mungkin ingin menggunakan nilai yang berbeda, seperti string koneksi, berdasarkan kebutuhan penyebaran Anda. Atau, Anda mungkin memiliki nilai yang ingin digunakan kembali di seluruh aplikasi logika tanpa pengkodean secara permanen atau yang sering berubah. Di bagian definisi parameters, Anda dapat menentukan atau mengedit parameter untuk nilai yang digunakan aplikasi logika Anda pada waktu proses. Anda harus menentukan parameter ini terlebih dahulu sebelum Anda dapat mereferensikan parameter ini di tempat lain dalam definisi alur kerja Anda.

Berikut adalah struktur umum untuk definisi parameter:

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
Atribut Wajib Tipe Deskripsi
<nama parameter> Ya String Nama untuk parameter yang ingin Anda tentukan
<Jenis parameter> Ya int, float, string, bool, array, objek, securestring, secureobject



Catatan: Untuk semua kata sandi, kunci, dan rahasia gunakan securestring atau jenis secureobject karena operasi tidak mengembalikan jenis GET ini. Untuk informasi selengkapnya tentang mengamankan parameter, lihat Rekomendasi keamanan untuk parameter tindakan dan input.
Jenis untuk parameter
<nilai parameter default> Ya Sama seperti type Nilai parameter default yang digunakan jika tidak ada nilai yang ditentukan saat alur kerja membuat instans. Atribut defaultValue diperlukan agar Logic App Designer dapat menampilkan parameter dengan benar, tetapi Anda dapat menentukan nilai kosong.
<nilai parameter array-dengan-diizinkan> Tidak Array Array dengan nilai yang dapat diterima parameter
<deskripsi parameter> Tidak Objek JSON Detail parameter lainnya, seperti deskripsi untuk parameter

Berikutnya, buat template Azure Resource Manager untuk definisi alur kerja Anda, tentukan parameter template yang menerima nilai yang Anda inginkan saat penyebaran, ganti nilai dengan pengkodean permanen dengan referensi ke parameter definisi templatee atau alur kerja yang sesuai, dan simpan nilai yang akan digunakan saat penyebaran dalam file parameter yang terpisah. Dengan begitu, Anda dapat mengubah nilai tersebut dengan lebih mudah tanpa harus memperbarui dan menerapkan ulang aplikasi logika Anda. Untuk informasi yang sensitif atau harus diamankan, seperti nama pengguna, kata sandi, dan rahasia, Anda dapat menyimpan nilai tersebut di Azure Key Vault dan meminta file parameter Anda mengambil nilai tersebut dari brankas kuncii Anda. Untuk informasi selengkapnya dan contoh tentang menentukan parameter di tingkat definisi template dan alur kerja, lihat Gambaran Umum: Mengotomatiskan penyebaran untuk aplikasi logika dengan template Azure Resource Manager.

Hasil Statik

Dalam atribut staticResults, tentukan mock tindakan outputs dan status bahwa tindakan akan kembali saat pengaturan hasil statis tindakan diaktifkan. Dalam definisi tindakan, atribut runtimeConfiguration.staticResult.name mereferensikan nama untuk definisi hasil statis yang berada di dalam staticResults. Pelajari cara menguji alur kerja aplikasi logika dengan data tiruan dengan menyiapkan hasil statis.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "<static-result-definition-name>": {
         "outputs": {
            <output-attributes-and-values-returned>,
            "headers": { <header-values> },
            "statusCode": "<status-code-returned>"
         },
         "status": "<action-status>"
      }
   },
   "triggers": { "<...>" }
}
Atribut Wajib Tipe Deskripsi
<nama definisi hasil statis> Ya String Nama untuk definisi hasil statis yang dapat direferensikan oleh definisi tindakan melalui objek runtimeConfiguration.staticResult. Untuk informasi selengkapnya, lihat Pengaturan konfigurasi runtime bahasa umum.

Anda dapat menggunakan nama unik apa pun yang Anda inginkan. Secara default, nama unik ini ditambahkan dengan angka, yang ditambahkan seperlunya.
<atribut output dan nilai yang dikembalikan> Ya Bervariasi Persyaratan untuk atribut ini bervariasi berdasarkan kondisi yang berbeda. Misalnya, ketika status adalah Succeeded, atribut outputs menyertakan atribut dan nilai yang dikembalikan sebagai output mock oleh tindakan. Jika status adalah Failed, atribut outputs termasuk atribut errors, yang merupakan array dengan satu atau beberapa objek kesalahan message yang memiliki informasi kesalahan.
<nilai header> Tidak JSON Nilai header apa pun yang dikembalikan oleh tindakan
<kode status yang dikembalikan> Ya String Kode status yang dikembalikan oleh tindakan
<status tindakan> Ya String Status tindakan, misalnya, Succeeded atau Failed

Misalnya, dalam definisi tindakan HTTP ini, atribut runtimeConfiguration.staticResult.name mereferensikan HTTP0 di dalam atribut staticResults tempat output mock untuk tindakan ditentukan. Atribut runtimeConfiguration.staticResult.staticResultOptions menentukan bahwa pengaturan hasil statis ada pada tindakan HTTP Enabled.

"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},

Tindakan HTTP mengembalikan output dalam definisi HTTP0 yang berada di dalam staticResults. Dalam contoh ini, untuk kode status, output mock adalah OK. Untuk nilai header, output mock adalah "Content-Type": "application/JSON". Untuk status tindakan, output mock adalah Succeeded.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},

Expressions

Dengan JSON, Anda dapat memiliki nilai literal yang ada pada waktu desain, misalnya:

"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7

Nilai Anda tidak akan dimunculkan hingga runtime. Untuk mewakili nilai-nilai ini, Anda dapat menggunakan ekspresi, yang dievaluasi pada waktu berjalan. Ekspresi adalah urutan yang dapat berisi satu atau beberapa fungsi, operator, variabel, nilai eksplisit, atau konstanta. Dalam definisi alur kerja Anda, Anda bisa menggunakan ekspresi di mana saja dalam nilai string JSON dengan mengawali ekspresi dengan at-sign (@). Saat mengevaluasi ekspresi yang mewakili nilai JSON, isi ekspresi diekstraksi dengan menghapus karakter @, dan selalu menghasilkan nilai JSON lainnya.

Misalnya, untuk properti customerName yang ditentukan sebelumnya, Anda bisa mendapatkan nilai properti dengan menggunakan fungsi parameters() dalam ekspresi dan menetapkan nilai tersebut ke properti accountName:

"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"

Interpolasi string juga memungkinkan Anda menggunakan beberapa ekspresi di dalam string yang diapit oleh karakter @ dan kurung kurawal ({}). Berikut adalah sintaksnya:

@{ "<expression1>", "<expression2>" }

Hasilnya adalah string, di mana kemampuan ini mirip dengan fungsi concat(), misalnya:

"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"

Jika Anda memiliki string literal yang dimulai dengan karakter @, awali karakter @ dengan karakter @ lainnya sebagai karakter escape: @@

Contoh berikut menunjukkan cara pengevaluasian ekspresi:

Nilai JSON Hasil
"Sophia Owen" Kembalikan karakter berikut: 'Sophia Owen'
"array[1]" Kembalikan karakter berikut: 'array[1]'
"@@" Kembalikan karakter ini sebagai string satu karakter: '@'
" @" Kembalikan karakter ini sebagai string dua karakter: ' @'

Untuk contoh ini, misalkan Anda mendefinisikan "myBirthMonth" sama dengan "January" dan "myAge" sama dengan angka 42:

"myBirthMonth": "January",
"myAge": 42

Contoh berikut menunjukkan bagaimana ekspresi dievaluasi:

Ekspresi JSON Hasil
"@parameters('myBirthMonth')" Kembalikan string berikut: "January"
"@{parameters('myBirthMonth')}" Kembalikan string berikut: "January"
"@parameters('myAge')" Kembalikan nomor ini: 42
"@{parameters('myAge')}" Kembalikan angka ini sebagai string: "42"
"Usia saya adalah @{parameters('myAge')}" Kembalikan string ini: "Usia saya adalah 42"
"@concat('Usia saya adalah ', string(parameters('myAge')))" Kembalikan string ini: "Usia saya adalah 42"
"Usia saya @@{parameters('myAge')}" Kembalikan string ini, yang menyertakan ekspresi: "Usia saya adalah @{parameters('myAge')}`

Saat Bekerja secara visual di perancang alur kerja, Anda dapat membuat ekspresi menggunakan editor ekspresi, misalnya:

Screenshot shows workflow designer and expression editor.

Setelah selesai, ekspresi muncul untuk properti terkait dalam definisi alur kerja Anda, misalnya, properti searchQuery di sini:

"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['twitter']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

Output

Di bagian outputs tersebut, tentukan data yang bisa dikembalikan alur kerja Anda ketika selesai dijalankan. Misalnya, untuk melacak status atau nilai tertentu dari setiap pengoperasian, tentukan bahwa output alur kerja mengembalikan data tersebut.

Catatan

Saat menanggapi permintaan masuk dari REST API layanan, jangan gunakan outputs. Sebagai gantinya, gunakan jenis tindakan Response. Untuk informasi selengkapnya, lihat Pemicu dan tindakan alur kerja.

Berikut adalah struktur umum untuk definisi parameter:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Atribut Wajib Tipe Deskripsi
<nama kunci> Ya String Nama kunci untuk nilai pengembalian output
<jenis kunci> Ya int, float, string, securestring, bool, array, JSON object Nama kunci untuk nilai pengembalian output
<nilai kunci> Ya Sama seperti <jenis kunci> Nilai pengembalian output

Untuk mendapatkan output dari alur kerja, tinjau riwayat dan detail yang dijalankan aplikasi logika Anda di portal Microsoft Azure atau gunakan Alur kerja REST API. Anda juga bisa meneruskan output ke sistem eksternal, misalnya, Power BI sehingga Anda bisa membuat dasbor.

Operator

Dalam ekspresi dan fungsi, operator melakukan tugas tertentu, seperti mereferensikan properti atau nilai dalam array.

Operator Tugas
' Untuk menggunakan string literal sebagai input atau dalam ekspresi dan fungsi, bungkus string hanya dengan tanda kutip tunggal, misalnya, '<myString>'. Jangan gunakan tanda kutip ganda (""), yang bertentangan dengan pemformatan JSON di sekitar seluruh ekspresi. Misalnya:

Ya: length('Hello')
No: length("Hello")

Saat Anda melewati array atau angka, Anda tidak memerlukan tanda baca pembungkusan. Misalnya:

Ya: panjang([1, 2, 3])
Tidak: panjang("[1, 2, 3]")
[] Untuk mereferensikan nilai pada posisi tertentu (indeks) dalam array atau di dalam objek JSON, gunakan kurung siku, misalnya:

- Untuk mendapatkan item kedua dalam array:

myArray[1]

- Untuk mengakses properti di dalam objek JSON:

Contoh 1:
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)

Contoh 2:
lastIndexOf(triggerBody()?['subject'],'some string')
. Untuk mereferensikan properti dalam objek, gunakan operator titik. Misalnya, untuk mendapatkan name properti untuk customer objek JSON:

"@parameters('customer').name"
? Untuk mereferensikan properti null dalam objek tanpa kesalahan runtime, gunakan operator tanda tanya. Misalnya, untuk menangani output null dari pemicu, Anda dapat menggunakan ekspresi ini:

@coalesce(trigger().outputs?.body?.<someProperty>, '<property-default-value>')

Fungsi

Beberapa ekspresi mendapatkan nilainya dari tindakan waktu proses yang mungkin belum ada saat definisi alur kerja Anda mulai berjalan. Untuk mereferensikan atau bekerja dengan nilai-nilai ini dalam ekspresi, Anda bisa menggunakan fungsi yang disediakan oleh Bahasa Definisi Alur Kerja.

Langkah berikutnya