Bagikan melalui


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

Saat Anda membuat alur kerja aplikasi logika di Azure Logic Apps, alur kerja memiliki definisi JavaScript Object Notation (JSON) yang mendasarinya yang menjelaskan logika aktual yang menjalankan alur kerja. Definisi alur kerja mengikuti struktur yang divalidasi terhadap 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 yang membuat instans alur kerja, 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>" }
}
Attribute Required Description
definition Yes 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 No Definisi untuk satu atau beberapa tindakan untuk dijalankan pada runtime alur kerja. Untuk informasi selengkapnya, lihat Pemicu dan tindakan.



Tindakan maksimum: 250
contentVersion No 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 No Definisi untuk output yang akan dikembalikan dari alur kerja yang dijalankan. Untuk informasi selengkapnya, lihat Output.



Output maksimum: 10
parameters No 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 No 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 statis.
triggers No 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.

Parameters

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 Anda gunakan kembali di seluruh alur kerja tanpa hardcoding atau yang sering berubah. Di bagian definisi parameters alur kerja, Anda dapat menentukan atau mengedit parameter untuk nilai yang digunakan alur kerja Anda saat runtime. 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>"
      }
   }
},
Attribute Required Type Description
< nama parameter> Yes String Nama untuk parameter yang ingin Anda tentukan
< jenis parameter> Yes int, float, string, bool, array, objek, securestring, secureobject



Catatan: Untuk semua kata sandi, kunci, dan rahasia, gunakan securestring jenis atau secureobject karena GET operasi tidak mengembalikan jenis ini. Untuk informasi selengkapnya tentang mengamankan parameter, lihat Rekomendasi keamanan untuk parameter tindakan dan input.
Jenis untuk parameter
< default-parameter-value> Yes Sama seperti type Nilai parameter default yang digunakan jika tidak ada nilai yang ditentukan saat alur kerja membuat instans. Atribut defaultValue diperlukan sehingga perancang alur kerja dapat menampilkan parameter dengan benar, tetapi Anda dapat menentukan nilai kosong.
< array-with-permitted-parameter-values> No Array Array dengan nilai yang dapat diterima parameter
< deskripsi parameter> No 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 kunci 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 statis

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": { "<...>" }
}
Attribute Required Type Description
< static-result-definition-name> Yes 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.
< output-attributes-and-values-returned> Yes Varies 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.
< header-values> No JSON Nilai header apa pun yang dikembalikan oleh tindakan
< status-code-returned> Yes String Kode status yang dikembalikan oleh tindakan
< status tindakan> Yes 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 proses. 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 yang ditentukan customerName sebelumnya, Anda bisa mendapatkan nilai properti dengan menggunakan fungsi parameter() dalam ekspresi dan menetapkan nilai tersebut ke accountName properti :

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

Interpolasi string juga memungkinkan Anda menggunakan beberapa ekspresi di dalam string yang dibungkus 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 Result
"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 Result
"@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:

Cuplikan layar memperlihatkan perancang alur kerja dan editor ekspresi.

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')['x']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

Outputs

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.

Note

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

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Attribute Required Type Description
< nama kunci> Yes String Nama kunci untuk nilai pengembalian output
< jenis kunci> Yes int, float, string, securestring, bool, array, objek JSON Nama kunci untuk nilai pengembalian output
< nilai kunci> Yes 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.

Operators

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

Operator Task
' 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 objek tanpa mempertaruhkan kesalahan runtime atau alur kerja gagal, gunakan operator tanda tanya (?), juga dikenal sebagai operator abaikan null, sebelum properti. Operator ini memungkinkan Anda mengakses properti atau elemen array dengan aman saat objek induk atau properti yang dirujuk mungkin berisi null atau hilang.

- Jika objek induk yang muncul sebelum ? operator atau null tidak memiliki properti yang direferensikan, seluruh ekspresi mengembalikan null, daripada alur kerja gagal.

- Jika objek atau properti ada, ekspresi mengembalikan nilai properti.

Misalnya, Anda memiliki ekspresi berikut:

triggerBody()?['ContentData']

- Jika triggerBody() mengembalikan objek dari ContentData properti , Anda mendapatkan nilai objek.

- Jika triggerBody() properti hilang null atau hilang ContentData , fungsi mengembalikan null daripada gagal dengan kesalahan "Tidak dapat memproses ekspresi bahasa templat".

Operator ? juga memungkinkan Anda menautkan properti akses dengan aman dan berguna dalam skenario berikut:

- Kelola ekspresi yang berfungsi dengan bidang JSON opsional.
- Menangani output konektor yang mungkin menghilangkan properti tertentu.
- Hindari ekspresi rapuh dalam logika kondisional.

Misalnya, untuk menautkan akses properti dan menangani output null dari pemicu, Anda dapat menggunakan ekspresi berikut:

coalesce(trigger().outputs?.body?['<property-name>'], '<property-default-value>')

Functions

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 dapat menggunakan fungsi yang disediakan Bahasa Definisi Alur Kerja.