Verarbeitung für das Überspringen von Datensätzen

Verwenden Sie die Verarbeitung für das Überspringen von Datensätzen, um Fehler beim Lesen und Schreiben von Datensätzen in transaktionsorientierten Stapeljobs zu überspringen. Geben Sie die Richtlinien für die Verarbeitung für das Überspringen von Datensätzen in der xJCL an.

Verarbeitung für das Überspringen von Datensätzen

Jeder Stapeldatenstrom hat eine eigene Konfiguration für die Richtlinie für das Überspringen von Datensätzen (skip-record). Sie aktivieren die Verarbeitung für das Überspringen von Datensätzen, indem Sie einen Wert ungleich null für die Stapeldatenstromeigenschaft "com.ibm.batch.bds.skip.count" in der xJCL angeben.

Sie können die Verarbeitung für das Überspringen von Datensätzen verfeinern, indem Sie mit der Eigenschaft "com.ibm.batch.bds.skip.include.exception.class.<n>" angeben, welche Datensatzfehler übersprungen werden sollen, und mit der Eigenschaft "com.ibm.batch.bds.skip.exclude.exception.class.<n>" angeben, welche Datensatzfehler nicht übersprungen werden sollen. Die beiden Eigenschaften schließen sich gegenseitig aus.

Das Stapelframework verfolgt die Verarbeitung für das Überspringen von Datensätzen auf Abschnittsbasis in der lokalen Jobstatusdatenbank. Diese Überwachung findet nur für Stapeldatenströme des Stapelframeworks statt. Am Ende der Abschnittsverarbeitung wird eine Nachricht in das Jobprotokoll geschrieben. Die Nachricht zeigt die Anzahl der Datensätze, die übersprungen wurden, pro Stapeldatenstrom sowie die Anzahl der Datensätze pro Sekunde pro Stapeldatenstrom an. Die Anzahl der Datensätze pro Sekunde stimmt unter Umständen nicht mit der Anzahl der Datensätze überein, die vom Stapeldatenstrom verarbeitet wurden. Wenn die Anzahl tatsächlich verarbeiteter Datensätze weniger als eine Sekunde gedauert hat, wird der Wert der Datensätze pro Sekunde aus der Zeit, die für die Verarbeitung der tatsächlichen Datensatzanzahl benötigt wurde, extrapoliert.

Die folgende Liste enthält die Eigenschaften für die Verarbeitung für das Überspringen von Datensätzen und deren Beschreibungen.

com.ibm.batch.bds.skip.count

Gibt die Anzahl der Datensätze an, die ein Stapeldatenstrom wegen eines Fehlers beim Lesen oder Schreiben eines Datensatzes überspringen kann. Wenn dieser Grenzwert erreicht ist, überspringt der Stapeldatenstrom keine weiteren Datensätze mehr, wenn Lese- oder Schreifehler auftreten.

Wenn ein Eingabedatensatz übersprungen wird, fährt der Stapeldatenstrom mit dem nächsten Datensatz fort und ruft diesen ab. Die Steuerung wird erst dann an den Aufrufenden (Caller) zurückgegeben, wenn ein Datensatz erfolgreich gelesen wurde, ein Fehler auftritt, der kein Überspringen von Datensätzen beinhaltet, oder der Grenzwert für das Überspringen von Datensätzen erreicht ist.

Wenn ein Ausgabedatensatz übersprungen wird, wird der Stapeldatenstrom ganz normal an den Aufrufenden zurückgegeben.

Wenn im Stapeldatenstrom nach dem Erreichen des Grenzwerts für das Überspringen von Datensätzen ein Lese- oder Schreibfehler auftritt, wird die Lese- bzw. Schreibausnahme an den Aufrufenden zurückgegeben. Der Datensatz wird nicht übersprungen.

Wenn Sie einen Listener für das Überspringen von Datensätzen beim Stapeldatenstrom registrieren, erhält dieser die Steuerung bei jedem übersprungenen Datensatz. Beim Überspringen von Datensätzen aufgrund eines Lesefehlers wird die Methode "SkipListener.onSkippedRead(Throwable t)" aufgerufen. Der Listener für das Überspringen von Datensätzen erhält die Steuerung vor dem Abruf des nächsten Datensatzes. Beim Überspringen von Datensätzen aufgrund eines Schreibfehlers wird die Methode "SkipListener.onSkippedWrite(Object record, Throwable t)" aufgerufen. Der übersprungene Datensatz wird im ersten Argument übergeben. Der Listener für das Überspringen von Datensätzen erhält die Steuerung vor der Rückgabe des Stapeldatenstroms an den Aufrufenden.

