Menyiapkan hub pemantauan Fabric

Hub pemantauan di Kit Pengembangan Beban Kerja Microsoft Fabric adalah pusat pemantauan terpusat. Hub pemantauan dirancang bagi pengguna Fabric untuk melacak pekerjaan latar belakang item. Untuk informasi selengkapnya, lihat Menggunakan hub pemantauan.

Backend

Bagian ini menjelaskan cara menyiapkan implementasi backend untuk hub pemantauan.

Tentukan JobScheduler properti dalam manifes item

Untuk mengaktifkan dukungan pekerjaan, item harus menentukan jenis pekerjaan yang didukungnya. JobScheduler Tambahkan properti ke file manifes item. Properti JobScheduler ini memungkinkan pekerjaan yang dikelola Fabric untuk item Anda.

Tabel berikut ini menyediakan gambaran umum properti definisi yang didukung JobScheduler :

Properti Deskripsi Nilai yang dapat dipakai
OnDemandJobDeduplicateOptions Mengatur opsi deduplikasi untuk pekerjaan item sesuai permintaan. - None: Jangan deduplikasi pekerjaan.
- PerItem: Pastikan hanya ada satu pekerjaan aktif yang dijalankan untuk item dan jenis pekerjaan yang sama.
- PerUser: Pastikan hanya ada satu pekerjaan aktif yang dijalankan untuk pengguna dan item yang sama.
ScheduledJobDeduplicateOptions Mengatur opsi deduplikasi untuk pekerjaan item sesuai permintaan. - None: Jangan deduplikasi pekerjaan.
- PerItem: Pastikan hanya ada satu pekerjaan aktif yang dijalankan untuk item dan jenis pekerjaan yang sama.
- PerUser: Pastikan hanya ada satu pekerjaan aktif yang dijalankan untuk pengguna dan item yang sama.
ItemJobTypes Daftar jenis pekerjaan dengan properti yang ditentukan. - Name: Nama jenis pekerjaan, yang sepenuhnya dapat disesuaikan oleh vendor perangkat lunak independen (ISV).

Menerapkan API beban kerja pekerjaan

Untuk berintegrasi dengan pekerjaan, beban kerja harus menerapkan API Pekerjaan seperti yang didefinisikan dalam spesifikasi Swagger.

Tiga API Fabric terkait dengan pekerjaan:


Memulai instans pekerjaan

Titik Akhir:POST /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}

API ini dipanggil untuk memulai eksekusi pekerjaan.

  • Respons: API harus mengembalikan 202 Accepted status, menunjukkan bahwa pekerjaan berhasil dijadwalkan oleh sistem.

Mendapatkan status instans pekerjaan

Titik akhir: GET /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}

Fabric menggunakan mekanisme polling untuk melacak status instans pekerjaan. API ini dipanggil setiap menit saat instans pekerjaan sedang berlangsung untuk memeriksa statusnya. Polling berhenti ketika pekerjaan selesai, baik berhasil atau karena kegagalan.

  • Respons: API harus mengembalikan 200 OK status bersama dengan status instans pekerjaan saat ini. Respons harus mencakup status pekerjaan, waktu mulai dan waktu akhir, dan detail kesalahan jika pekerjaan gagal.

    Status pekerjaan yang didukung:

    • NotStarted
    • InProgress
    • Completed
    • Failed
    • Cancelled

    Penting: Bahkan jika pekerjaan gagal, API ini harus mengembalikan 200 OK status dan Failed status pekerjaan.


Membatalkan instans pekerjaan

Titik akhir: POST /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}/cancel

Panggil API ini untuk membatalkan instans pekerjaan yang sedang berlangsung.

  • Respons: API harus mengembalikan 200 OK status bersama dengan Status Instans Pekerjaan saat ini. Respons harus mencakup status pekerjaan, waktu mulai dan berakhir, dan detail kesalahan jika pekerjaan gagal.

