سه شروع مختلف به شما امکان می دهند یک اتوماسیون را از قبل برنامه ریزی کنید:
اولین مورد، Time.ScheduledTimeEvent
، به شما امکان می دهد یک اتوماسیون را برای شروع در یک لحظه دقیق در آینده یا به صورت تکراری، بر اساس زمان ساعت یا یک رویداد خورشیدی (یعنی طلوع یا غروب خورشید) برنامه ریزی کنید.
به عنوان مثال، این استارت اتوماسیون را هر روز از ساعت 10:00 شب شروع می کند:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
همچنین، میتوانید رویداد زمان خورشیدی را به جای ساعت ساعت مشخص کنید. پارامتر این نوع استارت یک SolarTimeStruct
است که شامل موارد زیر است:
-
type
، که یاSolarTimeType.Sunrise
یاSolarTimeType.Sunset
است. -
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
دو پارامتر را می گیرد:
- یک
SolarTimeStruct
. -
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 *")) }