Die laufende Anzahl übersprungener Datensätze für einen Stapeldatenstrom wird an jedem Prüfpunkt gespeichert. Wenn ein Jobabschnitt erneut gestartet wird, wird die Anzahl übersprungener Datensätze über den letzten festgeschriebenen Prüfpunkt wiederhergestellt.

Die Verarbeitung für das Überspringen von Datensätzen ist standardmäßig inaktiviert.

Jede Stapeldatenstromimplementierung, die die Klasse "com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataInputStreamRecordMetrics" oder die Klasse "com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataOutputStreamRecordMetrics" erweitert, übernimmt automatisch die Unterstützung für das Überspringen von Datensätzen. Alle Stapeldatenströme, die unter dem Paket "com.ibm.websphere.batch.devframework.datastreams" definiert sind, enthalten die Unterstützung für das Überspringen von Datensätzen.

com.ibm.batch.bds.skip.include.exception.class.<n>

Gibt eine Liste mit Ausnahmen an, die der Stapeldatenstrom beim Lesen oder Schreiben von Datensätzen überspringen soll. Der Stapeldatenstrom überspringt nur die in der Liste aufgeführten Ausnahmen.

Die Variable <n> ist eine ganze Zahl. Beginnen Sie mit dem Variablenwert 1, und erhöhen Sie den Wert bei jeder Ausnahme um jeweils eins.

Wenn Sie keine Ausnahmen angeben, werden standardmäßig alle Ausnahmen in die Liste aufgenommen.

Im folgenden Beispiel wird die Eigenschaft verwendet:

<batch-data-streams>
   <bds>
     <logical-name>inputBDS</logical-name>
     <props>
       <prop name="PATTERN_IMPL_CLASS" value="com.ibm.ws.batch.sample.bds.WCGSampleBDS"/>
       <prop name="file.encoding" value="8859_1"/>
       <prop name="FILENAME" value="/tmp/input.txt" />
       <prop name="com.ibm.batch.bds.skip.count" value="5" />
       <prop name="com.ibm.batch.bds.skip.include.exception.class.1"
             value="java.io.IOException" />
       <prop name="com.ibm.batch.bds.skip.include.exception.class.2"
             value="com.xyz.bds.error.BadDataException" />
     </props>
     <impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileReader</impl-class>
   </bds>
</batch-data-streams>

Der Stapeldatenstrom überspringt Datensätze für Eingabe-/Ausgabeausnahmen und für Ausnahmen aufgrund ungültiger Daten.

com.ibm.batch.bds.skip.exclude.exception.class.<n>

Gibt eine Liste mit Ausnahmen an, die beim Lesen oder Schreiben von Datensätzen nicht übersprungen werden können.

Die Variable <n> ist eine ganze Zahl. Beginnen Sie mit dem Variablenwert 1, und erhöhen Sie den Wert bei jeder Ausnahme um jeweils eins.

Wenn Sie keine Ausnahmen angeben, werden standardmäßig keine Datensätze aus der Liste zu überspringender Fehler beim Lesen/Schreiben von Datensätzen ausgeschlossen.

Im folgenden Beispiel wird die Eigenschaft verwendet:

<batch-data-streams>
   <bds>
     <logical-name>inputBDS</logical-name>
     <props>
       <prop name="PATTERN_IMPL_CLASS" value="com.ibm.ws.batch.sample.bds.WCGSampleBDS"/>
       <prop name="file.encoding" value="8859_1"/>
       <prop name="FILENAME" value="/tmp/input.txt" />
       <prop name="com.ibm.batch.bds.skip.count" value="3" />
       <prop name="com.ibm.batch.bds.skip.exclude.exception.class.1"
             value="java.io.FileNotFoundException" />
     </props>
     <impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileReader</impl-class>
   </bds>
</batch-data-streams>

Der Stapeldatenstrom überspringt keine Datensätze bei Ausnahmen des Typs "Datei nicht gefunden".

Listener für das Überspringen von Datensätzen

Sie können einen Listener für das Überspringen von Datensätzen bei einem Stapeldatenstrom registrieren, der auf übersprungene Datensätze wartet. Der Listener für das Überspringen von Datensätzen erhält die Steuerung, sobald ein Datensatz übersprungen wird.

Der folgende Beispielcode führt die Registrierung des Listeners für das Überspringen von Datensätzen durch:
AbstractBatchDataInputStream _inputBDS = (AbstractBatchDataInputStream)BatchDataStreamMgr.getBatchDataStream("inputBDS", getJobStepID());
((AbstractBatchDataStreamRecordMetrics)_inputBDS).addSkipListener(new MySkipListener());

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



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