Menjelaskan alur kerja Azure Logic Apps menggunakan Bahasa Definisi Alur Kerja

Selesai

Anda menentukan struktur dan alur kerja untuk alur kerja Azure Logic Apps menggunakan dokumen JSON. Dokumen ini berisi deskripsi JSON dari elemen yang membentuk alur kerja aplikasi logika dan, skema Bahasa Definisi Alur Kerja memvalidasinya. Cara term mudah untuk menjelaskan skema adalah dengan memeriksa alur kerja yang ada yang dibuat menggunakan perancang alur kerja di portal Azure, lalu melihat deskripsi JSON dari aplikasi logika ini.

Dalam skenario sampel, Anda ingin memberi konsultan Anda alur kerja umum bahwa mereka dapat beradaptasi dengan kebutuhan spesifik universitas tempat mereka bekerja. Anda ingin membuatnya semudah mungkin untuk menyesuaikan dan menyebarkan setiap alur kerja, sehingga Anda memutuskan untuk melihat kode di balik alur kerja, yaitu definisi alur kerja JSON.

Perancang alur kerja

Perancang alur kerja memungkinkan Anda membuat dan men-debug alur kerja untuk alur kerja aplikasi logika secara grafis. Perancang juga memungkinkan pengembang melihat alur kerja untuk melihat cara penerapannya. Gambar berikut menunjukkan contoh alur kerja sederhana, yang dipicu dengan mengirimkan permintaan HTTP GET ke URL tertentu. Hasilnya dikembalikan dalam respons HTTP. Dalam contoh ini, alur kerja mengirimkan kembali pesan sederhana Hello Logic Apps Template!.

Diagram showing workflow designer overview.

Sekarang, mari kita lihat bahasa definisi alur kerja seperti yang digunakan oleh templat JSON.

Tampilan kode

Jendela Tampilan Kode menampilkan dokumen JSON yang menjelaskan alur kerja. Di aplikasi sampel, JSON terlihat seperti ini:

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Response": {
                "inputs": {
                    "body": "Hello Azure Logic Apps Template!",
                    "statusCode": 200
                },
                "kind": "Http",
                "runAfter": {},
                "type": "Response"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "method": "GET",
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    }
}

Perhatikan bagian di cakupan definition yang terkait dengan tindakan dan pemicu yang ditampilkan di perancang. Anda dapat mengedit kode JSON dalam dokumen ini untuk mencerminkan perubahan apa pun yang diperlukan dalam fungsionalitas alur kerja aplikasi logika. Anda juga dapat menambahkan tindakan lebih lanjut dan menentukan bagaimana logika dalam alur kerja berjalan dari satu tindakan ke tindakan berikutnya.

Bagian pemicu

Bagian pemicu berisi deskripsi jenis pemicu, dan bagaimana hal itu dapat dipanggil. Dalam contoh ini, pemicunya adalah pemicu HTTP sederhana yang berjalan sebagai respons terhadap permintaan HTTP GET.

"triggers": {
    "manual": {
        "inputs": {
            "method": "GET",
            "schema": {}
        },
        "kind": "Http",
        "type": "Request"
    }
}