Informasi selengkapnya

Jumlah deadletter pekerjaan:

Pekerjaan ditandai sebagai "surat mati" oleh platform Fabric jika tidak dimulai dalam waktu 2 jam.

Contoh implementasi

Untuk contoh implementasi API ini, lihat JobsControllerImpl.cs di repositori sampel.

Ujung depan

Bagian ini menjelaskan cara menyiapkan implementasi frontend untuk hub pemantauan.

Menjalankan pekerjaan di UI Fabric

Setelah Anda mengintegrasikan pekerjaan ke dalam item Anda di backend, pengguna dapat mulai menjalankan pekerjaan.

Pengguna memiliki dua opsi untuk menjalankan pekerjaan di Fabric:

  • Pekerjaan terjadwal yang tidak dijadwal. Opsi ini didefinisikan oleh pengguna untuk berjalan secara berkala melalui pengalaman penjadwal Fabric bersama.
  • Sesuai permintaan dengan menggunakan UI beban kerja dengan dan SDK klien ekstensi.

Pengalaman penjadwal fabric dari UI

  • Opsi titik masuk:

    • Gunakan jadwal menu konteks.

      Cuplikan layar memperlihatkan opsi Jadwal di menu Penjadwal Fabric.

    • Gunakan workloadClient.itemSettings.open, di mana ID pengaturan yang dipilih adalah Schedule.

  • Tata letak

    Cuplikan layar memperlihatkan pengaturan penjadwal Fabric.

    1. Waktu refresh terakhir yang berhasil dan waktu refresh berikutnya.
    2. Tombol Refresh .
    3. Pengaturan jadwal item.

Onboarding

Langkah 1: Menambahkan item menu konteks jadwal

Untuk menampilkan tombol Jadwalkan di menu konteks item, tambahkan entri baru ke contextMenuItems properti dalam manifes frontend item:

{
    "name": "schedule"
}

Langkah 2: Menambahkan pengaturan jadwal item

Tambahkan entri baru schedule ke properti pengaturan item di manifes frontend:

"schedule": {
    "itemJobType": "ScheduledJob",
    "refreshType": "Refresh"
}
  • itemJobType: Jenis pekerjaan item yang ditentukan dalam file XML definisi pekerjaan item.
  • refreshType: Menentukan tampilan tombol Refresh . Pilih dari tiga opsi: Gunakan Refresh dan Run untuk mengaktifkan tombol refresh dan nama tampilan, atau atur None untuk menonaktifkan tombol Refresh .

API JavaScript Pekerjaan

Selain pekerjaan terjadwal yang tidak diawasi, beban kerja dapat menjalankan pekerjaan sesuai permintaan atau bahkan memulai pekerjaan terjadwal sesuai permintaan. Kami menyediakan sekumpulan API sebagai bagian dari klien ekstensi kami:

  • API pekerjaan terjadwal:

    • getItemScheduledJobs(objectId: string): Promise<ItemSchedule>
    • createItemScheduledJobs(createItemScheduledJobs: CreateItemScheduleParams): Promise<ItemSchedule>
    • updateItemScheduledJobs(updateItemScheduleParams: UpdateItemScheduleParams): Promise<ItemSchedule>
  • API instans pekerjaan tertentu:

    • runItemJob(jobParams: RunItemJobParams): Promise<ItemJobInstance>
    • cancelItemJob(jobParams: CancelItemJobParams): Promise<CancelItemJobResult>
    • getItemJobHistory(getHistoryParams: GetItemJobHistoryParams): Promise<ItemJobHistory>

Catatan

getItemJobHistory mengembalikan pekerjaan dengan status yang saat ini disimpan di Fabric. Karena Fabric saat ini hanya mengandalkan polling, ketahuilah bahwa statusnya mungkin bukan yang terbaru. Jika Anda mengharuskan antarmuka pengguna Anda untuk mencerminkan status yang paling akurat sesegera mungkin, kami sarankan Anda mendapatkan status langsung dari backend.

