FileWriterPattern
Le masque FileWriterPattern est utilisé pour inscrire des données textuelles dans un fichier.
Classes prises en charge
La classe TextFileWriter fournit la logique d'ouverture d'un fichier particulier et d'écriture de données texte (chaîne) dans ce fichier. Selon les propriétés spécifiées, le fichier est ouvert en mode append (les données sont écrites à la suite du contenu existant) ou en mode remplacement. Lors d'un redémarrage, le fichier est toujours ouvert en mode append.
Il existe deux façons de configurer le nom de fichier TextFileWriter
de manière dynamique à partir de JobStepContext :
- Utilisez une propriété de niveau de travail bien connue, définie par la grille de calcul. Par exemple :
si vous définissez la valeur "/my/fileName" avant l'initialisation de TextFileWriter, cette valeur est utilisée en nom de fichier par TextFileWriter.JobStepContext ctx = JobStepContextMgr.getContext(); Properties jobProps = ctx.getJobLevelProperties(); jobProps.set(TextFileWriter. FILENAME_JOBSTEPCONTEXT_DEFAULT_PROPERTY_NAME, "/my/fileName");
- Utilisez votre propre propriété personnalisée, définie par une propriété xJCL niveau rédacteur BDS. Utilisez cette méthode si vous disposez de deux rédacteurs et que chacun a besoin d'un nom de fichier distinct. Dans cette méthode, utilisez la propriété xJCL de niveau BDS appelée com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileWriter.FILENAME.xjcl.custom.property.name pour identifier le nom de propriété JobStepContext. Exemple :
xJCL <bds> <logical-name>outputStream</logical-name> <impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileWriter</impl-class> <props> <prop name="PATTERN_IMPL_CLASS" value="mypkg.MyWriter"/> <prop name="FILENAME" value="/my/staticFileName.txt"/> <!-- This will take affect if the dynamic config isn't set. --> <prop name="AppendJobIdToFileName" value="true"/> <!-- Existing options are still usable with dynamically-determined filenames --> <prop name="debug" value="true"/> <prop name="com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileWriter.FILENAME.xjcl.custom.property.name" value="my.bds.specific.property.name"/> </props> </bds> </batch-data-streams> </job-step>
Comme dans la première méthode, définissez la propriété de niveau de travail avant l'initialisation de TextFileWriter. Exemple :JobStepContext ctx = JobStepContextMgr.getContext(); Properties jobProps = ctx.getJobLevelProperties(); jobProps.set("my.bds.specific.property.name", "/my/fileName");
Propriétés requises
Les propriétés suivantes sont requises pour le masque.
Nom de la propriété | valeur |
---|---|
PATTERN_IMPL_CLASS | Classe implémentant l'interface FileWriterPattern |
FILENAME | Chemin complet vers le fichier d'entrée |
Propriétés facultatives
Les propriétés suivantes sont optionnelles pour le masque.
Nom de la propriété | Valeur | Description |
---|---|---|
debug | true ou false (la valeur par défaut est false) | Active le traçage détaillé sur ce flux de données par lots. |
EnablePerformanceMeasurement | true ou false (la valeur par défaut est false) | Calcule le temps écoulé dans les flux de données par lots et la méthode processRecord, si vous utilisez GenericXDBatchStep. |
EnableDetailedPerformanceMeasurement | true ou false (la valeur par défaut est false) | Fournit un arrêt plus détaillé du temps écoulé dans chaque méthode des flux de données par lots. |
file.encoding | Codage du fichier. | Par exemple, 8859_1 |
AppendJobldToFileName | true ou false (la valeur par défaut est false) | Ajoute l'ID du travail au nom de fichier avant le chargement du fichier. |
append | true ou false (la valeur par défaut est true) | Détermine si le fichier doit être ouvert en mode append. Important : Lors d'un redémarrage, le fichier est toujours ouvert en mode append.
|
Définition de l'interface
public interface FileWriterPattern {
/**
* Invoked during step setup phase
* @param props
*/
public void initialize(Properties props);
/**
* This method should write the given record
* object to the bufferedwriter.
* @param out
* @param record
* @throws IOException
*/
public void writeRecord(BufferedWriter out, Object record) throws IOException;
/**
* This method is invoked only once just after the bufferedwriter
* is opened. It should be used to write any header information
* @param out
* @throws IOException
*/
public void writeHeader(BufferedWriter out) throws IOException;
/**
* This method can be optionally called during process step to explicity
* initialize and write the header.
* @param header
* @throws IOException
*/
public void writeHeader(BufferedWriter out, Object header) throws IOException;
}
Exemple xJCL
<batch-data-streams>
<bds>
<logical-name>outputStream</logical-name>
<props>
<prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoWriter"/>
<prop name="file.encoding" value="8859_1"/>
<prop name="FILENAME" value="/opt/txlist.txt" />
<prop name="debug" value="true"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileWriter</impl-class>
</bds>
</batch-data-streams>