เงื่อนไขเริ่มต้น 3 แบบที่ช่วยให้คุณกำหนดเวลาการทำงานอัตโนมัติล่วงหน้าได้มีดังนี้
แบบแรกคือ Time.ScheduledTimeEvent ซึ่งช่วยให้คุณกำหนดเวลาการทำงานอัตโนมัติให้เริ่มต้น ณ เวลาที่แน่นอนในอนาคตหรือแบบเกิดซ้ำ โดยอิงตามเวลาบนนาฬิกาหรือเหตุการณ์ที่อิงตามดวงอาทิตย์ (นั่นคือ พระอาทิตย์ขึ้นหรือพระอาทิตย์ตก)
ตัวอย่างเช่น เงื่อนไขเริ่มต้นนี้จะเริ่มการทำงานอัตโนมัติเวลา 22:00 น. ทุกวัน
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
หรือจะระบุเหตุการณ์ตามเวลาสุริยคติแทนเวลาตามนาฬิกาก็ได้ พารามิเตอร์สำหรับเงื่อนไขเริ่มต้นประเภทนี้คือ SolarTimeStruct ซึ่งประกอบด้วยข้อมูลต่อไปนี้
typeซึ่งอาจเป็นSolarTimeType.SunriseหรือSolarTimeType.Sunsetoffsetซึ่งช่วยให้คุณเปลี่ยนเวลาเริ่มต้นที่สัมพันธ์กับเหตุการณ์ดวงอาทิตย์ได้ตามระยะเวลาที่ต้องการ ค่าบวกจะทำให้เกิดความล่าช้าหลังจากเหตุการณ์ที่เกี่ยวข้องกับดวงอาทิตย์ และค่าลบจะทำให้เงื่อนไขเริ่มต้นทริกเกอร์ก่อนเหตุการณ์ที่เกี่ยวข้องกับดวงอาทิตย์
ตัวอย่างต่อไปนี้คือเงื่อนไขเริ่มต้นที่จะเริ่มการทำงานอัตโนมัติ 15 นาทีก่อนพระอาทิตย์ขึ้นทุกวัน
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
เงื่อนไขเริ่มต้น 2 รายการถัดมาคือเงื่อนไขเริ่มต้นของเหตุการณ์ที่กำหนดเวลาไว้แบบเกิดซ้ำ ซึ่งช่วยให้คุณสร้างการทำงานอัตโนมัติที่ทำงานเป็นระยะๆ ตามเกณฑ์ที่เจาะจงมากขึ้น ซึ่งอาจรวมถึงเงื่อนไขตามเวลาและตามปฏิทิน
Time.RecurringClockTimeScheduledEvent
ช่วยให้คุณตั้งเวลาการทำงานอัตโนมัติตามเงื่อนไขเวลาหรือวันที่อย่างน้อย 1 รายการ
เงื่อนไขเริ่มต้นนี้ใช้ไวยากรณ์ที่คล้ายกับไวยากรณ์ที่ยูทิลิตี cron ของ Unix ใช้เพื่อระบุกำหนดเวลาสำหรับการทำงานอัตโนมัติที่เกิดซ้ำ
Time.RecurringSolarTimeScheduledEvent
ช่วยให้คุณกำหนดเวลาการทำงานอัตโนมัติตามเวลาพระอาทิตย์ขึ้นหรือพระอาทิตย์ตก โดยอาจใช้ร่วมกับเงื่อนไขตามปฏิทิน
cron นิพจน์
คุณอาจคุ้นเคยกับ cron ซึ่งเป็นคำสั่งที่ใช้ในระบบ Unix และ Linux เพื่อกำหนดเวลางานที่เกิดซ้ำ
เงื่อนไขเริ่มต้นของกิจกรรมที่กำหนดเวลาไว้แบบเกิดซ้ำจะใช้ไวยากรณ์นิพจน์การกำหนดเวลาที่คล้ายกับที่ cron ใช้ ด้วยเหตุนี้ นิพจน์การกำหนดเวลาที่ใช้กับเงื่อนไขเริ่มต้นเหล่านี้จึงเรียกว่านิพจน์ cron
cron มี "รูปแบบ" ที่แตกต่างกันหลายรูปแบบ และไวยากรณ์ก็มีหลายรูปแบบในการใช้งานเหล่านี้ นิพจน์ cron ของเงื่อนไขเริ่มต้นเหตุการณ์ที่กำหนดเวลาไว้แบบเกิดซ้ำจะใช้ไวยากรณ์เดียวกับเครื่องจัดตารางเวลา Quartz
ไวยากรณ์นิพจน์ cron ของ Quartz มีคำอธิบายอยู่ในเอกสารประกอบสำหรับ CronExpression ของ Quartz
ตัวอย่าง
ลองดูตัวอย่างต่อไปนี้
| กรณีการใช้งาน | วินาที | นาที | ชั่วโมง | วันของเดือน | เดือน | วันในสัปดาห์ | ปี |
|---|---|---|---|---|---|---|---|
| เรียกใช้ทุก 24 ชั่วโมงตอนเที่ยงคืน | 0 |
0 |
0 |
? |
* |
* |
* |
| เรียกใช้เวลา 06:00 น. ทุกวันอังคาร | 0 |
30 |
19 |
? |
* |
3 |
* |
| ทำงานทุกๆ 15 นาทีของชั่วโมง ในช่วงเดือนกุมภาพันธ์ | 0 |
15 |
* |
? |
2 |
* |
* |
| เรียกใช้ชั่วโมงละ 1 ครั้ง | 0 |
0 |
* |
? |
* |
* |
* |
| เรียกใช้ทุก 24 ชั่วโมงตอนเที่ยงคืน ตั้งแต่เดือนมกราคมถึงมีนาคม ในวันธรรมดาที่ใกล้กับวันที่ 1 ของเดือนมากที่สุด | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
| ทุกวันพฤหัสบดีที่ 2 ของเดือนกุมภาพันธ์ ทุกๆ 1 ชั่วโมง โดยเริ่มที่ 15 นาที | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| เรียกใช้เมื่อผ่านไป 15 นาทีของทุกชั่วโมงในวันสุดท้ายของเดือนกุมภาพันธ์ | 0 |
15 |
* |
L |
2 |
? |
* |
| เรียกใช้เวลา 06:00 น. ทุกวันอังคารและวันพฤหัสบดี | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
ในเงื่อนไขเริ่มต้น RecurringClockTimeScheduledEvent ระบบจะกำหนดสตริงนิพจน์ cron ให้กับช่อง Time.RecurringClockTimeScheduledEvent.cronExpression
ต่อไปนี้คือตัวอย่างเงื่อนไขเริ่มต้น RecurringClockTimeScheduledEvent ที่จะเริ่มการทำงานอัตโนมัติเวลา 20:00 น. ทุกวันพุธในเดือนเมษายน
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
RecurringSolarTimeScheduleEvent Starter จะใช้พารามิเตอร์ 2 รายการ ได้แก่
SolarTimeStructcronExpression: ชุดย่อยของนิพจน์cronที่ประกอบด้วยช่องวันของเดือน เดือน วันของสัปดาห์ และปีเท่านั้น เวลาสุริยคติจะกำหนดเวลาที่แน่นอนที่การทำงานอัตโนมัติจะเริ่ม ดังนั้นระบบจึงละเว้นช่องวินาที นาที และชั่วโมง
ตัวอย่างต่อไปนี้คือเงื่อนไขเริ่มต้นที่ทำให้การทำงานอัตโนมัติเริ่มทำงาน 1 ชั่วโมงหลังจากพระอาทิตย์ขึ้น ทุกวันพุธในเดือนเมษายน
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }