পুনরাবৃত্তিমূলক শিডিউল করা ইভেন্ট স্টার্টার

তিনটি আলাদা স্টার্টার আপনাকে আগে থেকে অটোমেশন শিডিউল করতে দেয়:

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

প্রথমটি, Time.ScheduledTimeEvent, আপনাকে ভবিষ্যতে কোনও একটি নির্দিষ্ট মুহূর্তে বা ঘড়ির সময় বা সৌর ইভেন্টের (যেমন, সূর্যোদয় বা সূর্যাস্ত) ভিত্তিতে রেকারিং ভিত্তিতে অটোমেশন শিডিউল করতে দেয়।

যেমন, এই স্টার্টার প্রতিদিন রাত ১০:০০টায় অটোমেশন শুরু করে:

starter<_>(structure, Time.ScheduledTimeEvent) {
  parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0)))
}

বিকল্প হিসেবে, আপনি ঘড়ির সময়ের পরিবর্তে সৌর সময় ইভেন্ট নির্দিষ্ট করতে পারেন। এই ধরনের স্টার্টারের জন্য প্যারামিটার হল একটি SolarTimeStruct যার মধ্যে এগুলি রয়েছে:

  1. type, যা হয় SolarTimeType.Sunrise অথবা SolarTimeType.Sunset।
  2. offset, যা আপনাকে সৌর ইভেন্টের সাথে সম্পর্কিত শুরুর সময়কে যেকোনও সময় পরিবর্তন করতে দেয়। পজিটিভ ভ্যালু সোলার ইভেন্টের পরে বিলম্বের সূচনা করে, এবং নেগেটিভ ভ্যালু সোলার ইভেন্টের আগে স্টার্টারকে ট্রিগার করে।

নিচের উদাহরণটি হল একটি স্টার্টার যা প্রতিদিন সূর্যোদয়ের ১৫ মিনিট আগে অটোমেশন শুরু করে:

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 ব্যাখ্যা করা হয়েছে।

উদাহরণ

এখানে কিছু উদাহরণ দেওয়া হল।

ব্যবহারিক ক্ষেত্র সেকেন্ড মিনিট ঘণ্টা মাসের দিন মাসের সপ্তাহের দিন বছর
প্রতি ২৪ ঘণ্টায়, মধ্যরাতে চালান 0 0 0 ? * * *
প্রতি মঙ্গলবার সকাল ৬:০০টায় চালান 0 30 19 ? * 3 *
ফেব্রুয়ারি মাসে প্রতি ঘণ্টায়, ঘণ্টার ১৫ মিনিট পরে চালান 0 15 * ? 2 * *
ঘণ্টায় একবার রান করুন 0 0 * ? * * *
প্রতি ২৪ ঘণ্টা অন্তর, মধ্যরাতে, জানুয়ারি থেকে মার্চ পর্যন্ত, মাসের ১ তারিখের সবচেয়ে কাছাকাছি কাজের দিনে চালান 0 0 0 ? 1-3 1W *
ফেব্রুয়ারির দ্বিতীয় বৃহস্পতিবার, প্রতি ঘণ্টায় একবার, পনেরো মিনিট পেরিয়ে গেলে 0 15 * ? 2 5#2 *
ফেব্রুয়ারি মাসের শেষ দিনে, প্রতি ঘণ্টায়, ঘণ্টার ১৫ মিনিট পরে রান করুন 0 15 * L 2 ? *
প্রতি মঙ্গলবার ও বৃহস্পতিবার সকাল ৬:০০টায় চালাও 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

RecurringClockTimeScheduledEvent স্টার্টারে, cron এক্সপ্রেশন স্ট্রিং Time.RecurringClockTimeScheduledEvent.cronExpression ফিল্ডে অ্যাসাইন করা হয়।

নিচে RecurringClockTimeScheduledEvent স্টার্টারের উদাহরণ দেওয়া হল যা এপ্রিল মাসের প্রতি বুধবার রাত ৮:০০টায় অটোমেশন চালু করে:

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 *"))
}