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

เงื่อนไขเริ่มต้น 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ไวยากรณ์ของนิพจน์ Quartz อธิบายไว้ในเอกสารประกอบสำหรับ 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 *"))
}