Integrasikan dengan hub pemantauan

Ketika data siap, pekerjaan item secara otomatis muncul di hub pemantauan. Langkah selanjutnya adalah menambahkan jenis item Anda ke panel filter dan mengonfigurasi dan menerapkan tindakan yang tersedia yang dapat diambil pengguna terhadap pekerjaan.

Mengaktifkan item Anda di panel filter hub pemantauan

Untuk menambahkan item Anda ke panel filter, tentukan properti baru dalam manifes frontend item dan atur supportedInMonitoringHub ke true.

Mengintegrasikan dengan tindakan cepat pekerjaan

Cuplikan layar memperlihatkan tombol tindakan cepat pekerjaan di hub pemantauan.

Pengguna dapat menjalankan serangkaian operasi terhadap pekerjaan, termasuk membatalkan, mencoba kembali, dan mendapatkan detail.

Tim beban kerja memutuskan mana yang ingin mereka aktifkan dengan mengatur itemJobConfig properti dalam manifes frontend item. Jika tidak diatur, ikon tidak terlihat.

Misalnya, konfigurasi yang kami tambahkan ke item sampel kami yang mendukung semua tindakan pekerjaan muncul nanti di bagian ini.

Saat pengguna memilih ikon Batalkan dari pekerjaan item sampel, kami memanggil tindakan item.job.cancelyang disediakan . Konteks terkait pekerjaan ke ekstensi Fabric.WorkloadSample diimplementasikan oleh beban kerja untuk benar-benar membatalkan pekerjaan.

Platform Fabric juga mengharapkan respons dari tindakan ini untuk memberi tahu pengguna dengan hasilnya.

"itemJobActionConfig": {
    "registeredActions": {
        "detail": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.detail"
        },
        "cancel": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.cancel"
        },
        "retry": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.retry"
        }
    }
}

Panel Detail Pekerjaan

Cuplikan layar memperlihatkan panel detail pekerjaan di hub pemantauan.

Ketika tim beban kerja mendaftarkan tindakan untuk informasi terperinci, Fabric mengharapkan tindakan beban kerja untuk mengembalikan data dalam format tertentu sehingga Fabric dapat menampilkan informasi tersebut di panel samping.

Saat ini, pasangan kunci/nilai dalam teks biasa atau hyperlink didukung.

  • Untuk contoh penanganan tindakan pekerjaan, lihat index.worker.ts dalam repositori sampel. Dalam file, cari tindakan yang dimulai dengan item.job.

Eksekusi terbaru

Selain menampilkan status pekerjaan di hub pemantauan, Fabric menawarkan pengalaman pengguna bersama untuk menampilkan eksekusi item tertentu baru-baru ini.

Titik masuk:

  • Menu>konteks Eksekusi terbaru

    Cuplikan layar opsi eksekusi terbaru di menu opsi.

  • Menggunakan workloadClient.itemRecentRuns.open.

Onboarding

Langkah 1: Tambahkan recentRuns item menu konteks

Untuk menampilkan tombol Eksekusi terbaru di menu item, tambahkan entri baru ke contextMenuItems properti dalam manifes frontend item.

Contoh:

{
    "name": "recentruns"
}

Langkah 2: Menambahkan pengaturan item recentRun

Tambahkan entri baru recentRun ke properti pengaturan item di manifes frontend.

Contoh:

"recentRun": {
     "useRecentRunsComponent": true,
}

Integrasi pekerjaan di pita item sampel

Sebagai bagian dari sampel beban kerja UI kami, kami menambahkan bagian yang didedikasikan untuk pekerjaan ke pita item.

Cuplikan layar memperlihatkan tab Item di UI Fabric.

Untuk contoh bagaimana pita ini diimplementasikan, lihat ItemTabToolbar.tsx dalam repositori sampel.