Ein generischer Stapelabschnitt für Fehlertoleranz arbeitet mit einem Eingabedatenstrom, einem
Ausgabedatenstrom oder einem Fehlerdatenstrom. In diesem Abschnitt wird bei jeder Iteration der Stapelschleife
ein einzelner Eintrag aus dem BDS-Eingabedatenstrom (Batch Data Stream, Stapeldatenstrom) gelesen und zur Verarbeitung an die Eigenschaft "BatchRecordProcessor"
übergeben.
Vorbereitende Schritte
Die Eigenschaft "BatchRecordProcessor" kann ein gültiges Datenobjekt oder einen Nullwert im Falle eines tolerierbaren Fehlers zurückgeben.
Bei Rückgabe eines Nullwerts wird der aus dem Eingabedatenstrom gelesene
Datensatz im Fehlerdatenstrom protokolliert und die Methode
"invalidRecordEncountered" in der Schnittstelle "ThresholdPolicy" 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 diesem Vorgang
Verwenden Sie die folgenden Eigenschaften, um den Abschnitt für Fehlertoleranz zu implementieren.
Tabelle 1. Erforderliche Eigenschaften. In dieser Tabelle sind die Eigenschaftsnamen, Eigenschaftswerte und Eigenschaftsbeschreibungen aufgelistet.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. In dieser Tabelle sind die Eigenschaftsnamen, Eigenschaftswerte und Eigenschaftsbeschreibungen aufgelistet.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 |
Vorgehensweise
- Implementieren Sie die Schnittstelle com.ibm.websphere.batch.devframework.steps.technologyadapters.BatchRecordProcessor,
um die Geschäftslogik für den Abschnitt bereitzustellen.
Deklarieren Sie in der xJCL für den Abschnitt die Eigenschaft "BATCHRECORDPROCESSOR"
mit der Implementierung der Schnittstelle als Wert. Beispiele:
...
<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. Beispiele:
<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
Anwendung für die Jobabschnittsklasse jobstepclass
auf com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep gesetzt sein.
Beispiel:
Verwendung von WebSphere Extended Deployment Compute
Grid Version 6.1.1:
ejbname.1=IVTStep1
jndiname.1=ejb/MyThresholdBatchStep
jobstepclass.1=com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep
Verwendung von WebSphere Extended Deployment Compute Grid Version 8.0:
...
<job-step name="Step1">
<classname>com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep</classname>
...