logologo
Mulai
Panduan
Pengembangan
Plugin
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Mulai
Panduan
Pengembangan
Plugin
API
logologo

Mulai Cepat

Gambaran Umum Pengembangan Plugin
Menulis Plugin Pertama
Struktur Direktori Proyek

Pengembangan Sisi Server

Ikhtisar
Plugin
Collections
Operasi Database
Manajemen Sumber Data
Manajemen Sumber Daya
ACL
Middleware
Cache
Event
Konteks Permintaan
Skrip Migrasi
Logger
I18n
Command
Manajemen Tugas Terjadwal
Test

Pengembangan Sisi Klien

Ikhtisar
Plugin
Konteks
Router
ACL
Manajemen Sumber Data
Resource
Request
Gaya & Tema
Logger
I18n
Test

Lainnya

Panduan Peningkatan Plugin
Daftar Bahasa
Manajemen Dependensi
Build
Previous PageCommand
Next PageTest
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#CronJobManager Pengelola Tugas Terjadwal

CronJobManager adalah pengelola tugas terjadwal yang disediakan oleh NocoBase, dibangun berdasarkan cron. Ini memungkinkan plugin untuk mendaftarkan tugas terjadwal di sisi server, yang digunakan untuk menjalankan logika tertentu secara berkala.

#Penggunaan Dasar

import { Plugin } from '@nocobase/server';

export default class PluginCronDemo extends Plugin {
  async load() {
    this.app.cronJobManager.addJob({
      cronTime: '0 0 * * *', // Dijalankan setiap hari pukul 00:00
      onTick: async () => {
        console.log('Tugas harian: membersihkan data sementara');
        await this.cleanTemporaryData();
      },
      timeZone: 'Asia/Shanghai',
      start: true, // Mulai otomatis
    });
  }

  async cleanTemporaryData() {
    // Jalankan logika pembersihan di sini
  }
}

#Deskripsi Parameter

Definisi tipe CronJobParameters adalah sebagai berikut (dari cron):

export declare interface CronJobParameters {
  cronTime: string | Date | DateTime;
  onTick: CronCommand;
  onComplete?: CronCommand | null;
  start?: boolean;
  timeZone?: string;
  context?: any;
  runOnInit?: boolean;
  utcOffset?: string | number;
  unrefTimeout?: boolean;
}
ParameterTipeDeskripsi
cronTimestring | Date | DateTimeEkspresi waktu tugas terjadwal. Mendukung ekspresi cron standar, misalnya 0 0 * * * berarti dijalankan setiap hari pukul 00:00.
onTickfunctionFungsi utama tugas. Akan dipicu pada waktu yang ditentukan.
onCompletefunctionDijalankan ketika tugas dihentikan oleh job.stop() atau setelah fungsi onTick selesai.
startbooleanApakah akan memulai secara otomatis saat inisialisasi.
timeZonestringMenentukan zona waktu eksekusi (misalnya Asia/Shanghai).
contextanyKonteks saat menjalankan onTick.
runOnInitbooleanApakah akan dijalankan sekali segera saat inisialisasi.
utcOffsetstring | numberMenentukan offset zona waktu.
unrefTimeoutbooleanMengontrol apakah event loop tetap aktif.

#Contoh Ekspresi Cron

EkspresiArti
* * * * *Dijalankan setiap menit
0 * * * *Dijalankan setiap jam
0 0 * * *Dijalankan setiap hari pukul 00:00
0 9 * * 1Dijalankan setiap Senin pukul 09:00
*/10 * * * *Dijalankan setiap 10 menit

💡 Anda dapat menggunakan crontab.guru untuk membantu membuat ekspresi.

#Mengontrol Mulai dan Henti Tugas

const job = app.cronJobManager.addJob({ ... });
job.start(); // Mulai tugas
job.stop();  // Hentikan tugas
TIP

Tugas terjadwal akan dimulai saat aplikasi dimulai dan berhenti saat aplikasi dihentikan. Umumnya, Anda tidak perlu memulai atau menghentikannya secara manual kecuali jika benar-benar diperlukan.