تتيح لك ثلاث أدوات تفعيل مختلفة جدولة عملية التشغيل الآلي مسبقًا:
يتيح لك الخيار الأول، 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
لتحديد جدول زمني لعملية مبرمَجة متكرّرة.
تتيح لك Time.RecurringSolarTimeScheduledEvent جدولة عملية أتمتة استنادًا إلى وقت شروق الشمس أو غروبها،
ويمكنك أيضًا دمجها مع شرط مستند إلى التقويم.
cron تعبيرات
قد تكون على دراية بـ cron، وهو أمر يُستخدم على أنظمة Unix وLinux
لتحديد مواعيد المهام المتكررة.
تستخدم مشغّلات الأحداث المجدوَلة المتكرّرة بنية تعبير جدولة مشابهة لتلك التي تستخدمها cron، ولهذا السبب، يُشار إلى تعبيرات الجدولة المستخدَمة مع هذه المشغّلات باسم تعبيرات cron.
تتوفّر عدة "نكهات" مختلفة من cron، بالإضافة إلى عدة أشكال مختلفة من بنية الجملة في هذه التطبيقات. تستخدم عبارات بدء الحدث المجدوَل المتكرّر cron
بنية مماثلة لمجدوِل Quartz.
يتم شرح بنية تعبير Quartz cron في مستندات CronExpression الخاصة بـ Quartz.
أمثلة
في ما يلي بعض الأمثلة لتوضيح ذلك.
| حالة الاستخدام | ثانية واحدة | دقيقة | ساعة | Day-of-Month | الشهر | يوم من الأسبوع | سنة |
|---|---|---|---|---|---|---|---|
| يتم تشغيلها كل 24 ساعة، عند منتصف الليل | 0 |
0 |
0 |
? |
* |
* |
* |
| تشغيل الساعة 6:00 صباحًا كل يوم ثلاثاء | 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:00 صباحًا كل يوم ثلاثاء وخميس | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
في RecurringClockTimeScheduledEvent starter، يتم تعيين سلسلة التعبير cron إلى الحقل Time.RecurringClockTimeScheduledEvent.cronExpression.
في ما يلي مثال على RecurringClockTimeScheduledEvent إجراء تفعيل
يبدأ عملية التشغيل الآلي في الساعة 8:00 مساءً، كل أربعاء من شهر أبريل:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
تتطلّب أداة بدء التشغيل RecurringSolarTimeScheduleEvent مَعلمتَين:
SolarTimeStruct-
cronExpression: مجموعة فرعية من تعبيرcronتتألف من حقول يوم الشهر والشهر ويوم الأسبوع والسنة فقط. يحدّد التوقيت الشمسي الوقت الدقيق الذي سيبدأ فيه التشغيل الآلي، وبالتالي يتم حذف حقول الثانية والدقيقة والساعة.
المثال التالي هو إجراء تفعيل يؤدي إلى بدء التشغيل الآلي بعد ساعة واحدة من شروق الشمس، كل أربعاء في شهر أبريل:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }