سه آغازگر مختلف به شما امکان میدهند خودکارسازی را ازقبل زمانبندی کنید:
اولین، Time.ScheduledTimeEvent،
به شما امکان میدهد خودکارسازی را زمانبندی کنید تا در یک لحظه دقیق در آینده یا بهصورت تکرارشونده، براساس زمان ساعت یا رویداد خورشیدی (یعنی طلوع یا غروب آفتاب) شروع شود.
برای مثال، این آغازگر خودکارسازی را هر روز ساعت ۱۰ شب شروع میکند:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
بهعنوان جایگزین، میتوانید رویداد زمان خورشیدی را بهجای زمان ساعت مشخص کنید. پارامتر برای این نوع آغازگر
SolarTimeStruct
است که از این موارد تشکیل شده است:
type، که یاSolarTimeType.SunriseیاSolarTimeType.Sunsetاست.offset، که به شما امکان میدهد زمان شروع را نسبتبه رویداد خورشیدی به هر میزان زمانی تغییر دهید. مقادیر مثبت باعث ایجاد تأخیر پساز رویداد خورشیدی میشود، و مقادیر منفی باعث میشود راهانداز قبلاز رویداد خورشیدی راهاندازی شود.
مثال زیر آغازگری است که خودکارسازی را هر روز ۱۵ دقیقه قبلاز طلوع آفتاب شروع میکند:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
دو شروعکننده دوم شروعکنندههای رویداد زمانبندیشده تکرارشونده هستند که به شما امکان میدهند خودکارسازیهایی ایجاد کنید که بهصورت دورهای براساس معیارهای دقیقتر که میتواند شامل شرایط مبتنی بر زمان و تقویم باشد اجرا شوند.
Time.RecurringClockTimeScheduledEvent
به شما امکان میدهد خودکارسازی را براساس یک یا چند وضعیت زمان یا تاریخ زمانبندی کنید.
این شروعکننده از دستورزبانی استفاده میکند که شبیه به دستورزبانی است که ابزار cron
Unix برای مشخص کردن زمانبندی خودکارسازی تکرارشونده استفاده میکند.
Time.RecurringSolarTimeScheduledEvent
به شما امکان میدهد خودکارسازی را براساس زمان طلوع یا غروب آفتاب،
بهصورت اختیاری در ترکیب با شرط مبتنی بر تقویم، زمانبندی کنید.
cron عبارت
ممکن است ازقبل با cron آشنا باشید، فرمانی که در سیستمهای Unix و Linux برای زمانبندی کارهای تکرارشونده استفاده میشود.
آغازگرهای رویداد زمانبندیشده تکرارشونده از دستورگان عبارت زمانبندی استفاده میکنند که
شبیه به دستورگان مورد استفاده cron است، و به همین دلیل، عبارتهای زمانبندی
مورد استفاده با این آغازگرها بهعنوان عبارتهای cron نامیده میشوند.
چندین «طعم» مختلف از cron وجود دارد و چندین گونه از
نحو در این پیادهسازیها وجود دارد. عبارتهای شروعکننده رویداد زمانبندیشده تکرارشونده cron
از همان دستورگان زمانبند Quartz استفاده میکنند.
نحو عبارت Quartz cron در اسناد Quartz
CronExpression توضیح داده شده است.
مثالها
در اینجا چند مثال برای روشن شدن موضوع آورده شده است.
| کاربرد | ثانیه | دقیقه | ساعت | روز ماه | ماه | روز هفته | سال |
|---|---|---|---|---|---|---|---|
| هر ۲۴ ساعت، نیمهشب اجرا شود | 0 |
0 |
0 |
? |
* |
* |
* |
| هر سهشنبه ساعت ۶:۰۰ صبح اجرا شود | 0 |
30 |
19 |
? |
* |
3 |
* |
| هر ساعت، در ربع ساعت، درطول ماه فوریه اجرا شود | 0 |
15 |
* |
? |
2 |
* |
* |
| یکبار در ساعت اجرا شود | 0 |
0 |
* |
? |
* |
* |
* |
| هر ۲۴ ساعت، در نیمهشب، از ژانویه تا مارس، در روز کاری نزدیک به اول ماه اجرا شود | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
| در دومین پنجشنبه فوریه، هر ساعت یکبار، در ساعت ربع | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| در ربع ساعت بعداز سر ساعت، هر ساعت، در آخرین روز ماه فوریه اجرا شود | 0 |
15 |
* |
L |
2 |
? |
* |
| هر سهشنبه و پنجشنبه ساعت ۶:۰۰ صبح اجرا شود | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
در شروعکننده RecurringClockTimeScheduledEvent، رشته عبارت cron به فیلد
Time.RecurringClockTimeScheduledEvent.cronExpression
اختصاص داده میشود.
در زیر نمونهای از آغازگر RecurringClockTimeScheduledEvent ارائه شده است که
خودکارسازی را هر چهارشنبه در ماه آوریل ساعت ۸:۰۰ شب شروع میکند:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
آغازگر RecurringSolarTimeScheduleEvent دو پارامتر میگیرد:
SolarTimeStruct.-
cronExpression: زیرمجموعهای از عبارتcronکه فقط از فیلدهای «روز ماه»، «ماه»، «روز هفته»، و «سال» تشکیل شده است. زمان خورشیدی تعیین میکند خودکارسازی دقیقاً چه زمانی شروع شود، بنابراین فیلدهای «ثانیه»، «دقیقه»، و «ساعت» حذف میشوند.
مثال زیر آغازگری است که باعث میشود خودکارسازی هر چهارشنبه ماه آوریل یک ساعت پساز طلوع خورشید شروع شود:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }