Komplexe Scheduling Probleme

Wir lieben Herausforderungen und laden Sie dazu ein, uns zu testen. Unsere Timescheduling-Funktionaliät ist durch die Möglichkeit der Und / Oder-Verknüpfung extrem mächtig, deswegen bitten wir unsere Kunden und Partner ab und zu, uns zu challengen.

Johns Challenge:

“Ich möchte einen Job, der üblicherweise am 5. jeden Monats läuft, nur dann laufen lassen, wenn das ein Arbeitstag ist. Fällt der 5. auf einen Feiertag, oder auf das Wochenende, soll der Job einen Tag früher laufen. Handelt es sich dabei auch um einen freien Tag, soll der Job am ersten Arbeitstag nach dem 5. des Monats laufen.”

Und hier ist die Lösung:

Zunächst brauchen wir eine Definition der Schweizer Arbeitstage, die zum einen die Arbeitstage Montag bis Freitag definiert und gleichzeitig eine Liste alle Feiertage enthält und durch den Status “Inverse” ausklammert. Bei Listen-Einträge ohne Jahreszahl fällt der Feiertag immer auf das gleiche Datum, Einträge mit Jahreszahl sind variable Feiertage, welche jährlich gepflegt werden müssen. Diesen Kalender haben wir “WORKDAYS_CH” genannt:

Abbildung 1: Definition der Arbeitstage

Jetzt werden zwei Intervalle definiert. Der erste Intervall enthält den 4. und 5. des Monats, sofern es sich dabei um Arbeitstage handelt:

Abbildung 2: In diesem Intervall wird der 4. und 5. des Monats mit den Arbeitstagen abgeglichen

Der zweite Intervall enthält den 5. und einige darauf folgende Tage des Monats, sofern sie in der Schweiz Arbeitstage sind:

Abbildung 3: Der zweite Intervall gleicht den 5. und einige Tage danach mit den Arbeitstagen ab

Im nächsten Schritt wird nun ein Interval JOHN_CHALLENGE_HLP definiert, welches für den 4. und 5. den letzten Arbeitstag (falls vorhanden) sowie für den 5. und folgenden den ersten Arbeitstag liefert

1. Dispatch Interval 5_OR_WORKDAY_BEFORE:

Abbildung 4: Das Kreuz definiert, dass im ersten Intervall der spätestmögliche Tag gewählt wird

2. Dispatch Interval 5_OR_WORKDAY_AFTER:

Abbildung 5: Hier legt das Kreuz fest, dass im zweiten Intervall der frühest mögliche Termin ausgewählt wird

Jetzt packen wir das obige Intervall in das Intervall JOHN_CHALLANGE und selektieren von diesen Tagen den 1. Tag

Abbildung 6: Das neue Intervall JOHN_CHALLENGE

Jetzt haben wir eine Intervall Definition, welche wir in Job Schedules verwenden können. Folgender Screenshot zeigt die Verwendung in einem Schedule mit den Ausführungen für die nächsten 400 Tage.

Abbildung 7: Die Ausführungszeitpunkte innerhalb der nächsten 400 Tage

Sie haben auch eine Challenge für uns? Wir freuen uns über knifflige Aufgaben. Nehmen Sie mit uns Kontakt auf!