شروع رویدادهای برنامه ریزی شده تکراری

سه شروع مختلف به شما امکان می دهند یک اتوماسیون را از قبل برنامه ریزی کنید:

  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 utility استفاده می‌شود تا زمان‌بندی یک اتوماسیون تکراری را مشخص کند.

Time.RecurringSolarTimeScheduledEvent به شما امکان می دهد یک اتوماسیون را بر اساس زمان طلوع یا غروب خورشید، به صورت اختیاری در ترکیب با شرایط مبتنی بر تقویم، برنامه ریزی کنید.

عبارات cron

شاید قبلاً با cron آشنا باشید، دستوری که در سیستم‌های یونیکس و لینوکس برای برنامه‌ریزی کارهای تکراری استفاده می‌شود.

شروع‌کننده‌های رویداد زمان‌بندی‌شده تکراری از نحو عبارت زمان‌بندی استفاده می‌کنند که شبیه به مورد استفاده‌شده توسط cron است، و به همین دلیل، عبارات زمان‌بندی استفاده‌شده با این استارت‌ها به عنوان عبارت‌های cron شناخته می‌شوند.

چندین "طعم" مختلف از cron ، و چندین نوع نحو در این پیاده سازی ها وجود دارد. عبارات cron شروع رویداد زمان‌بندی‌شده تکراری از نحوی مشابه زمان‌بندی کوارتز استفاده می‌کنند. نحو بیان cron کوارتز در مستندات مربوط به CronExpression کوارتز توضیح داده شده است.

نمونه ها

در اینجا چند مثال برای توضیح وجود دارد.

مورد استفاده دوم دقیقه ساعت روز از ماه ماه روز از هفته سال
هر 24 ساعت یکبار، نیمه شب بدوید 0 0 0 ? * * *
هر سه شنبه ساعت 6 صبح اجرا کنید 0 30 19 ? * 3 *
در ماه فوریه هر ساعت یک ربع و یک ساعت بدوید 0 15 * ? 2 * *
ساعتی یکبار بدوید 0 0 * ? * * *
هر 24 ساعت، نیمه شب، از ژانویه تا مارس، در نزدیکترین روز هفته به اول ماه اجرا شود. 0 0 0 ? 1-3 1W *
پنجشنبه دوم فوریه، ساعتی یک بار، ساعت یک ربع گذشته 0 15 * ? 2 5#2 *
در آخرین روز ماه فوریه هر ساعت یک ربع و یک ساعت بدوید 0 15 * L 2 ? *
هر سه شنبه و پنجشنبه ساعت 6 صبح اجرا کنید 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

در یک شروع کننده RecurringClockTimeScheduledEvent ، رشته عبارت cron به قسمت Time.RecurringClockTimeScheduledEvent.cronExpression اختصاص داده می شود.

در زیر نمونه‌ای از راه‌اندازی RecurringClockTimeScheduledEvent است که اتوماسیون را در ساعت 20:00 هر چهارشنبه در آوریل آغاز می‌کند:

starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) {
  parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *"))
}

RecurringSolarTimeScheduleEvent

شروع کننده RecurringSolarTimeScheduleEvent دو پارامتر را می گیرد:

  1. یک SolarTimeStruct .
  2. cronExpression : زیر مجموعه ای از عبارت cron که فقط از فیلدهای روز ماه، ماه، روز هفته و سال تشکیل شده است. زمان خورشیدی زمان دقیق شروع اتوماسیون را تعیین می کند، بنابراین فیلدهای 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 *"))
}