Ein fehlertoleranter generischer Stapelabschnitt arbeitet mit genau einem Eingabedatenstrom,
einem Ausgabedatenstrom und einem Fehlerdatenstrom. In diesem Abschnitt wird bei jeder Iteration der Stapelschleife
ein einzelner Eintrag aus dem BDS-Eingabedatenstrom gelesen und zur Verarbeitung an den BatchRecordProcessor übergeben.
Vorbereitungen
Der BatchRecordProcessor kann ein gültiges Datenobjekt oder einen Nullwert im Falle eines tolerierbaren Fehlers zurückgeben.
Wenn ein Nullwert zurückgegeben wird, wird der im Eingabedatenstrom gelesene Datensatz im Fehlerdatenstrom protokolliert, und die Methode
"invalidRecordEncountered" wird für die Schwellenwertrichtlinie aufgerufen. Die Schwellenwertrichtlinie bestimmt, ob der Schwellenwert für die Fehlertoleranz
erreicht wurde. Ist das der Fall, wird "STEP_CONTINUE_FORCE_CHECKPOINT_BEFORE_PROCESSING_CANCEL" zurückgegeben, was zur Folge hat, dass ein Prüfpunkt
erzwungen wird und der Job in den Status "Wieder anlauffähig" wechselt. Andernfalls wird der Job normal fortgesetzt. Wenn die vom
BatchRecordProcessor.processRecord zurückgegebenen Daten gültig sind, werden sie an den Ausgabedatenstrom des Stapeldatenstroms übergeben.
Informationen zu dieser Task
Tabelle 1. Erforderliche Eigenschaften
Eigenschaftsname |
Wert |
Beschreibung |
threshold_policy
|
Name der Java-Klasse
|
Klasse, die die Schnittstelle com.ibm.websphere.batch.devframework.thresholdpolicies.ThresholdPolicy implementiert
|
BATCHRECORDPROCESSOR
|
Name der Java-Klasse
|
Klasse, die die Schnittstelle BatchRecordProcessor implementiert
|
Tabelle 2. Optionale Eigenschaften
Eigenschaft |
Wert |
Beschreibung |
debug
|
true oder false (der Standardwert ist false)
|
Tracing und Debugging für den Abschnitt aktivieren
|
EnablePerformanceMeasurement
|
true oder false (der Standardwert ist false)
|
Die im Abschnitt verwendete Zeit messen
|
Prozedur
-
Implementieren Sie die Schnittstelle com.ibm.websphere.batch.devframework.steps.technologyadapters.BatchRecordProcessor, um
die Geschäftslogik für den Abschnitt bereitzustellen. In der xJCL für den Abschnitt muss die Eigenschaft "BATCHRECORDPROCESSOR"
deklariert werden, und ihr Wert muss auf die Implementierung der Schnittstelle gesetzt sein. Beispiel:
...
<props>
<prop name="BATCHRECORDPROCESSOR" value="com.ibm.websphere.batch.samples.tests.steps.InfrastructureVerificationTest"/>
</props>
...
-
Implementieren Sie die Schnittstelle com.ibm.websphere.batch.devframework.thresholdpolicies.ThresholdPolicy, um
die Schwellenwertrichtlinie für den Abschnitt bereitzustellen. Sie können auch die Produktimplementierungen verwenden, wie z. B.
com.ibm.websphere.batch.devframework.thresholdpolicies.PercentageBasedThresholdPolicy
oder com.ibm.websphere.batch.devframework.thresholdpolicies.RecordBasedThresholdPolicy.
Deklarieren Sie die Schwellenwertrichtlinie, die in der xJCL deklariert werden soll, wie im folgenden Codeausschnitt gezeigt:
...
<props>
<prop name="threshold_policy" value="com.ibm.websphere.batch.devframework.thresholdpolicies.PercentageBasedThresholdPolicy"/>
</props>
...
-
Setzen Sie den logischen Namen des BDS-Eingabedatenstroms auf "inputStream", den logischen Namen des BDS-Ausgabedatenstroms auf "outputStream"
und den BDS-Ausgabedatenstrom für Fehler auf "errorStream". Die logischen Namen sind in der xJCL deklariert. Beispiel:
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
....
</bds>
<bds>
<logical-name>outputStream</logical-name>
<props>
...
</bds>
<bds>
<logical-name>errorStream</logical-name>
<props>
...
</bds>
</batch-data-streams>
-
Wenn Sie BatchPackager für das Packen verwenden, muss die
Klasse des Jobabschnitts (jobstepclass) auf com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep gesetzt sein.
Beispiel:
ejbname.1=IVTStep1
jndiname.1=ejb/MyThresholdBatchStep
jobstepclass.1=com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep