Hallo,
folgendes Szenario: Wir haben ein Modul, das einen Auftrag (Schedule) über die API ausführt. Dies funktioniert soweit problemlos.
Als Rückmeldung für den Benutzer, soll nun während der Ausführung der gerade laufende Task angezeigt werden. Über ScheduleEntryControl und ScheduleEntryState kommt man an die Liste der TaskResults ran. Es scheint aber, als würden die TaskResults nicht aktualisiert werden. Es wird zu jedem Zeitpunkt während der Ausführung für alle Tasks der Status "NOT_STARTED" ausgegeben (auch nachdem die Ausführung des Auftrags beendet ist). Werden die TaskResults nur einmalig nach der Ausführung ausgegeben, so ist der jeweilige Status korrekt mit "SUCCESS" oder "FINISHED_WITH_ERRORS". Dazu folgendes Code Beispiel:
ScheduleEntry scheduleEntry = ...
ScheduleEntryControl control = scheduleEntry.execute();
while (RunState.NOT_STARTED.equals(control.getState().getState()) || control.isRunning()) {
control.refresh();
LogUtils.logInfo(getClass(), "schedule state: " + control.getState().getState());
logState(control); // wird diese Zeile auskommentiert...
}
logState(control); // ... dann werden hier die TaskResults nach der Ausführung korrekt ausgegeben
// control.awaitTermination();
private void logState(ScheduleEntryControl control) {
for (TaskResult tr : control.getState().getTaskResults()) {
LogUtils.logInfo(getClass(), tr.getTask().getName() + " - " + tr.getState().toString()) + " - " + tr.getFinishTime());
}
Thread.sleep(500);
}
Handelt es sich hier um einen Bug oder ist das Code Beispiel nicht korrekt? Server-Version: 5.0.318.57504
Danke.
Viele Grüße.