تتيح لك ثلاثة إجراءات تفعيل مختلفة جدولة عملية تشغيل آلي مسبقًا:
يتيح لك إجراء التفعيل الأول، 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
يتيح لك جدولة عملية تشغيل آلي استنادًا إلى شرط واحد أو أكثر من شروط الوقت أو التاريخ.
يستخدم إجراء التفعيل هذا بنية مشابهة لتلك التي تستخدمها أداة cron في نظام Unix لتحديد الجدول الزمني لعملية تشغيل آلي متكرّرة.
Time.RecurringSolarTimeScheduledEvent
يتيح لك جدولة عملية تشغيل آلي استنادًا إلى وقت شروق الشمس أو غروبها،
أو بشكل اختياري بالاشتراك مع شرط يستند إلى التقويم.
تعبيرات cron
قد تكون على دراية بـ cron، وهو أمر يُستخدم على أنظمة Unix وLinux لجدولة المهام المتكرّرة.
تستخدم إجراءات تفعيل الأحداث المجدولة المتكرّرة بنية تعبير جدولة مشابهة لتلك التي تستخدمها cron، ولهذا السبب، يُشار إلى تعابير الجدولة المستخدَمة مع إجراءات التفعيل هذه باسم تعبيرات cron.
هناك عدة "أنواع" مختلفة من cron، وعدة اختلافات في البنية بين عمليات التنفيذ هذه. تستخدم تعابير cron في إجراءات تفعيل الأحداث المجدولة المتكرّرة البنية نفسها التي يستخدمها برنامج Quartz للجدولة.
يتم شرح بنية تعبير cron في Quartz في مستندات
في QuartzCronExpression.
أمثلة
في ما يلي بعض الأمثلة لتوضيح ذلك.
| حالة الاستخدام | ثانية | دقيقة | ساعة | يوم من الشهر | الشهر | يوم من الأسبوع | سنة |
|---|---|---|---|---|---|---|---|
| التشغيل كل 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، يتم تعيين سلسلة تعبير cron إلى الحقل
Time.RecurringClockTimeScheduledEvent.cronExpression.
في ما يلي مثال على إجراء تفعيل RecurringClockTimeScheduledEvent يبدأ عملية التشغيل الآلي في الساعة 8:00 مساءً كل أربعاء في شهر أبريل:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
يأخذ إجراء التفعيل RecurringSolarTimeScheduleEvent مَعلمتَين:
- A
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 *")) }