It's a great feature to have jobs run automatically wíthout any user interaction, f.e. to do periodic deployment to a webserver.
We added some steps to check automatically if the jobs were ended with an error and if an error occured an admin-group receives an automatic mail message.
To do this we added two steps and the end of each job.
1. Script to check if there was an error
import de.espirit.firstspirit.access.schedule.*;
result = "";
tasks = context.tasks;
idx = context.taskIndex;
taskresults = context.getTask().getScheduleEntry().getRunningEntries().get(0).getState().getTaskResults();
int errors = 0;
step = "";
int numberpages = 0;
result = "Bei der Ausführung des folgenden Auftrags ist ein Fehler aufgetreten !\n\n";
result=result+"Projekt: " +context.getProject().getName() +"\n";
result=result+"Auftrag: " +context.getTask().getScheduleEntry().getName() +" \n\n";
for (int i = 0; i <idx; i++) {
step = taskresults.get(i).getState().toString();
name= tasks.get(i).getName().toString();
result = result + step + " (" + name + ")\n";
if (step.equals( "ERROR") || step.equals( "FINISHED_WITH_ERRORS")) {
errors++;
}
if ( (context.getTask().getScheduleEntry().getTasks().get(i) instanceof GenerateTask) && step.equals( "SUCCESS") ) {
numberpages = numberpages + taskresults.get(i).getTaskInfoBean().getPageIndex();
}
}
result = result+"\n";
if (numberpages>0) {
result = result+"Es wurden insgesamt " + numberpages + " Seiten erzeugt.\n\n";
}
if (errors>0) {
result = result+"ACHTUNG Es ist/sind " + errors +" FEHLER aufgetreten !\n\n";
} else {
tasks.get(idx + 1).setActive(false);
}
result = result+"Diese Mail wurde automatisch vom CMS Firstspirit generiert. Für technische Rückfragen senden Sie bitte eine Nachricht an admins@ourcompany.de \n";
context.setProperty("result", result );
Wer möchte kann die Mail auch nur beim Status ERROR erzeugen und nach belieben auch die Ausgabe anpassen.
Ich habe mal beispielhaft die Anzahl der generierten Seiten im Skript belassen. Wer dies nicht benötigt kann diese Zeilen einfach entfernen.
2. Mail-Aktion (defaultmässig aktiv und wird auch im Fehlerfall ausgeführt).
Empfänger kann nach Belieben gewählt werden.
Der Verwendungszweck wird über die erste Zeile des Mailtextes angepasst - darf aber nicht leer bleiben.
Im Mailtext prüfe ich aktuell noch ob mein Prüfskript ein Fehler hatte und gebe falls dies der Fall war trotzdem Angaben zum Projekt und Auftrag aus:
$CMS_SET(#context.task.subject, "Problem mit FirstSpirit-Auftrag aus Projekt " + #context.project.name + " (" + #context.getTask().getScheduleEntry().getName() + ")" )$
$CMS_IF(!#context.getProperty("result").isEmpty)$
$CMS_VALUE(#context.getProperty("result"))$
$CMS_ELSE$
Fehler bei der Ausführung des Skriptes "Überprüfung auf Fehler"
im Projekt: $CMS_VALUE(#context.getProject().getName())$
beim Auftrag: $CMS_VALUE(#context.getTask().getScheduleEntry().getName())$
Der Auftrag startete um $CMS_VALUE(#context.task.scheduleEntry.runningEntries.get(0).startTime.format("H:mm:ss"))$
Diese Mail wurde automatisch vom CMS Firstspirit generiert. Für technische Rückfragen senden Sie bitte eine Nachricht an admins@ourcompany.de
$CMS_END_IF$