Pemicu harus menyertakan elemen berikut:

  • Nama unik di dalam alur kerja. Pada contoh sebelumnya, nama default pemicu adalah manual, tetapi Anda dapat mengganti nama default dengan pengidentifikasi yang lebih bermakna.

  • Jenis Pemicu. Jenis menunjukkan peristiwa yang menyebabkan pemicu berjalan. Pemicu Permintaan berjalan sebagai respons terhadap permintaan HTTP. Jenis pemicu lain yang tersedia meliputi:

    • Pengulangan untuk membuat pemicu yang berjalan sesuai dengan jadwal berulang.

    • HttpWebhook untuk mendengarkan acara di titik akhir.

    • ApiConnection untuk merespons peristiwa yang dipicu oleh layanan Azure lainnya, seperti pesan yang ada di antrean pesan, pesan email, dan sebagainya. Jenis pemicu ApiConnection adalah jenis umum, dan Anda menentukan detail lebih lanjut yang menunjukkan jenis layanan, dan informasi koneksi apa pun yang diperlukan.

  • Bagian input. Bagian ini menentukan data yang menentukan perilaku pemicu. Untuk pemicu Permintaan, metode menunjukkan jenis permintaan HTTP yang menyebabkan pemicu berjalan. Untuk pemicu ApiConnection, bagian input berisi informasi tentang cara terhubung ke sumber daya yang memicu peristiwa (string koneksi antrean pesan, misalnya). Jika pemicunya adalah pemicu Permintaan, bagian skema dari definisi input menentukan skema yang harus disesuai oleh payload permintaan. Permintaan HTTP GET tidak memiliki badan permintaan, sehingga skema kosong dalam contoh sebelumnya.

Contoh berikut menunjukkan definisi pemicu Permintaan lain yang memulai alur kerja dan menerima permintaan HTTP POST. Permintaan POST biasanya menyediakan badan permintaan, yang berisi data yang akan diposting. Badan permintaan dalam contoh ini berisi nama dan alamat pelanggan, yang terdiri dari jalan dan kota.

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

Pemicu juga dapat menentukan kondisi. Pemicunya hanya akan diaktifkan jika kondisi ini terpenuhi. Anda mendefinisikan kondisi di bagian kondisi opsional. Misalnya, Anda mungkin ingin menjalankan pemicu mypostrequest (ditunjukkan dalam contoh sebelumnya), hanya jika badan permintaan menentukan kota New York:

"mypostrequest": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      ...
   }
   "conditions": [
      {
        "expression": "@equals(triggerOutputs()['body']['customerAddress']['city'], 'New York')"
      }
   ]
}

Bagian tindakan

Bagian tindakan dari Logic App menentukan logika dan struktur alur kerja. Ini berisi serangkaian item tindakan. Item tindakan adalah blok komponen dasar untuk membangun alur kerja. Item tindakan mengambil input dan menghasilkan output, yang diteruskan ke item tindakan berikutnya dalam alur kerja. Tabel berikut mencantumkan berbagai jenis tindakan yang tersedia:

Item tindakan Deskripsi
ApiConnection Mengirim permintaan HTTP ke layanan tertentu. Jenis tindakan ini memungkinkan Anda mengintegrasikan alur kerja aplikasi logika dengan fitur Azure seperti Azure Service Bus, Azure Event Grid, dan lainnya. Tindakan ini memerlukan input yang menyertakan string koneksi untuk mengakses layanan, dan informasi dan parameter tambahan apa pun yang diperlukan untuk memanggil layanan.
Tulis Menggabungkan beberapa input dan ekspresi ke dalam satu output.
Fungsi Memungkinkan Anda memanggil Fungsi Azure.
HTTP Mengirim permintaan HTTP ke titik akhir HTTP, bukan layanan Azure.
Gabungkan Mengambil array item data sebagai input, dan menghasilkan string yang berisi item ini dipisahkan oleh pembatas tertentu.
Pilah Memilah dokumen JSON ke dalam satu set token, menggunakan skema yang ditentukan.
Kueri Memfilter item dalam array input, menggunakan kondisi yang ditentukan.
Respons Membuat respons untuk permintaan HTTP.
Table Menghasilkan tabel HTML dari array objek JSON.
Mengakhiri Segera membatalkan alur kerja.
Tunggu Menjeda alur kerja untuk interval yang ditentukan, atau hingga batas waktu terjadi.
Alur kerja Menjalankan alur kerja aplikasi logika lain.
Kondisi Sekumpulan jenis tindakan(Foreach, If, Switch, and Until) yang memungkinkan Anda menerapkan aliran kontrol terprogram dalam alur kerja. Anda dapat melakukan iterasi melalui item dalam koleksi, membuat keputusan berdasarkan nilai parameter input, dan mengulang hingga beberapa kondisi terpenuhi.
InisialisasiVariable,
IncrementVariable,
DecrementVariable,
dan SetVariable
Menentukan, menginisialisasi, menetapkan, dan memodifikasi variabel yang bisa Anda lewati di antara item tindakan dalam alur kerja.

