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

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

  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-এর ডকুমেন্টেশনে CronExpression Quartz cron এক্সপ্রেশন সিনট্যাক্স ব্যাখ্যা করা আছে।

উদাহরণ

বোঝানোর জন্য এখানে কয়েকটি উদাহরণ দেওয়া হল।

ব্যবহারিক ক্ষেত্র সেকেন্ড মিনিট ঘণ্টা মাসের দিন মাসের সপ্তাহের দিন বছর
প্রতি ২৪ ঘণ্টা অন্তর, মধ্যরাতে রান করে 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 *"))
}