बार-बार होने वाले शेड्यूल किए गए इवेंट के स्टार्टर

तीन अलग-अलग स्टार्टर की मदद से, किसी ऑटोमेशन को पहले से शेड्यूल किया जा सकता है:

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

पहले स्टार्टर Time.ScheduledTimeEvent, की मदद से, किसी ऑटोमेशन को शेड्यूल किया जा सकता है. इसे भविष्य में किसी सटीक समय पर या बार-बार होने वाले आधार पर शुरू किया जा सकता है. यह घड़ी के समय या सौर इवेंट (यानी, सूरज उगने या डूबने) पर आधारित हो सकता है.

उदाहरण के लिए, यह स्टार्टर हर दिन रात 10: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))
    )
  )
}

दूसरे दो स्टार्टर, बार-बार शेड्यूल किए गए इवेंट के स्टार्टर हैं. इनकी मदद से, ऐसे ऑटोमेशन बनाए जा सकते हैं जो समय-आधारित और कैलेंडर-आधारित, दोनों तरह की शर्तों के हिसाब से समय-समय पर चलते हैं.

Time.RecurringClockTimeScheduledEvent की मदद से, एक या एक से ज़्यादा समय या तारीख की शर्तों के आधार पर, किसी ऑटोमेशन को शेड्यूल किया जा सकता है. यह स्टार्टर, Unix के cron यूटिलिटी के इस्तेमाल किए जाने वाले सिंटैक्स जैसा ही सिंटैक्स इस्तेमाल करता है. इसकी मदद से, बार-बार होने वाले ऑटोमेशन के लिए शेड्यूल तय किया जाता है.

Time.RecurringSolarTimeScheduledEvent की मदद से, सूरज उगने या डूबने के समय के आधार पर, किसी ऑटोमेशन को शेड्यूल किया जा सकता है. इसके अलावा, कैलेंडर-आधारित शर्त के साथ भी इसे शेड्यूल किया जा सकता है.

cron एक्सप्रेशन

हो सकता है कि आपको cron के बारे में पहले से पता हो. यह Unix और Linux सिस्टम पर, बार-बार होने वाले काम शेड्यूल करने के लिए इस्तेमाल किया जाने वाला एक कमांड है.

बार-बार शेड्यूल किए गए इवेंट के स्टार्टर, शेड्यूल करने के लिए ऐसे एक्सप्रेशन सिंटैक्स का इस्तेमाल करते हैं जो cron के इस्तेमाल किए जाने वाले सिंटैक्स जैसा होता है. इसलिए, इन स्टार्टर के साथ इस्तेमाल किए जाने वाले शेड्यूल करने के एक्सप्रेशन को cron एक्सप्रेशन कहा जाता है.

cron के कई अलग-अलग 'फ़्लेवर' होते हैं. साथ ही, इन सभी में सिंटैक्स के कई अलग-अलग वर्शन होते हैं. बार-बार शेड्यूल किए गए इवेंट के स्टार्टर के cron एक्सप्रेशन, Quartz शेड्यूलर के जैसे ही सिंटैक्स का इस्तेमाल करते हैं. Quartz cron एक्सप्रेशन सिंटैक्स के बारे में Quartz's CronExpression के दस्तावेज़ में बताया गया है.

उदाहरण

यहां कुछ उदाहरण दिए गए हैं.

इस्तेमाल का उदाहरण सेकंड मिनट घंटा महीने का दिन महीना हफ़्ते का दिन साल
हर 24 घंटे में, आधी रात को चलाएं 0 0 0 ? * * *
हर मंगलवार को सुबह 6:00 बजे चलाएं 0 30 19 ? * 3 *
फ़रवरी के महीने में, हर घंटे 15 मिनट पर चलाएं 0 15 * ? 2 * *
हर घंटे में एक बार चलाएं 0 0 * ? * * *
जनवरी से मार्च तक, हर 24 घंटे में आधी रात को चलाएं. यह हर महीने की पहली तारीख के सबसे पास वाले हफ़्ते के दिन चलेगा 0 0 0 ? 1-3 1W *
फ़रवरी के दूसरे गुरुवार को, हर घंटे 15 मिनट पर चलाएं 0 15 * ? 2 5#2 *
फ़रवरी के महीने के आखिरी दिन, हर घंटे 15 मिनट पर चलाएं 0 15 * L 2 ? *
हर मंगलवार और गुरुवार को सुबह 6:00 बजे चलाएं 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

RecurringClockTimeScheduledEvent स्टार्टर में, cron एक्सप्रेशन स्ट्रिंग को Time.RecurringClockTimeScheduledEvent.cronExpression फ़ील्ड में असाइन किया जाता है.

यहां RecurringClockTimeScheduledEvent स्टार्टर का एक उदाहरण दिया गया है. यह अप्रैल में हर बुधवार को रात 8:00 बजे ऑटोमेशन शुरू करता है:

starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) {
  parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *"))
}

RecurringSolarTimeScheduleEvent

RecurringSolarTimeScheduleEvent स्टार्टर के दो पैरामीटर होते हैं:

  1. SolarTimeStruct.
  2. cronExpression: यह cron एक्सप्रेशन का सबसेट है. इसमें सिर्फ़ महीने का दिन, महीना, हफ़्ते का दिन, और साल के फ़ील्ड शामिल होते हैं. सौर समय से यह तय होता है कि ऑटोमेशन किस सटीक समय पर शुरू होगा. इसलिए, इसमें सेकंड, मिनट, और घंटे के फ़ील्ड शामिल नहीं होते.

यहां एक स्टार्टर का उदाहरण दिया गया है. यह अप्रैल में हर बुधवार को सूरज उगने के एक घंटे बाद ऑटोमेशन शुरू करता है:

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