Une étape de traitement par lots générique de tolérance des erreurs fonctionne avec un flux de données d'entrées, de sorties et d'erreurs. Au cours de chaque itération de la boucle de traitement par lots, cette étape lit
une seule entrée dans le flux d'entrées du flux de données par lots et la transmet à la propriété BatchRecordProcessor pour traitement.
Avant de commencer
La propriété BatchRecordProcessor peut retourner un objet de données valide ou une valeur nulle dans une erreur tolérable. Si la valeur est nulle, la lecture de l'enregistrement à partir du flux d'entrées est consignée dans le flux d'erreur et la méthode invalidRecordEncountered est appelée sur l'interface
ThresholdPolicy. Le règle de seuil détermine si le seuil de tolérance d'erreur
a été atteint. Si c'est le cas, elle renvoie
STEP_CONTINUE_FORCE_CHECKPOINT_BEFORE_PROCESSING_CANCEL, qui
impose un point de contrôle et donne au travail l'état 'redémarrable'. Sinon,
le travail se poursuit normalement. Si les données renvoyées par BatchRecordProcessor.processRecord
sont valides, elles sont transmises au flux de sorties BDS.
Pourquoi et quand exécuter cette tâche
Utilisez les propriétés suivantes pour implémenter l'étape de tolérance d'erreur.
Tableau 1. Propriétés requises. Le tableau contient le nom, la valeur et la description de chaque propriété.Nom de la propriété |
Valeur |
Description |
threshold_policy |
Nom de classe Java |
Classe implémentant l'interface com.ibm.websphere.batch.devframework.thresholdpolicies.ThresholdPolicy |
BATCHRECORDPROCESSOR |
Nom de classe Java |
Classe implémentant l'interface BatchRecordProcessor |
Tableau 2. Propriétés facultatives. Le tableau contient le nom, la valeur et la description de chaque propriété.Propriété |
Valeur |
Description |
debug |
true ou false (la valeur par défaut est false) |
Activer les fonctions de trace et de débogage sur l'étape |
EnablePerformanceMeasurement |
true ou false (la valeur par défaut est false) |
Mesurer le temps écoulé pendant l'étape |
Procédure
- Implémentez l'interface com.ibm.websphere.batch.devframework.steps.technologyadapters.BatchRecordProcessor pour
fournir la logique métier pour l'étape.
Dans le xJCL de l'étape,
déclarez une propriété BATCHRECORDPROCESSOR avec la valeur définie
sur l'implémentation de l'interface. Exemple :
...
<props>
<prop name="BATCHRECORDPROCESSOR"
value="com.ibm.websphere.batch.samples.tests.steps.InfrastructureVerificationTest"/>
</props>
...
- Implémentez l'interface com.ibm.websphere.batch.devframework.thresholdpolicies.ThresholdPolicy pour fournir
la règle de seuil pour l'étape. Vous pouvez également utiliser des implémentations produit
telles que com.ibm.websphere.batch.devframework.thresholdpolicies.PercentageBasedThresholdPolicy ou com.ibm.websphere.batch.devframework.thresholdpolicies.RecordBasedThresholdPolicy.
Déclarez la règle de seuil à utiliser dans xJCL, comme indiqué dans le fragment de code suivant :
...
<props>
<prop name="threshold_policy"
value="com.ibm.websphere.batch.devframework.thresholdpolicies.PercentageBasedThresholdPolicy"/>
</props>
...
- Définissez le nom logique de flux d'entrées BDS sur inputStream, un
nom logique de flux de sorties BDS sur outputStream et le flux de sorties
BDS des erreurs sur errorStream.
Les noms logiques sont déclarés dans xJCL. Exemple :
<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>
- Lors de l'utilisation de BatchPackager pour le conditionnement, l'application
pour la classe de l'étape de travail, jobstepclass, doit avoir pour valeur
com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep.
Par exemple :
Utilisation de 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
Utilisation de
WebSphere Extended Deployment Compute Grid Version 8.0 :
...
<job-step name="Step1">
<classname>com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep</classname>
...