Membuat, mengedit, atau memperluas JSON untuk definisi alur kerja aplikasi logika pada Azure Logic Apps

Berlaku pada: Azure Logic Apps (Konsumsi)

Saat Anda membuat solusi integrasi perusahaan dengan alur kerja otomatis pada Azure Logic Apps, definisi aplikasi logika dasarnya adalah menggunakan JavaScript Object Notation (JSON) simpel dan deklaratif serta skema Workflow Definition Language (WDL) untuk deskripsi dan validasinya. Format ini menjadikan definisi aplikasi logika lebih mudah dibaca dan dipahami tanpa mengetahui banyak tentang kode. Ketika ingin mengotomatiskan pembuatan dan penyebaran aplikasi logika, Anda dapat menyertakan definisi alur kerja sebagai sumber daya Azure di dalam template Azure Resource Manager. Untuk membuat, mengelola, dan menyebarkan aplikasi logika, Anda nantinya dapat menggunakan Azure PowerShell, Azure CLI, atau Azure Logic Apps ReST API.

Untuk menggunakan definisi aplikasi logika di JSON, buka penyunting Tampilan Kode saat bekerja di portal Azure atau di Visual Studio, atau salin definisi ke penyunting apa pun yang diinginkan. Jika Anda baru menggunakan Azure Logic Apps, tinjau Membuat contoh alur kerja aplikasi logika Konsumsi.

Catatan

Beberapa kemampuan Azure Logic Apps, seperti menentukan parameter dan beberapa pemicu dalam definisi aplikasi alur kerja, hanya tersedia di JSON, dan bukan di perancang alur kerja. Jadi untuk tugas-tugas ini, Anda harus bekerja di Tampilan Kode atau penyunting lainnya.

Edit JSON - portal Microsoft Azure

  1. Masuk ke portal Microsoft Azure.

  2. Dari menu sebelah kiri, pilih Semua layanan. Di kotak pencarian, temukan "aplikasi logika", lalu dari hasil, pilih aplikasi logika Anda.

  3. Pada menu aplikasi logika Anda, di bawah Alat Pengembangan, pilih Tampilan Kode Aplikasi logika.

    Penyunting Tampilan Kode membuka dan menampilkan definisi alur kerja Anda dalam format JSON.

Edit JSON - Visual Studio

Agar dapat mengerjakan definisi alur logika di Visual Studio, pastikan Anda telah memasang alat yang diperlukan. Untuk membuat aplikasi logika menggunakan Visual Studio, ulasan Mulai Cepat: Mengotomatiskan berbagai tugas dan proses dengan Azure Logic Apps - Visual Studio.

Di Visual Studio, Anda dapat membuka aplikasi logika yang dibuat dan disebarkan langsung dari portal Microsoft Azure atau sebagai proyek Azure Resource Manager dari Visual Studio.

  1. Buka solusi Visual Studio, atau proyek grup sumber daya Azure, yang berisi aplikasi logika Anda.

  2. Temukan dan buka definisi alur kerja Anda, yang secara default, muncul di template Resource Manager, bernama LogicApp.json. Anda dapat menggunakan dan menyesuaikan templat ini untuk penyebaran ke lingkungan yang berbeda.

  3. Buka menu pintasan untuk definisi dan template alur kerja Anda. Pilih Buka Dengan Perancang Aplikasi Logika.

    Buka aplikasi logika di solusi Visual Studio

    Tip

    Jika Anda tidak memiliki perintah ini di Visual Studio 2019, periksa apakah Anda memiliki pembaruan terbaru untuk Visual Studio.

  4. Di bagian bawah desainer alur kerja, pilih Tampilan Kode.

    Penyunting Tampilan Kode membuka dan menampilkan definisi alur kerja Anda dalam format JSON.

  5. Untuk kembali ke tampilan perancang, di bagian bawah penyunting Tampilan Kode, pilih Desain.

Parameter

Siklus hidup penyebaran biasanya memiliki lingkungan yang berbeda untuk pengembangan, pengujian, penahapan, dan produksi. Ketika Anda memiliki nilai yang ingin Anda gunakan kembali di seluruh aplikasi logika Anda tanpa harus membuat hardcoding atau yang bervariasi berdasarkan kebutuhan yang sesuai penyebaran Anda, Anda dapat membuat templat Azure Resource Manager untuk definisi alur kerja Anda sehingga Anda juga dapat mengotomatiskan penyebaran aplikasi logika.

