Search the FirstSpirit Knowledge Base
Für unser Generierungsszenario, welches bestimmen Aufträge am Wochenende nicht und andere in größeren Intervallen als Werktags ausführen soll, brauchen wir zB die Möglichkeit einen Auftrag nur von Mo bis Fr alle 10 Minuten laufen zu lassen. Ist das möglich? Die Option "wöchentlich" erlaubt mir die werktägliche Ausführung, aber so wie ich das verstehe nur einmal pro Tag - korrekt?
Server-Version: 4.2.219.38784
Hallo Herr Weber,
ich würde es so lösen:
- Abfrage, welche Uhrzeit an welchem Wochentag wir gerade haben.
- Aufgrund dieser definieren, ob der Auftrag ausgeführt werden soll oder nicht.
Wenn nicht, alle folgenden Aktionen deaktivieren:
//--- deactivate all following tasks ---//
idx = context.taskIndex;
tasks = context.tasks;
for (int i = idx + 1; i < tasks.size(); i++) {
tasks.get(i).setActive(false);
}
Hinweis: Der Code deaktiviert alle folgenden Tasks für die aktuelle Ausführung des Auftrags. Eine Aktivierung, wenn der Auftrag doch ausgeführt werden soll, ist nicht notwendig. Das hat auch den Vorteil, dass man manuell einige Aktionen deaktivieren kann, wenn diese niemals benutzt werden sollen.
Das ist zwar nicht ganz die Lösung, die Sie haben wollten, aber es sollte eigentlich funktionieren
Aber vielleicht hat ja noch jemand eine "passendere" Lösung...
Viele Grüsse aus Dortmund,
Holger Höbbel
Hallo Herr Weber,
hier das komplette Skript, um die Ausführung eines Auftrages nur zu bestimmten Zeiten (hier zwischen 7 und 22 Uhr) zuzulassen:
import java.text.SimpleDateFormat;
import java.util.Date;
date = new Date();
SimpleDateFormat hour = new SimpleDateFormat("HH");
stunde = new Integer(hour.format(date));
if(stunde < 7 || stunde > 22) {
//--- deactivate all following tasks ---//
idx = context.taskIndex;
tasks = context.tasks;
for (int i = idx + 1; i < tasks.size(); i++) {
tasks.get(i).setActive(false);
}
}
Viele Grüsse aus Dortmund,
Holger Höbbel
Das sieht schon mal gut aus, kann ich auch prüfen ob der Auftrag manuell gestartet wurde?
Bei einem manuellen Deployment möchte ich ggf. diesen Prüfmechanismus nicht ausführen.
Laut API müsste das über
ScheduleEnryControl.getUser()
funktionieren.
Zitat der Beschreibung:
Returns the user who initialized execution of the belonging schedule entry, or null if user is unknown (scheduled start for example).