En este tema se muestra un ejemplo de cómo utilizar la infraestructura de secuencia de datos por
lotes (BDS).
Antes de empezar
Identifique el patrón correcto que se ha de utilizar. Seleccione un patrón basándose en el tipo de
secuencia de datos que necesita. Por ejemplo, si desea leer el texto de un archivo, seleccione
FileReaderPattern. Consulte
Patrones e infraestructura de secuencia de datos por lotes para obtener una
selección de patrones.
Procedimiento
- Implemente la interfaz de patrón:
<codeblock>package com.ibm.websphere.samples;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Properties;
import com.ibm.websphere.batch.devframework.configuration.BDSFWLogger;
import com.ibm.websphere.batch.devframework.datastreams.patternadapter.FileReaderPattern;
// Implemente FileReaderPattern
public class TransactionListStream implements FileReaderPattern {
private Properties properties;
private BDSFWLogger logger;
/**
Guarde las propiedades especificadas en xJCL
*/
public void initialize(Properties props) {
// crear el registrador
logger = new BDSFWLogger(props);
if (logger.isDebugEnabled())
logger.debug("entering TransactionListInputStream.initialize()");
properties = props;
}
// Este método es donde debe añadir la lógica empresarial de proceso de la //serie de lectura
public Object fetchRecord(BufferedReader reader) throws IOException {
String str = null;
Posting posting = null;
if (logger.isDebugEnabled())
logger.debug("Entering TransactionListInputStream.fetchRecord");
if(reader.ready()) {
str = reader.readLine();
}
if(str != null) {
posting = _generateRecord(str);
}
if (logger.isDebugEnabled())
logger.debug("Exiting TransactionListInputStream.fetchRecord with " + posting);
return posting;
}
// Método de ayuda que analiza la serie de lectura y crea un objeto interno para que lo utilicen
// otras partes del código
private Posting _generateRecord(String str) {
Posting post = null;
String [] tokens = str.split(",", 3);
if(tokens.length == 3) {
String txTypeStr = tokens[0];
String actNoStr = tokens[1];
String amtStr = tokens[2];
int txType = Integer.parseInt(txTypeStr);
double amt = Double.parseDouble(amtStr);
post = new Posting(txType,actNoStr,amt);
} else {
logger.error("Invalid csv string" + str);
}
if (logger.isDebugEnabled())
logger.debug("Loaded posting record " + post);
return post;
}
public void processHeader(BufferedReader reader) throws IOException {
// No hay operación para este ejemplo
}
}
</codeblock>
- Haga referencia a la clase que ha creado en el paso anterior, junto con la clase de soporte en el xJCL.
Ejemplo de xJCL
<codeblock><batch-data-streams>
<bds>
<logical-name>txlististream</logical-name>
<props>
<prop name="IMPLCLASS" value= "com.ibm.websphere.samples.TransactionListStream"/>
<prop name="FILENAME" value="/opt/inputfile.txt"/>
<prop name="debug" value="true"/>
</props>
<impl-class> com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileReader </impl-class>
</bds>
</batch-data-streams>
</codeblock>
Qué hacer a continuación
Instale la aplicación.