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.

Es gibt zwei Möglichkeiten festzustellen, ob eine Task aktiv ist:
  1. 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".

  2. 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:

Vorgehensweise

  1. Aktivieren Sie für die read-Methoden des Schedulers die Isolationsstufe TRANSACTION_READ_UNCOMMITTED, um zu verhindern, dass diese Methoden während der Ausführung der Task zu Blockierungen führen. Der Artikel "Scheduler-Standardisolationsstufe für Transaktionen konfigurieren" enthält Details zu Leseoperationen. Hier können Sie sich informieren, wie die Standardisolationsstufe für Transaktionen für read-Methoden gesetzt wird.
    Wichtig: Wenn die Schedulerdatenbank das Lesen ohne Bestätigung nicht unterstützt, wie es beispielsweise bei Oracle der Fall ist, kann möglicherweise nur mit der Servicequalität QOS_ATLEASTONCE festgestellt werden, ob eine Task ausgeführt wird.
  2. Mit der Option TaskInfo.EXECUTION_DELAYEDUPDATE der Methode TaskInfo.setTaskExecutionOptions können Sie erzwingen, dass der Scheduler den Status TaskStatus.RUNNING in die Task schreibt, wenn die Ausführung der Task beginnt.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_identify
Dateiname:tsch_identify.html