Seperti pemicu, setiap tindakan harus memiliki nama unik di alur kerja. Dalam contoh berikut, nama tindakan defaultnya adalah Respons, tetapi Anda dapat menggunakan pengidentifikasi yang valid dan lebih bermakna. Tindakan harus memiliki bagian input yang menentukan data tempat tindakan bekerja. Dalam tindakan Respons, Anda dapat menentukan data untuk ekspresi yang akan ditampilkan dalam pesan respons, bersama dengan kode status HTTP.

Dalam definisi alur kerja dasar, tindakan menghasilkan respons HTTP dengan isi pesan singkat.

"actions": {
    "Response": {
        "inputs": {
            "body": "Hello Azure Logic Apps Template!",
            "statusCode": 200
        },
        "kind": "Http",
        "runAfter": {},
        "type": "Response"
    }
}

Bagian runAfter menunjukkan di mana tindakan berjalan dalam urutan alur kerja. Dalam contoh sebelumnya, hanya ada satu tindakan, sehingga selalu berjalan ketika pemicu diaktifkan. Jika alur kerja memiliki beberapa tindakan, Anda dapat menentukan nama tindakan dan status untuk tindakan tersebut di bagian ini. Tindakan berjalan jika tindakan runAfter selesai dengan status yang ditentukan. Kode berikut menunjukkan contoh. Tindakan mySecondAction berjalan setelah myFirstAction, tetapi hanya jika myFirstAction selesai dengan status "Berhasil":

"actions": {
    "mySecondAction": {
        "inputs": {
            ...
        },
        "runAfter": {
            "myFirstAction": [
                "Succeeded"
            ]
        },
        "type": ...
    },
    "myFirstAction": {
        "inputs": {
            ...
        },
        "runAfter": {},
        "type": ...
    }
}

Bagian output

Gunakan bagian output untuk menentukan data yang bisa dikembalikan alur kerja Anda ketika telah selesai dijalankan. Anda dapat melacak status atau data tertentu untuk setiap proses alur kerja. Anda dapat memeriksa output dari setiap proses alur kerja menggunakan riwayat eksekusi Azure Logic Apps, yang tersedia di portal Microsoft Azure atau API REST Alur Kerja.

Format bagian output terlihat seperti ini:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}

Ekspresi alur kerja

Anda dapat menggunakan ekspresi alur kerja sebagai ganti nilai tetap, variabel, atau konstanta apa pun. Anda juga dapat menempatkan ekspresi di mana saja dalam nilai string JSON dengan awalan ekspresi dengan tanda (@). Misalnya, Anda dapat menggunakan fungsi @parameters dalam ekspresi untuk mengambil nilai parameter bernama (parameter dijelaskan di bagian berikutnya).

"customerFullName": "Bill Frost",
"accountName": "@parameters('customerName')"

