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

เงื่อนไขเริ่มต้น 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 ไวยากรณ์ของนิพจน์ 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 รายการ ได้แก่

  1. A SolarTimeStruct
  2. 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 *"))
}