יש שלושה גורמים שונים שמאפשרים לתזמן פעולה אוטומטית מראש:
השדה הראשון, Time.ScheduledTimeEvent
, מאפשר לתזמן פעולה אוטומטית כך שתתחיל בשנייה ספציפית בעתיד או באופן קבוע, על סמך השעה בשעון או אירוע אסטרונומי (כלומר זריחה או שקיעה).
לדוגמה, הגורם הזה מפעיל את האוטומציה בכל יום בשעה 22:00:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
לחלופין, אפשר לציין אירוע לפי שעון השמש במקום לפי שעון. הפרמטר של סוג ההתחלה הזה הוא SolarTimeStruct
, שמורכב מ:
type
, שהואSolarTimeType.Sunrise
אוSolarTimeType.Sunset
.offset
, שמאפשרת לשנות את שעת ההתחלה ביחס לאירוע הסולארי בכל פרק זמן. ערכים חיוביים יוצרים עיכוב אחרי האירוע הסולארי, וערכים שליליים גורמים להפעלה של המתנע לפני האירוע הסולארי.
הדוגמה הבאה היא התחלה שמפעילה את האוטומציה 15 דקות לפני הזריחה בכל יום:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
שני הגורמים האחרים הם גורמים מפעילים של אירועים מתוזמנים חוזרים, שמאפשרים ליצור תהליכים אוטומטיים שפועלים באופן תקופתי לפי קריטריונים ספציפיים יותר, שיכולים לכלול תנאים מבוססי-זמן ותנאים מבוססי-יומן.
Time.RecurringClockTimeScheduledEvent
מאפשר לכם לתזמן פעולה אוטומטית על סמך תנאי זמן או תאריך אחד או יותר.
ב-starter הזה נעשה שימוש בתחביר שדומה לזה של השירות cron
ב-Unix, כדי לציין את לוח הזמנים של האוטומציה הקבועה.
Time.RecurringSolarTimeScheduledEvent
מאפשר לכם לתזמן פעולה אוטומטית על סמך שעת הזריחה או השקיעה, אפשר גם בשילוב עם תנאי שמבוסס על יומן.
ביטויים cron
יכול להיות שכבר שמעתם על cron
, פקודה שמשמשת במערכות Unix ו-Linux לתזמון משימות חוזרות.
בהתחלות של אירועים מתוזמנים חוזרים נעשה שימוש בתחביר של ביטוי תזמון שדומה לזה של cron
. לכן, ביטויי התזמון שמשמשים את ההתחלות האלה נקראים ביטויי cron
.
יש כמה 'סוגים' שונים של cron
, וכמה וריאציות של תחביר בכל אחת מההטמעות האלה. בביטויים cron
של אירועים מתוזמנים חוזרים נעשה שימוש באותו תחביר כמו במתזמן Quartz.
התחביר של ביטוי cron
ב-Quartz מוסבר בתיעוד של CronExpression
ב-Quartz.
דוגמאות
ריכזנו כאן כמה דוגמאות להמחשה.
תרחיש לדוגמה | שנייה | דקה | שעה | יום בחודש | חודש | יום בשבוע | שנה |
---|---|---|---|---|---|---|---|
הפעלה כל 24 שעות, בחצות | 0 |
0 |
0 |
? |
* |
* |
* |
ריצה בשעה 6:00 בבוקר בכל יום שלישי | 0 |
30 |
19 |
? |
* |
3 |
* |
הפעלה ברבע אחרי השעה, בכל שעה, במהלך חודש פברואר | 0 |
15 |
* |
? |
2 |
* |
* |
הפעלה פעם בשעה | 0 |
0 |
* |
? |
* |
* |
* |
הפעלה כל 24 שעות, בחצות, מינואר עד מרץ, ביום חול הקרוב ביותר ל-1 בחודש | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
ביום חמישי השני בפברואר, פעם בשעה, רבע אחרי | 0 |
15 |
* |
? |
2 |
5#2 |
* |
הפעלה ברבע אחרי השעה, בכל שעה, ביום האחרון בחודש פברואר | 0 |
15 |
* |
L |
2 |
? |
* |
הפעלה בשעה 6:00 בבוקר בכל יום שלישי וחמישי | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
ב-starter של RecurringClockTimeScheduledEvent
, מחרוזת הביטוי cron
מוקצית לשדה Time.RecurringClockTimeScheduledEvent.cronExpression
.
דוגמה ל-starter של RecurringClockTimeScheduledEvent
שמפעיל את האוטומציה בשעה 20:00, בכל יום רביעי באפריל:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
ה-starter של RecurringSolarTimeScheduleEvent
כולל שני פרמטרים:
SolarTimeStruct
.cronExpression
: קבוצת משנה של ביטויcron
שמכילה רק את השדות Day-of-Month, Month, Day-of-Week ו-Year. השעה לפי השמש קובעת את השעה המדויקת שבה הפעולה האוטומטית תתחיל, ולכן השדות 'שנייה', 'דקה' ו'שעה' לא מופיעים.
הדוגמה הבאה היא התחלה שמפעילה תהליך אוטומציה שעולה לאויר שעה אחת אחרי הזריחה, בכל יום רביעי באפריל:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }