logologo
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
logologo

เริ่มต้นใช้งานฉบับย่อ

ภาพรวมการพัฒนาปลั๊กอิน
การเขียนปลั๊กอินแรกของคุณ
โครงสร้างไดเรกทอรีโปรเจกต์

การพัฒนาฝั่งเซิร์ฟเวอร์

ภาพรวม
ปลั๊กอิน
คอลเลกชัน
การดำเนินการฐานข้อมูล
การจัดการแหล่งข้อมูล
การจัดการทรัพยากร
การควบคุมการเข้าถึง (ACL)
มิดเดิลแวร์
แคช
เหตุการณ์
คอนเท็กซ์คำขอ
สคริปต์การย้ายข้อมูล
ล็อก
การทำให้เป็นสากล (I18n)
คำสั่ง
การจัดการงานที่กำหนดเวลา
การทดสอบ

การพัฒนาฝั่งไคลเอนต์

ภาพรวม
ปลั๊กอิน
คอนเท็กซ์
เราเตอร์
การควบคุมการเข้าถึง (ACL)
การจัดการแหล่งข้อมูล
ทรัพยากร
คำขอ
สไตล์และธีม
ล็อก
การทำให้เป็นสากล (I18n)
การทดสอบ

อื่นๆ

คู่มือการอัปเกรดปลั๊กอิน
รายการภาษา
การจัดการ Dependencies
การสร้าง
Previous Pageคำสั่ง
Next Pageการทดสอบ
TIP

เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ

#CronJobManager การจัดการงานตามกำหนดเวลา

CronJobManager เป็นตัวจัดการงานตามกำหนดเวลาที่ NocoBase จัดเตรียมไว้ให้ ซึ่งอิงตาม cron ครับ/ค่ะ โดยอนุญาตให้ปลั๊กอินสามารถลงทะเบียนงานตามกำหนดเวลาบนเซิร์ฟเวอร์ได้ เพื่อใช้ในการรัน logic ที่เฉพาะเจาะจงเป็นประจำครับ/ค่ะ

#การใช้งานเบื้องต้น

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

export default class PluginCronDemo extends Plugin {
  async load() {
    this.app.cronJobManager.addJob({
      cronTime: '0 0 * * *', // รันทุกวันเวลา 00:00 น.
      onTick: async () => {
        console.log('Daily task: clean temporary data');
        await this.cleanTemporaryData();
      },
      timeZone: 'Asia/Shanghai',
      start: true, // เริ่มทำงานอัตโนมัติ
    });
  }

  async cleanTemporaryData() {
    // รัน logic สำหรับการล้างข้อมูลที่นี่
  }
}

#คำอธิบายพารามิเตอร์

การกำหนดประเภท CronJobParameters มีรายละเอียดดังนี้ (จาก 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;
}
พารามิเตอร์ประเภทคำอธิบาย
cronTimestring | Date | DateTimeนิพจน์เวลาสำหรับงานตามกำหนดเวลา รองรับ cron expression มาตรฐาน เช่น 0 0 * * * หมายถึงรันทุกวันเวลา 00:00 น. ครับ/ค่ะ
onTickfunctionฟังก์ชันหลักของงาน จะถูกเรียกใช้งานเมื่อถึงเวลาที่กำหนดครับ/ค่ะ
onCompletefunctionจะถูกรันเมื่อ task ถูกหยุดด้วย job.stop() หรือหลังจากฟังก์ชัน onTick ทำงานเสร็จสิ้นครับ/ค่ะ
timeZonestringระบุโซนเวลาที่จะรัน (เช่น Asia/Shanghai) ครับ/ค่ะ
contextanyContext เมื่อรัน onTick ครับ/ค่ะ
runOnInitbooleanจะรันทันทีหนึ่งครั้งเมื่อเริ่มต้น (initialization) หรือไม่ครับ/ค่ะ
utcOffsetstring | numberระบุค่าชดเชยโซนเวลาครับ/ค่ะ
unrefTimeoutbooleanควบคุมว่า event loop จะยังคงทำงานอยู่หรือไม่ครับ/ค่ะ

#ตัวอย่าง Cron Expression

Expressionความหมาย
* * * * *รันทุกนาที
0 * * * *รันทุกชั่วโมง
0 0 * * *รันทุกวันเวลา 00:00 น.
0 9 * * 1รันทุกวันจันทร์เวลา 09:00 น.
*/10 * * * *รันทุก 10 นาที

💡 คุณสามารถใช้ crontab.guru เพื่อช่วยสร้าง expression ได้ครับ/ค่ะ

#การควบคุมการเริ่มและหยุดงาน

const job = app.cronJobManager.addJob({ ... });
job.start(); // เริ่มงาน
job.stop();  // หยุดงาน
TIP

งานตามกำหนดเวลาจะเริ่มทำงานพร้อมกับการเริ่มของแอปพลิเคชัน และจะหยุดทำงานเมื่อแอปพลิเคชันหยุดครับ/ค่ะ โดยทั่วไปแล้ว คุณไม่จำเป็นต้องสั่ง start หรือ stop ด้วยตัวเองครับ/ค่ะ เว้นแต่ในกรณีที่จำเป็นจริงๆ