เงื่อนไขเริ่มต้น 3 แบบช่วยให้คุณกำหนดเวลาการทำงานอัตโนมัติล่วงหน้าได้ ดังนี้
ตัวแรก 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)) ) ) }
เงื่อนไขเริ่มต้น 2 รายการที่ 2 คือเงื่อนไขเริ่มต้นของกิจกรรมที่กำหนดเวลาที่เกิดซ้ำ ซึ่งช่วยให้คุณ สร้างการทำงานอัตโนมัติที่ทำงานเป็นระยะๆ ตามเกณฑ์ที่เฉพาะเจาะจงมากขึ้น ซึ่งอาจรวมถึงเงื่อนไขตามเวลาและตามปฏิทิน
Time.RecurringClockTimeScheduledEvent
ช่วยให้คุณกำหนดเวลาการทำงานอัตโนมัติตามเงื่อนไขเวลาหรือวันที่อย่างน้อย 1 รายการ
เงื่อนไขเริ่มต้นนี้ใช้ไวยากรณ์ที่คล้ายกับที่ยูทิลิตี cron
ของ Unix ใช้
เพื่อระบุกำหนดเวลาสำหรับการทำงานอัตโนมัติที่เกิดซ้ำ
Time.RecurringSolarTimeScheduledEvent
ช่วยให้คุณกำหนดเวลาการทำงานอัตโนมัติตามเวลาพระอาทิตย์ขึ้นหรือตก
โดยอาจใช้ร่วมกับเงื่อนไขตามปฏิทินก็ได้
cron
นิพจน์
คุณอาจคุ้นเคยกับ cron
อยู่แล้ว ซึ่งเป็นคำสั่งที่ใช้ในระบบ Unix และ Linux
เพื่อกำหนดเวลางานที่เกิดซ้ำ
ผู้เริ่มกิจกรรมที่กำหนดเวลาที่เกิดซ้ำจะใช้ไวยากรณ์นิพจน์การกำหนดเวลาที่
คล้ายกับที่ใช้โดย cron
ด้วยเหตุนี้ นิพจน์การกำหนดเวลา
ที่ใช้กับผู้เริ่มเหล่านี้จึงเรียกว่านิพจน์ cron
cron
มีหลาย "รสชาติ" และไวยากรณ์ของ
การใช้งานเหล่านี้ก็มีหลายรูปแบบ cron
นิพจน์ของตัวเริ่มต้นกิจกรรมที่กำหนดเวลาที่เกิดซ้ำจะใช้ไวยากรณ์เดียวกันกับตัวกำหนดเวลางานของ Quartz
ไวยากรณ์ของนิพจน์ Quartz cron
อธิบายไว้ในเอกสารประกอบสำหรับ Quartz
CronExpression
ตัวอย่าง
ลองดูตัวอย่างต่อไปนี้
กรณีการใช้งาน | วินาที | นาที | ชั่วโมง | วันของเดือน | เดือน | วันของสัปดาห์ | ปี |
---|---|---|---|---|---|---|---|
เรียกใช้ทุก 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 ของเดือนกุมภาพันธ์ ทุกชั่วโมงที่เวลา 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 รายการ ได้แก่
- A
SolarTimeStruct
cronExpression
: ชุดย่อยของcron
นิพจน์ที่ประกอบด้วยฟิลด์วันของเดือน เดือน วันของสัปดาห์ และปีเท่านั้น เวลาสุริยะจะกำหนด เวลาที่แน่นอนที่การทำงานอัตโนมัติจะเริ่ม ดังนั้นระบบจึงละเว้นฟิลด์วินาที นาที และ ชั่วโมง
ตัวอย่างต่อไปนี้เป็นเงื่อนไขเริ่มต้นที่ทำให้การทำงานอัตโนมัติเริ่มขึ้น 1 ชั่วโมง หลังพระอาทิตย์ขึ้น ทุกวันพุธในเดือนเมษายน
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }