יש שלושה סימנים שונים לתחילת פעולות אוטומטיות שמאפשרים לתזמן מראש פעולה אוטומטית:
הראשון, 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, שמאפשרת להזיז את שעת ההתחלה ביחס לאירוע הסולארי בכל פרק זמן. ערכים חיוביים יוצרים עיכוב אחרי אירוע סולארי, וערכים שליליים גורמים להפעלת ה-Starter לפני אירוע סולארי.
בדוגמה הבאה מוצג טריגר לפעולה שמתחיל את הפעולות האוטומטיות 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 טריגר לפעולה שמתחיל את הפעולות האוטומטיות בשעה 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 *")) }