Latihan - Membuat alur kerja menggunakan Durable Functions

Selesai

Dalam latihan ini, Anda menggunakan skenario contoh dari unit sebelumnya untuk mempelajari cara membuat alur kerja persetujuan di portal Azure menggunakan Durable Functions.

Membuat Aplikasi Fungsi

  1. Masuk ke portal Microsoft Azure menggunakan akun yang sama yang digunakan untuk mengaktifkan sandbox.

  2. Di menu portal Azure atau dari halaman Beranda, di bawah layanan Azure, pilih Buat sumber daya. Panel Buat sumber daya akan muncul.

  3. Cari dan pilih Aplikasi Fungsi. Pilih Konsumsi, lalu pilih tombol Pilih . Panel Membuat Aplikasi Fungsi akan muncul.

  4. Pada tab Dasar, masukkan nilai berikut untuk setiap pengaturan.

    Pengaturan Nilai Deskripsi
    Detail Proyek
    Langganan Langganan Concierge Menentukan langganan di mana aplikasi fungsi baru ini dibuat.
    Grup Sumber Daya Dari menu drop-down, pilih [nama grup sumber daya kotak pasir] Menentukan nama grup sumber daya untuk membuat aplikasi fungsi Anda. Kami membuat aplikasi fungsi di grup sumber daya kotak pasir yang ditetapkan saat kami mengaktifkan kotak pasir, yaitu, [nama grup sumber daya kotak pasir].
    Detail Instans
    Nama Aplikasi Fungsi [Nama unik secara global] Nama yang akan mengidentifikasi aplikasi fungsi baru Anda. Karakter yang valid adalah a-z, 0-9, dan -.
    Terbitkan Kode Menentukan bahwa fungsi menggunakan kode alih-alih kontainer.
    Tumpukan runtime Node.js Menentukan bahwa kode sampel dalam modul ini ditulis dalam JavaScript.
    Versi 20 LTS Menentukan versi tumpukan runtime.
    Wilayah [Pilih dari daftar berikut bagian ini] Pilih wilayah terdekat dengan Anda yang juga merupakan salah satu dari Wilayah kotak pasir yang diizinkan berikut.
    Sistem operasi
    Sistem Operasi Windows Menentukan sistem operasi yang menghosting aplikasi fungsi.
    Rencana

    Kotak pasir gratis memungkinkan Anda membuat sumber daya di subset wilayah global Azure. Pilih wilayah dari daftar berikut ini saat Anda membuat sumber daya:

    • US Barat 2
    • AS Tengah Bagian Selatan
    • US Tengah
    • AS Timur
    • Eropa Barat
    • Asia Tenggara
    • Jepang Timur
    • Brasil Selatan
    • Australia Tenggara
    • India Tengah
  5. Pilih Berikutnya : Penyimpanan.

  6. Pada tab Penyimpanan , masukkan nilai berikut untuk setiap pengaturan.

    Pengaturan Nilai Deskripsi
    Penyimpanan
    Akun Penyimpanan [Nama unik secara global] Menentukan nama akun penyimpanan baru yang digunakan oleh aplikasi fungsi Anda (yang tidak perlu cocok dengan nama unik global yang Anda tentukan untuk fungsi Anda). Panjang nama akun penyimpanan harus antara 3 dan 24 karakter dan mungkin hanya berisi angka dan huruf kecil. Dialog ini secara otomatis mengisi bidang dengan nama unik yang dihasilkan secara dinamis. Namun, tak perlu ragu untuk menggunakan nama lain atau bahkan menggunakan akun yang sudah ada.
  7. Pilih Berikutnya : Jaringan. Terima default.

  8. Pilih Berikutnya: Pemantauan.

  9. Pada tab Pemantauan, masukkan nilai berikut untuk pengaturan.

    Pengaturan Nilai Deskripsi
    Application Insights
    Mengaktifkan Application Insights Tidak Menentukan bahwa Application Insights dinonaktifkan untuk modul ini.
  10. Pilih Tinjau + buat dan tinjau opsi yang Anda konfigurasi. Jika Anda puas dengan opsi Anda, pilih Buat untuk memprovisi dan menerapkan aplikasi fungsi.

