เงื่อนไขเริ่มต้นกิจกรรมที่ตั้งเวลาไว้ซึ่งเกิดซ้ำ

เงื่อนไขเริ่มต้น 3 แบบช่วยให้คุณกำหนดเวลาการทำงานอัตโนมัติล่วงหน้าได้ ดังนี้

  1. Time.ScheduledTimeEvent
  2. Time.RecurringClockTimeScheduledEvent
  3. Time.RecurringSolarTimeScheduledEvent

ตัวแรก Time.ScheduledTimeEvent ช่วยให้คุณกำหนดเวลาการทำงานอัตโนมัติให้เริ่มต้นในเวลาที่แน่นอนในอนาคต หรือเป็นแบบเกิดซ้ำ โดยอิงตามเวลาของนาฬิกาหรือเหตุการณ์เกี่ยวกับดวงอาทิตย์ (เช่น พระอาทิตย์ขึ้นหรือตก)

ตัวอย่างเช่น เงื่อนไขเริ่มต้นนี้จะเริ่มการทำงานอัตโนมัติเวลา 22:00 น. ทุกวัน

starter<_>(structure, Time.ScheduledTimeEvent) {
  parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0)))
}

หรือจะระบุเหตุการณ์เวลาสุริยะแทนเวลาตามนาฬิกาก็ได้ พารามิเตอร์สำหรับเงื่อนไขเริ่มต้นประเภทนี้คือ SolarTimeStruct ซึ่งประกอบด้วย

  1. type ซึ่งอาจเป็น SolarTimeType.Sunrise หรือ SolarTimeType.Sunset
  2. 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 scheduler cronไวยากรณ์ของนิพจน์ QuartzCronExpression อธิบายไว้ในเอกสารประกอบสำหรับ 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 ของเดือนกุมภาพันธ์ ทุกชั่วโมงที่เวลา 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 รายการ ได้แก่

  1. A SolarTimeStruct
  2. cronExpression: ส่วนย่อยของนิพจน์ cron ซึ่งประกอบด้วยฟิลด์ Day-of-Month, Month, Day-of-Week และ Year เท่านั้น เวลาสุริยะจะกำหนด เวลาที่แน่นอนที่การทำงานอัตโนมัติจะเริ่ม ดังนั้นระบบจึงละเว้นช่องวินาที นาที และ ชั่วโมง

ตัวอย่างต่อไปนี้เป็นเงื่อนไขเริ่มต้นที่ทำให้การทำงานอัตโนมัติเริ่มขึ้น 1 ชั่วโมง หลังพระอาทิตย์ขึ้น ทุกวันพุธในเดือนเมษายน

starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) {
  parameter(
    Time.RecurringSolarTimeScheduledEvent.solarTime(
      TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1))
    )
  )
  parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *"))
}