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