Tunggu hingga penerapan selesai sebelum melanjutkan. Penyebaran mungkin memakan waktu beberapa menit.

Pasang paket npm fungsi tahan lama

Karena kita membuat JavaScript Durable Functions, kita perlu menginstal durable-functions paket npm. Lakukan langkah-langkah berikut.

  1. Pilih Buka sumber daya untuk memilih aplikasi fungsi Anda. Panel Aplikasi Fungsi akan muncul.

  2. Di panel menu kiri, di bawah Alat Pengembangan, pilih Editor App Service (pratinjau), lalu pilih Buka editor. Panel Mulai Cepat Editor Azure App Service muncul di jendela browser baru.

  3. Di panel menu sebelah kiri, sorot folder WWWROOT.

  4. Di menu bar alat sebelah kiri, pilih ikon Buka Konsol.

    Aksi ini memulai konsol. Anda dapat menggunakan konsol ini untuk mengakses server web yang menghosting fungsi Anda dan menulis kode untuk fungsi Anda.

  5. Buat daftar file package.json.

    • Jalankan perintah berikut di konsol untuk membuat file JSON baru dan membukanya di editor.

      touch package.json
      open package.json
      
    • Tambahkan kode berikut.

      {
        "name": "example",
        "version": "1.0.0"
      }
      

      Ganti example dengan nama paket Anda. Misalnya, Anda dapat menggunakan nama unik global yang Anda tentukan untuk fungsi Anda sebelumnya.

  6. Pilih Ctrl+S untuk menyimpan file, lalu Ctrl+Q untuk menutup dokumen.

  7. Beralih kembali ke portal Microsoft Azure.

  8. Di bilah menu sebelah kiri, pada Alat Pengembangan, pilih Konsol. Panel Konsol muncul untuk aplikasi fungsi Anda.

  9. Jalankan perintah berikut:

    npm install durable-functions
    

    Perintah ini menginstruksikan manajer paket simpul untuk menginstal durable-functions paket dan dependensi yang diperlukan. Penginstalan dapat memakan waktu beberapa menit untuk diselesaikan, dan manajer paket simpul mungkin menampilkan beberapa peringatan, yang dapat Anda abaikan.

    Catatan

    Jika Anda diminta untuk menginstal versi npm yang lebih baru, gunakan perintah yang diberikan dalam kesalahan untuk menginstal versi yang lebih baru, lalu instal durable-functions paket setelah versi baru diinstal.

    Tunggu hingga semua paket selesai diinstal.

  10. Di panel menu kiri, gulir ke atas dan pilih Ringkasan, dan di bilah menu atas, pilih Mulai ulang, lalu pilih Ya saat diminta untuk memulai ulang.

    Tunggu hingga mulai ulang selesai sebelum melanjutkan.