Azure Logic Apps menyediakan fungsi bawaan yang dapat digunakan untuk membuat ekspresi kompleks:

  • Fungsi string: Untuk menggabungkan atau memisahkan string, mengonversi karakter antara huruf besar dan kecil, dan mencari substring.
  • Fungsi koleksi: Untuk mendeteksi apakah koleksi berisi item yang cocok dengan pola tertentu, mengambil item dari koleksi, dan menggabungkan koleksi.
  • Fungsi perbandingan ogical L: Untuk mendeteksi apakah operand sama, berbeda, secara numerik lebih besar, atau secara numerik kurang dari satu sama lain.
  • Fungsi konversi: Untuk mengubah jenis atau format data.
  • Fungsi matematika: Seperti tambahkan, sub, div, dan mul, ditambah beberapa lainnya.
  • Fungsi tanggal dan waktu: Untuk penguraian dan pemrosesan tanggal dan waktu.
  • Fungsi alur kerja: Untuk mengambil informasi tentang data yang diteruskan ke tindakan alur kerja. Misalnya, fungsi parameter (sebelumnya ditampilkan) mengambil nilai parameter bernama, dan fungsi tubuh (ditunjukkan sebelumnya) mengembalikan data yang dihasilkan oleh tindakan.
  • Fungsi manipulasi JSON dan XML: Untuk mengurai dan memproses dokumen JSON dan XML.

Anda dapat menentukan variabel di bagian input dari tindakan InitializeVariable, dan Anda dapat memanipulasi variabel ini menggunakan ekspresi. Baca nilai variabel menggunakan fungsi variabel . Contoh berikut menggunakan tindakan InitializeVariable untuk membuat variabel bilangan bulat bernama myIntegerVariable dan menginisialisasinya menjadi 99. Contoh ini juga memperlihatkan tindakan Kondisi dengan jenis Jika. Kondisi ini menggunakan ekspresi untuk mengujinilai variabel myIntegerVariable , dan jika cocok dengan nilai 100, kondisi menggunakan tindakan HTTP untuk melakukan permintaan GET.

"actions": {
    "Condition": {
        "actions": {
            "HTTP": {
                "inputs": {
                    "method": "GET",
                    "uri": "http://dummyurl.com"
                },
                "runAfter": {},
                "type": "Http"
            }
        },
        "expression": {
            "equals": [
                "@variables('myIntegerVariable')",
                100
            ]
        }        ,
        "runAfter": {
            "Initialize": [
                "Succeeded"
            ]
        },
        "type": "If"
    },
    "Initialize": {
        "inputs": {
            "variables": [
                {
                    "name": "myIntegerVariable",
                    "type": "Integer",
                    "value": 99
                }
            ]
        },
        "runAfter": {},
        "type": "InitializeVariable"
    }
}

Bagian Parameter

Bagian parameter memungkinkan Anda membuat parameter alur kerja. Pada waktu proses, Anda dapat memberikan nilai untuk masing-masing parameter ini. Anda dapat mereferensikan parameter di mana saja dalam alur kerja tempat Anda mungkin menggunakan konstanta atau ekspresi.

Anda dapat menambahkan definisi parameter dengan nilai default. Nilai default digunakan jika Anda tidak memberikan nilai untuk parameter pada waktu proses. Contoh berikut menunjukkan cara menentukan parameter bernama cityParam. Parameter digunakan di dalam kondisi untuk tindakan mypostrequest. Ini melakukan tindakan hanya jika dokumen permintaan berisi kota yang cocok dengan nilai parameter. Nilai parameter default adalah New York:


    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            ...
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {
            "cityParam": {
                "defaultValue": "New York",
                "type": "String"
            }
        },
        "triggers": {
            "mypostrequest": {
                "conditions": [
                    {
                        "expression": "@equals(triggerOutputs()['body']['customerAddress']['city'], parameters('cityParam'))"
                    }
                ],
                "inputs": {
                    ...
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    }
}

Uji pengetahuan Anda

1.

Anda ingin alur kerja Azure Logic Apps berjalan setiap tiga menit. Di bagian mana dari definisi alur kerja berikut ini akan Anda tentukan perilaku berulang ini?

2.

Di bagian mana dari definisi alur kerja dapatkah Anda mengirim respons ke permintaan HTTP yang akan menampilkan isi pesan, kode status, dan header pesan?

3.

Di bagian mana dari definisi alur kerja apakah Anda menentukan nilai yang akan dikembalikan ketika alur kerja selesai?