Ikuti langkah-langkah umum ini untuk membuat parameter, atau tentukan serta gunakan parameter untuk nilai tersebut sebagai gantinya. Anda kemudian dapat memberikan nilai tersebut dalam file parameter terpisah yang meneruskan nilai tersebut ke templat Anda. Dengan begitu, Anda dapat mengubah nilai tersebut dengan lebih mudah tanpa harus memperbarui dan menyebar ulang aplikasi logika Anda. Untuk detail selengkapnya, lihat Ringkasan: Mengotomatiskan penyebaran untuk aplikasi logika dengan templat Azure Resource Manager.

  1. Dalam templat Anda, tentukan parameter templat dan parameter definisi alur kerja untuk menerima nilai yang akan digunakan saat penyebaran dan runtime, secara berurutan.

    Parameter templat ditentukan pada bagian parameter yang berada di luar definisi alur kerja Anda, sementara parameter definisi alur kerja ditentukan di bagian parameter yang ada di dalam definisi alur kerja Anda.

  2. Ganti nilai hardcoded dengan ekspresi yang mereferensikan parameter ini. Ekspresi templat menggunakan sintaks yang berbeda dari ekspresi definisi alur kerja.

    Hindari mempersulit kode Anda dengan tidak menggunakan ekspresi templat, yang dievaluasi saat penyebaran, di dalam ekspresi definisi alur kerja, yang dievaluasi saat runtime. Gunakan hanya ekspresi templat di luar definisi alur kerja Anda. Gunakan hanya ekspresi definisi alur kerja di dalam definisi alur kerja Anda.

    Ketika Anda menentukan nilai untuk parameter definisi alur kerja, Anda dapat mereferensikan parameter templat dengan menggunakan bagian parameter yang berada di luar definisi alur kerja Anda, tetapi masih berada di dalam definisi sumber daya untuk aplikasi logika Anda. Dengan demikian, Anda dapat memperoleh nilai parameter templat ke parameter definisi alur kerja Anda.

  3. Simpan nilai untuk parameter Anda dalam file parameter terpisah dan sertakan file tersebut dalam penyebaran Anda.

String proses dengan fungsi

Azure Logic Apps memiliki berbagai fungsi untuk bekerja dengan string. Misalnya, Anda ingin meneruskan nama perusahaan dari suatu pesanan ke sistem lain. Namun, Anda tidak yakin tentang penanganan yang tepat untuk pengodean karakter. Anda dapat melakukan pengodean base64 pada string ini, tetapi untuk menghindari pelolosan di URL, Anda dapat mengganti beberapa karakter sebagai alternatifnya. Selain itu, Anda hanya perlu substring untuk nama perusahaan karena lima karakter pertama tidak digunakan.

{
  "$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "order": {
      "defaultValue": {
        "quantity": 10,
        "id": "myorder1",
        "companyName": "NAME=Contoso"
      },
      "type": "Object"
    }
  },
  "triggers": {
    "request": {
      "type": "Request",
      "kind": "Http"
    }
  },
  "actions": {
    "order": {
      "type": "Http",
      "inputs": {
        "method": "GET",
        "uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
      }
    }
  },
  "outputs": {}
}

Langkah-langkah ini menjelaskan bagaimana contoh ini memproses string tersebut, bekerja dari dalam ke luar:

"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
  1. Dapatkan length() untuk nama perusahaan, sehingga Anda mendapatkan jumlah total karakter.

  2. Untuk mendapatkan string yang lebih pendek, kurangi 5.

  3. Sekarang dapatkan substring(). Mulai dari indeks5, dan pergi ke sisa string.

  4. Konversi substring ini menjadi string base64().

  5. Sekarang replace() semua + karakter dengan - karakter.

  6. Akhirnya, replace() semua / karakter dengan _ karakter.

Petakan item daftar ke nilai properti, lalu gunakan peta sebagai parameter

