Derzeit ausgeführte Tasks ermitteln
Wenn eine Task ausgeführt wird, ist der Taskdatenbanksatz bis zum Abschluss der Task gesperrt. In diesem Artikel wird erläutert, wie Sie feststellen können, ob eine Task ausgeführt wird oder nicht.
Informationen zu diesem Vorgang
In den Vorversionen von Version 6.0.2 wurden alle Tasks in nur einer globalen Transaktion ausgeführt. Dadurch wurde nicht nur verhindert, dass die Task mehrfach fehlerfrei ausgeführt werden konnte, sondern es wurden auch alle Versuche, den Status der Task zu lesen, blockiert, weil jede Task mit der Isolationsstufe TRANSACTION_READ_COMMITED ausgeführt wurde.
- NotificationSink
Mit der Methode setNotificationSink für das Objekt TaskInfo kann eine NotifidationSink-EJB für die Task definiert werden. Die NotificationSink-Bean kann dann den Lebenszyklus der Task in einer angepassten Tabelle in einem gesonderten Datenbanksatz protokollieren. Auf diese Weise wird eine Historie der Task erstellt, die unabhängig vom Scheduler abgefragt werden kann. Diese Lösung funktioniert für alle Versionen des Scheduler-Service. Ausführliche Informationen hierzu finden Sie im Artikel "Benachrichtigungen des Schedulers empfangen".
- Verzögerte Ausführung und Lesen ohne Bestätigung
In Version 6.0.2 und höher gibt es zwei Verhalten, die es dem Scheduler ermöglichen, API-Methoden wie getTask, getTaskStatus oder findTasksByName zu suchen und abzurufen, um den aktuellen STatus der Task zu prüfen, ohne sie zu blockieren. Führen Sie die folgenden Schritte aus, um den aktuellen Status einer Task, einschließlich des Ausführungsstatus für noch nicht festgeschriebene Transaktionen, anzuzeigen: