יש שלושה סימנים שונים לתחילת פעולות אוטומטיות שמאפשרים לתזמן מראש פעולה אוטומטית:
הראשון, Time.ScheduledTimeEvent, מאפשר לתזמן אוטומציה שתתחיל ברגע מדויק יחיד בעתיד, או על בסיס חוזר, על סמך שעת שעון או אירוע סולארי (כלומר, זריחה או שקיעה).
לדוגמה, הסימן לתחילת הפעולה הזה מתחיל את הפעולה האוטומטית כל יום בשעה 22:00:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
אפשר גם לציין אירוע לפי זמן השמש במקום לפי השעה. הפרמטר לסוג הזה של starter הוא 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
מאפשרת לכם לתזמן אוטומציה על סמך תנאי זמן או תאריך אחד או יותר.
התבנית הזו משתמשת בתחביר שדומה לזה שמשמש את כלי השירות של Unix cron
כדי לציין את לוח הזמנים של אוטומציה חוזרת.
Time.RecurringSolarTimeScheduledEvent
מאפשרת לתזמן אוטומציה על סמך שעת הזריחה או השקיעה,
אפשר גם בשילוב עם תנאי שמבוסס על יומן.
cron ביטויים
יכול להיות שאתם כבר מכירים את cron, פקודה שמשמשת במערכות Unix ו-Linux לתזמון משימות חוזרות.
הפעלות של אירועים מתוזמנים חוזרים משתמשות בתחביר של ביטוי תזמון שדומה לזה שמשמש את cron, ולכן ביטויי התזמון שמשמשים את ההפעלות האלה נקראים ביטויי cron.
יש כמה 'טעמים' שונים של cron, וכמה וריאציות של תחביר ביישומים האלה. ביטויים של סימן לתחילת פעולה של אירוע מתוזמן חוזר cron
משתמשים באותו תחביר כמו Quartz
scheduler.
התחביר של ביטוי Quartz cron מוסבר בתיעוד של Quartz בנושא CronExpression.
דוגמאות
הנה כמה דוגמאות להמחשה.
| תרחיש שימוש | שנייה | דקה | שעה | יום בחודש | חודש | יום בשבוע | שנה |
|---|---|---|---|---|---|---|---|
| הפעלה כל 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
ב-RecurringClockTimeScheduledEvent starter, מחרוזת הביטוי cron מוקצית לשדה Time.RecurringClockTimeScheduledEvent.cronExpression.
בדוגמה הבאה מוצג RecurringClockTimeScheduledEvent starter שמפעיל את האוטומציה בשעה 20:00, בכל יום רביעי בחודש אפריל:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
הבלוק 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 *")) }