Sử dụng kbmMW Scheduler để lập lịch công việc định kỳ là một nhiệm vụ rất hiệu quả. Sau khi đọc nội dung bên dưới, bạn cũng sẽ cảm thấy dễ dàng!
Cron là gì? Tham khảo chi tiết về biểu thức cron trong các tác vụ định kỳ.
kbmMW Scheduler hỗ trợ cron, cho phép thực thi các tác vụ theo cron. Xem ví dụ mã nguồn:
LichTrinhDinhKy := LichTrinh
.LapLich(procedure(const SuKien: IkbmMWScheduledEvent)
begin
HienThiThongBao('Bắt đầu truy vấn: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
DuLieuLocal.KiemTra;
HienThiThongBao('Hoàn thành truy vấn: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
end)
.DongBoSauChay(procedure(const SuKien: IkbmMWScheduledEvent)
begin
//
end)
.Cron('0 0 8 * * 1 *', TkbmMWScheduleCronMode.mwscmExtendedSecondAndYear) // Thực thi tác vụ vào 8 giờ sáng thứ Hai hàng tuần
.KhiXayRaLoi(procedure(const SuKien: IkbmMWScheduledEvent; const Loi: Exception)
begin
HienThiThongBao('Lỗi truy vấn: ' + Loi.Message);
end);
Đoạn mã trên định nghĩa một tác vụ được thực thi vào mỗi sáng thứ Hai lúc 8 giờ và gửi thông báo cho người dùng.
Đoạn mã này sử dụng framework kbmMW Scheduler. Về kbmMW Scheduler, bạn có thể tham khảo các bài viết trước của tôi.
Bây giờ hãy tập trung vào phương thức Cron, nguyên mẫu như sau:
function Cron(const Chuoi: string; const CheDo: TkbmMWScheduleCronMode = mwscmExtendedYear): IkbmMWScheduledEvent;
Tham số đầu tiên Chuoi là biểu thức cron.
Tham số thứ hai CheDo quyết định định dạng của biểu thức cron. Trong ví dụ mã nguồn, CheDo = TkbmMWScheduleCronMode.mwscmExtendedSecondAndYear, quyết định định dạng cron là 7 vị trí, tức là: giây phút giờ ngày tháng tuần (tuần) năm. Đối với định dạng cron này, bạn có thể sử dụng trình thiết kế cron trực tuyến để cấu hình. Như vậy, bạn không cần phải hiểu cú pháp cron cũng có thể dễ dàng thiết kế biểu thức cron mong muốn.
Đối với phương thức Cron, giá trị mặc định của CheDo là TkbmMWScheduleCronMode.mwscmExtendedYear, quyết định định dạng cron là 5 hoặc 6 vị trí. Với 5 vị trí, ý nghĩa là: phút giờ ngày tháng tuần (tuần). Với 6 vị trí, ý nghĩa là: phút giờ ngày tháng tuần (tuần) năm, nhiều hơn 5 vị trí là vị trí năm.
Bây giờ hãy xem từng giá trị của kiểu liệt kê TkbmMWScheduleCronMode và ý nghĩa của chúng:
| Loại | Độ dài | Ý nghĩa |
|---|---|---|
| mwscmStandard | 5 | phút giờ ngày tháng tuần (tuần) |
| mwscmExtendedYear | 5 hoặc 6 | phút giờ ngày tháng tuần (tuần) năm |
| mwscmExtendedSecond | 5 hoặc 6 | phút giờ ngày tháng tuần (tuần) năm |
| mwscmExtendedSecondAndYear | 5 hoặc 7 | giây phút giờ ngày tháng tuần (tuần) năm |
| mwscmExtendedMsecAndYear | 5 hoặc 8 | miligiây giây phút giờ ngày tháng tuần (tuần) năm |
Bây giờ chúng ta có thể dễ dàng sử dụng kbmMW Scheduler để lập lịch các tác vụ định kỳ!
Thêm vào, Scheduler còn có hai thuộc tính:
property ChuoiCron: string read GetChuoiCron write SetChuoiCron; // Chuỗi cron, khi thiết lập sẽ tự động gọi phương thức Cron
property CheDoCron: TkbmMWScheduleCronMode read GetCheDoCron write SetCheDoCron; // Chế độ cron, không gọi phương thức Cron
Thay thế cho việc gọi trực tiếp phương thức Cron. Thực tế thì không có gì phức tạp cả, cảm giác kbmMW đã làm vấn đề trở nên phức tạp hơn!