Untuk mendapatkan hasil yang berbeda berdasarkan nilai properti, Anda dapat membuat peta yang mencocokkan setiap nilai properti dengan hasil, lalu menggunakan peta tersebut sebagai parameter.

Misalnya, alur kerja ini mendefinisikan beberapa kategori sebagai parameter dan peta yang cocok dengan kategori tersebut dengan URL tertentu. Pertama, alur kerja mendapatkan daftar artikel. Kemudian, alur kerja menggunakan peta untuk menemukan URL yang cocok dengan kategori dari setiap artikel.

  • Fungsi intersection() ini memeriksa apakah kategori cocok dengan kategori yang ditentukan.

  • Setelah mendapatkan kategori yang cocok, contoh tersebut menarik item dari peta menggunakan kurung siku: parameters[...]

{
  "$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "specialCategories": {
      "defaultValue": [
        "science",
        "google",
        "microsoft",
        "robots",
        "NSA"
      ],
      "type": "Array"
    },
    "destinationMap": {
      "defaultValue": {
        "science": "https://www.nasa.gov",
        "microsoft": "https://www.microsoft.com/en-us/default.aspx",
        "google": "https://www.google.com",
        "robots": "https://en.wikipedia.org/wiki/Robot",
        "NSA": "https://www.nsa.gov/"
      },
      "type": "Object"
    }
  },
  "triggers": {
    "Request": {
      "type": "Request",
      "kind": "http"
    }
  },
  "actions": {
    "getArticles": {
      "type": "Http",
      "inputs": {
        "method": "GET",
        "uri": "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=https://feeds.wired.com/wired/index"
      }
    },
    "forEachArticle": {
      "type": "foreach",
      "foreach": "@body('getArticles').responseData.feed.entries",
      "actions": {
        "ifGreater": {
          "type": "if",
          "expression": "@greater(length(intersection(item().categories, parameters('specialCategories'))), 0)",
          "actions": {
            "getSpecialPage": {
              "type": "Http",
              "inputs": {
                "method": "GET",
                "uri": "@parameters('destinationMap')[first(intersection(item().categories, parameters('specialCategories')))]"
              }
            }
          }
        }
      },
      "runAfter": {
        "getArticles": [
          "Succeeded"
        ]
      }
    }
  }
}

Dapatkan data dengan fungsi Tanggal

Untuk mendapatkan data dari sumber data yang tidak secara asli mendukung pemicu, Anda dapat menggunakan fungsi Tanggal untuk bekerja dengan waktu dan tanggal sebagai gantinya. Misalnya, ekspresi ini menemukan berapa lama langkah-langkah alur kerja ini, bekerja dari dalam ke luar:

"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
  1. Dari tindakan order, ekstrak startTime.

  2. Dapatkan waktu saat ini dengan utcNow().

  3. Kurangi satu detik:

    addseconds(..., -1)

    Anda dapat menggunakan satuan waktu lain, seperti minutes atau hours.

  4. Sekarang, Anda dapat membandingkan kedua nilai ini.

    Jika nilai pertama kurang dari nilai kedua, maka lebih dari satu detik telah berlalu sejak pesanan pertama kali dibuat.

Untuk membuat format tanggal, Anda bisa menggunakan pemformatan string. Misalnya, untuk mendapatkan RFC1123, gunakan utcnow('r'). Pelajari selengkapnya tentang pemformatan tanggal.

{
  "$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "order": {
      "defaultValue": {
        "quantity": 10,
        "id": "myorder-id"
      },
      "type": "Object"
    }
  },
  "triggers": {
    "Request": {
      "type": "request",
      "kind": "http"
    }
  },
  "actions": {
    "order": {
      "type": "Http",
      "inputs": {
        "method": "GET",
        "uri": "https://www.example.com/?id=@{parameters('order').id}"
      }
    },
    "ifTimingWarning": {
      "type": "If",
      "expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
      "actions": {
        "timingWarning": {
          "type": "Http",
          "inputs": {
            "method": "GET",
            "uri": "https://www.example.com/?recordLongOrderTime=@{parameters('order').id}&currentTime=@{utcNow('r')}"
          }
        }
      },
      "runAfter": {
        "order": [
          "Succeeded"
        ]
      }
    }
  },
  "outputs": {}
}

Langkah berikutnya