Membuat fungsi klien untuk mengirimkan proposal desain

  1. Pada menu portal Microsoft Azure atau dari halaman Beranda, di bagian Sumber daya terbaru, pilih Lihat semua, kemudian pilih aplikasi fungsi. Panel Aplikasi Fungsi akan muncul.

  2. Pada halaman Gambaran Umum, pilih tab Fungsi di tengah layar.

  3. Pilih tombol Buat di portal Azure. Panel Buat fungsi muncul.

  4. Di bawah Pilih templat, dalam kotak Filter , masukkan starter HTTP Durable Functions dan pilih templat tersebut dari daftar. Templat ini menciptakan fungsi tahan lama yang berjalan sebagai respons terhadap permintaan HTTP.

  5. Di bawah Detail templat, untuk bidang Fungsi Baru, masukkan HttpStart untuk nama fungsi, dan di bidang Tingkat otorisasi, pilih Fungsi, lalu pilih Buat. Panel HttpStart muncul untuk fungsi Anda.

  6. Di panel menu kiri, pada Pengembang, pilih Kode + Uji. Panel Kode + Uji akan muncul untuk fungsi Anda.

    Kode untuk file index.js muncul di editor. File Anda harus menyerupai contoh berikut:

    const df = require("durable-functions");
    
    module.exports = async function (context, req) {
        const client = df.getClient(context);
        const instanceId = await client.startNew(req.params.functionName, undefined, req.body);
    
        context.log(`Started orchestration with ID = '${instanceId}'.`);
    
        return client.createCheckStatusResponse(context.bindingData.req, instanceId);
    };
    
  7. Di daftar tarik turun untuk file di fungsi Anda, pilih function.json untuk menampilkan pengikatan yang terkait dengan fungsi baru Anda. Informasi ini menentukan persyaratan autentikasi apa pun, bersama dengan metode HTTP yang dapat memicu fungsi. File ini juga menentukan bahwa fungsi adalah klien yang memulai proses orkestrasi. File Anda harus menyerupai contoh berikut:

    {
      "bindings": [
        {
          "authLevel": "function",
          "name": "req",
          "type": "httpTrigger",
          "direction": "in",
          "route": "orchestrators/{functionName}",
          "methods": [
            "post",
            "get"
          ]
        },
        {
          "name": "$return",
          "type": "http",
          "direction": "out"
        },
        {
          "name": "starter",
          "type": "orchestrationClient",
          "direction": "in"
        }
      ]
    }
    

    Catatan

    Sumber daya asosiasi yang mengikat dan item lainnya dengan pemicu. Ini adalah mekanisme deklaratif yang menghapus kebutuhan untuk referensi kode keras ke layanan dan fungsi lain dalam kode Anda.

Membuat fungsi orkestrator

  1. Pada menu portal Microsoft Azure atau dari halaman Beranda, di bagian Sumber daya terbaru, pilih Lihat semua, kemudian pilih aplikasi fungsi. Panel Aplikasi Fungsi akan muncul.

  2. Pada halaman Gambaran Umum , pilih tab Fungsi di tengah layar.

  3. Di bilah menu Fungsi , pilih Buat. Panel Buat fungsi muncul.

  4. Di bawah Pilih templat, dalam kotak Filter , masukkan orkestrator Durable Functions dan pilih templat tersebut dari daftar. Templat ini menciptakan fungsi tahan lama yang mengorkestrasi eksekusi fungsi.

  5. Di bawah Detail templat, untuk bidang Fungsi Baru, masukkan OrchFunction untuk nama fungsi, lalu pilih Buat. Panel fungsi OrchFunction muncul.

  6. Di panel menu kiri, pada Pengembang, pilih Kode + Uji. Panel Kode + Uji akan muncul untuk fungsi Anda.

    Kode untuk file index.js muncul di editor.

  7. Ganti kode yang sudah ada dengan kode berikut.

    const df = require("durable-functions");
    
    module.exports = df.orchestrator(function* (context) {
        const outputs = [];
    
        /*
        * We will call the approval activity with a reject and an approved to simulate both
        */
    
        outputs.push(yield context.df.callActivity("Approval", "Approved"));
        outputs.push(yield context.df.callActivity("Approval", "Rejected"));
    
        return outputs;
    });
    

    Kode ini memanggil fungsi Aktivitas bernama Persetujuan, yang segera Anda buat. Kode dalam fungsi orkestrator memanggil fungsi Persetujuan dua kali. Pertama kali mensimulasikan menerima proposal, dan kedua kalinya menguji logika penolakan proposal.

    Nilai yang dikembalikan setiap panggilan digabungkan dan diteruskan kembali ke fungsi klien. Di lingkungan produksi, fungsi orkestrasi Anda akan memanggil serangkaian fungsi aktivitas yang membuat keputusan menerima/menolak, dan mengembalikan hasil dari kegiatan ini.

  8. Di bilah menu atas, pilih Simpan untuk menyimpan fungsi baru Anda.

