পুনরাবৃত্ত নির্ধারিত ইভেন্ট স্টার্টার

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

  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 আপনাকে এক বা একাধিক সময় বা তারিখের শর্তের উপর ভিত্তি করে একটি অটোমেশন নির্ধারণ করতে দেয়। এই স্টার্টারটি একটি পুনরাবৃত্তিমূলক অটোমেশনের সময়সূচী নির্দিষ্ট করার জন্য ইউনিক্স cron ইউটিলিটির ব্যবহৃত সিনট্যাক্সের অনুরূপ একটি সিনট্যাক্স ব্যবহার করে।

Time.RecurringSolarTimeScheduledEvent আপনাকে সূর্যোদয় বা সূর্যাস্তের সময়ের উপর ভিত্তি করে একটি অটোমেশন নির্ধারণ করার সুযোগ দেয়, যা ঐচ্ছিকভাবে একটি ক্যালেন্ডার-ভিত্তিক শর্তের সাথেও ব্যবহার করা যায়।

cron অভিব্যক্তি

আপনি হয়তো ইতিমধ্যেই cron সাথে পরিচিত, যা ইউনিক্স এবং লিনাক্স সিস্টেমে পুনরাবৃত্তিমূলক কাজগুলোর সময়সূচী নির্ধারণ করতে ব্যবহৃত একটি কমান্ড।

পুনরাবৃত্তিমূলক নির্ধারিত ইভেন্ট স্টার্টারগুলো এমন একটি শিডিউলিং এক্সপ্রেশন সিনট্যাক্স ব্যবহার করে যা cron দ্বারা ব্যবহৃত সিনট্যাক্সের অনুরূপ, এবং এই কারণে, এই স্টার্টারগুলোর সাথে ব্যবহৃত শিডিউলিং এক্সপ্রেশনগুলোকে cron এক্সপ্রেশন (cron expressions) বলা হয়।

cron বিভিন্ন 'ধরন' রয়েছে এবং এই ইমপ্লিমেন্টেশনগুলো জুড়ে সিনট্যাক্সেরও বেশ কিছু ভিন্নতা দেখা যায়। পুনরাবৃত্তিমূলক নির্ধারিত ইভেন্ট স্টার্টার cron এক্সপ্রেশনগুলো কোয়ার্টজ শিডিউলারের মতোই একই সিনট্যাক্স ব্যবহার করে। কোয়ার্টজ cron এক্সপ্রেশনের সিনট্যাক্স কোয়ার্টজের 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 expression-এর একটি উপসেট, যা শুধুমাত্র Day-of-Month, Month, Day-of-Week, এবং Year ফিল্ডগুলো নিয়ে গঠিত। সৌর সময় অটোমেশনটি শুরু হওয়ার সঠিক সময় নির্ধারণ করে, তাই Second, Minute, এবং Hour ফিল্ডগুলো বাদ দেওয়া হয়।

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

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