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

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

  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 शेड्यूलर के सिंटैक्स का इस्तेमाल करते हैं. क्वार्ट्ज़ cron एक्सप्रेशन के सिंटैक्स के बारे में, क्वार्ट्ज़ के दस्तावेज़ CronExpression में बताया गया है.

उदाहरण

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

इस्तेमाल का उदाहरण दूसरा मिनट घंटा महीने का दिन महीना हफ़्ते का दिन साल
हर 24 घंटे में, आधी रात को चलाएं 0 0 0 ? * * *
हर मंगलवार को सुबह 6:00 बजे चलाएं 0 30 19 ? * 3 *
फ़रवरी के महीने में, हर घंटे के 15 मिनट बाद चलाएं 0 15 * ? 2 * *
हर घंटे में एक बार चलाएं 0 0 * ? * * *
जनवरी से मार्च तक, हर 24 घंटे में आधी रात को, महीने की पहली तारीख के सबसे नज़दीक वाले कामकाजी दिन पर चलाएं 0 0 0 ? 1-3 1W *
फ़रवरी के दूसरे गुरुवार को, हर घंटे में एक बार, सवा बजे 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 *"))
}