Membuat fungsi aktivitas

  1. Pada menu portal Microsoft Azure atau dari halaman Beranda, di bagian Sumber daya terbaru, pilih Lihat semua, kemudian pilih aplikasi fungsi. Panel Aplikasi Fungsi akan muncul.

  2. Pada halaman Gambaran Umum , pilih tab Fungsi di tengah layar.

  3. Di bilah menu Fungsi , pilih Buat. Panel Buat fungsi muncul.

  4. Di bawah Pilih templat, dalam kotak Filter , masukkan aktivitas Durable Functions dan pilih templat tersebut dari daftar. Templat ini membuat fungsi tahan lama yang dijalankan saat aktivitas dipanggil oleh fungsi orkestrator.

  5. Di bawah Detail templat, untuk bidang Fungsi Baru, masukkan Persetujuan untuk nama fungsi, lalu pilih Buat. Panel Persetujuan muncul untuk aplikasi fungsi Anda.

  6. Di panel menu kiri, pada Pengembang, pilih Kode + Uji. Panel Kode + Uji akan muncul untuk fungsi Anda.

    Kode untuk file index.js muncul di editor.

  7. Ganti kode yang sudah ada dengan kode berikut.

    module.exports = async function (context) {
        return `Your project design proposal has been -  ${context.bindings.name}!`;
    };
    

    Fungsi ini menampilkan pesan yang menunjukkan status proposal. Ekspresinya context.bindings.name adalah Accepted atau Rejected, tergantung pada parameter yang diteruskan ke fungsi dari orkestrator. Dalam skenario dunia nyata, Anda akan menambahkan logika yang menangani operasi terima atau tolak dalam fungsi ini.

  8. Di bilah menu atas, pilih Simpan untuk menyimpan fungsi baru Anda.

Memverifikasi bahwa alur kerja fungsi tahan lama dimulai

  1. Pada menu portal Microsoft Azure atau dari halaman Beranda, di bagian Sumber daya terbaru, pilih Lihat semua, kemudian pilih aplikasi fungsi. Panel Aplikasi Fungsi akan muncul.

  2. Pilih tab Fungsi di tengah halaman.

  3. Pilih fungsi HttpStart. Panel HttpStart muncul untuk fungsi Anda.

  4. Di bilah menu atas, pilih Dapatkan Url Fungsi dan salin URL. URL Anda harus menyerupai contoh berikut:

    https://example.azurewebsites.net/api/orchestrators/{functionName}?code=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    Anda menggunakan URL ini untuk menjalankan fungsi Anda.

  5. Buka jendela browser baru, dan buka URL yang Anda salin. Di URL, ganti tempat penampung {functionName} dengan OrchFunction, yang harus menyerupai contoh berikut:

    https://example.azurewebsites.net/api/orchestrators/OrchFunction?code=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    Pesan respons berisi sekumpulan titik akhir URI yang dapat Anda gunakan untuk memantau dan mengelola eksekusi, yang harus menyerupai contoh berikut:

    {
      "id": "f0e1d2c3b4a5968778695a4b3c2d1e0f",
      "statusQueryGetUri": "https://example.azurewebsites.net/...",
      "sendEventPostUri": "https://example.azurewebsites.net/...",
      "terminatePostUri": "https://example.azurewebsites.net/...",
      "rewindPostUri": "https://example.azurewebsites.net/...",
      "purgeHistoryDeleteUri": "https://example.azurewebsites.net/..."
    }
    
  6. Salin nilai statusQueryGetUri, dan gunakan browser web Anda untuk membuka URL ini. Anda akan melihat pesan respons yang menyerupai contoh berikut:

    {
      "name": "OrchFunction",
      "instanceId": "f0e1d2c3b4a5968778695a4b3c2d1e0f",
      "runtimeStatus": "Completed",
      "input": null,
      "customStatus": null,
      "output": [
        "Your project design proposal has been -  Approved!",
        "Your project design proposal has been -  Rejected!"
      ],
      "createdTime": "2019-04-16T15:23:03Z",
      "lastUpdatedTime": "2019-04-16T15:23:35Z"
    }
    

    Ingat bahwa fungsi orkestrasi menjalankan fungsi aktivitas dua kali. Pertama kali, fungsi aktivitas menunjukkan bahwa proposal proyek diterima. Kedua kalinya, proposal ditolak. Fungsi orkestrasi menggabungkan pesan dari kedua panggilan fungsi dan mengembalikannya ke fungsi klien.