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

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

  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 के दस्तावेज़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 *
फ़रवरी के आखिरी दिन, हर घंटे के पंद्रह मिनट बाद 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 *"))
}