Traitement de non prise en compte d'enregistrements

Utilisez le traitement de non prise en compte d'enregistrements pour ignorer les erreurs d'enregistrement de lecture et d'écriture dans des travaux par lots transactionnels. Indiquez les règles de non prise en compte d'enregistrements dans le code xJCL.

Traitement de non prise en compte d'enregistrements

Chaque flux de données de lot possède sa propre configuration de règle de non prise en compte d'enregistrements. Vous activez le traitement de non prise en compte d'enregistrements en spécifiant une valeur autre que zéro pour la propriété de flux de données de lot com.ibm.batch.bds.skip.count dans xJCL.

Vous pouvez affiner le traitement de non prise en compte d'enregistrements en utilisant la propriété com.ibm.batch.bds.skip.include.exception.class.<n> pour spécifier les erreurs d'enregistrement qui doivent être ignorées, et en utilisant la propriété com.ibm.batch.bds.skip.exclude.exception.class.<n> pour spécifier les erreurs d'enregistrement qui ne doivent pas être ignorées. Les deux propriétés s'excluent mutuellement.

L'infrastructure par lots contrôle le traitement de non prise d'enregistrements étape par étape dans la base de données d'état de travail locale. Ce contrôle est effectué uniquement pour les flux de données de lot à partir de l'infrastructure par lots. A la fin du traitement de l'étape, un message est écrit dans le journal de travail. Ce message indique le nombre d'enregistrements ayant été ignorés par flux de données de lot et le nombre d'enregistrements à la seconde par flux de données de lot. Le nombre d'enregistrements à la seconde peut ne pas correspondre au nombre d'enregistrements ayant été traités par un flux de données de lot. Si moins d'une seconde a été nécessaire pour le nombre réel d'enregistrements traités, la valeur du nombre d'enregistrements par seconde est déduite à partir du temps de traitement qui a été nécessaire pour le nombre réel d'enregistrements.

Sont répertoriées ci-après toutes les propriétés de non prise en compte d'enregistrements, suivies d'une description.

com.ibm.batch.bds.skip.count

Indique le nombre d'enregistrements qu'un flux de données de lot peut ignorer en raison d'une erreur de lecture ou d'écriture d'un enregistrement. Lorsque cette limite est atteinte, le flux de données de lot n'ignore plus aucune erreur de lecture ou d'écriture.

Lorsqu'un enregistrement en entrée est ignoré, le flux de données de lot passe à l'enregistrement suivant et l'extrait. L'appelant récupère le contrôle uniquement lorsqu'un enregistrement est lu correctement, une erreur non liée à une non prise en compte d'enregistrements se produit ou la limite de non prise en compte est atteinte.

Lorsqu'un enregistrement en sortie est ignoré, le flux de données de lot renvoie normalement le contrôle à l'appelant.

Si le flux de données de lot détecte une erreur de lecture ou d'écriture une fois que la limite de non prise en compte est atteinte, l'exception de lecture ou d'écriture est renvoyée à l'appelant. L'enregistrement n'est pas ignoré.

Si vous enregistrez un programme d'écoute de non prise en compte avec le flux de données de lot, il prend le contrôle de chaque enregistrement ignoré. Pour les lectures ignorées, la méthode SkipListener.onSkippedRead(Throwable t) est appelée. Le programme d'écoute de non prise en compte prend le contrôle avant l'extraction de l'enregistrement suivant. Pour les écritures ignorées, la méthode SkipListener.onSkippedWrite(Object record, Throwable t) est appelée. L'enregistrement ignoré est transmis dans le premier argument. Le programme d'écoute de non prise en compte prend le contrôle avant le renvoi du flux de données de lot à l'appelant.

Le nombre de non prises en compte en cours pour un flux de données de lot persiste sur chaque point de contrôle. Lorsqu'une étape de travail redémarre, le nombre d'enregistrements non pris en compte est restauré à partir du dernier point de contrôle validé.

Le traitement de non prise en compte d'enregistrements est désactivé par défaut.

Toute implémentation de flux de données de lot qui étend la classe com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataInputStreamRecordMetrics ou com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataOutputStreamRecordMetrics hérite automatiquement de la prise en charge de la non prise en compte d'enregistrements. Tous les flux de données de lot définis sous le package com.ibm.websphere.batch.devframework.datastreams contiennent la prise en charge de la non prise en compte d'enregistrements.

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

Indique une liste d'exceptions que le flux de données de lot doit ignorer lors de la lecture ou de l'écriture d'enregistrements. Le flux de données de lot ignore uniquement les exceptions figurant dans la liste.

La variable <n> est un nombre entier. Démarrez la variable à partir de 1 et incrémentez-la d'une unité pour chaque exception.

Si vous n'indiquez pas d'exception, par défaut, toutes les exceptions sont incluses dans la liste d'erreurs de lecture/d'écriture à ignorer.

L'exemple suivant utilise la propriété :

<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>

Le flux de données de lot ignore les enregistrements correspondant aux exceptions d'entrée/de sortie et aux exceptions de données incorrectes.

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

Indique une liste d'exceptions qui ne peuvent pas être ignorées lors de la lecture ou de l'écriture d'enregistrements.

La variable <n> est un nombre entier. Démarrez la variable à partir de 1 et incrémentez-la d'une unité pour chaque exception.

Si vous n'indiquez pas d'exception, par défaut, aucun enregistrement n'est exclus de la liste des erreurs de lecture/d'écriture qui doivent être ignorées.

L'exemple suivant utilise la propriété :

<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>

Le flux de données de lot n'ignore pas les enregistrements correspondant aux exceptions de fichier introuvable.

Programmes d'écoute de non prise en compte

Vous pouvez enregistrer un programme d'écoute de non prise en compte avec un flux de données de lot pour écouter les enregistrements ignorés. Le programme d'écoute de non prise en compte prend le contrôle chaque fois qu'un enregistrement est ignoré.

L'exemple de code suivant enregistre le programme d'écoute de non prise en compte.
AbstractBatchDataInputStream _inputBDS =
   (AbstractBatchDataInputStream)BatchDataStreamMgr.getBatchDataStream("inputBDS", getJobStepID());
((AbstractBatchDataStreamRecordMetrics)_inputBDS).addSkipListener(new MySkipListener());

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rgrid_xdbatchskiprp
Nom du fichier : rgrid_xdbatchskiprp.html