Dieser Artikel enthält ein Beispiel für die Verwendung des Framework für Stapeldatenströme (BDS)
Vorbereitende Schritte
Geben Sie das richtige zu verwendende Muster an. Wählen Sie je nach benötigtem Datenstromtyp ein Muster aus. Wenn Sie
z. B. Text aus einer Datei lesen möchten, wählen Sie FileReaderPattern aus. Eine Auswahl von Mustern
finden Sie im Artikel
Framework und Muster für Stapeldatenströme.
Vorgehensweise
- Implementieren Sie die Schnittstelle des Musters:
<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;
// FileReaderPattern implementieren
public class TransactionListStream implements FileReaderPattern {
private Properties properties;
private BDSFWLogger logger;
/**
In der xJCL angegebene Eigenschaften speichern
*/
public void initialize(Properties props) {
// Protokollfunktion erstellen
logger = new BDSFWLogger(props);
if (logger.isDebugEnabled())
logger.debug("entering TransactionListInputStream.initialize()");
properties = props;
}
// In dieser Methode müssen Sie die Geschäftslogik zur Verarbeitung
// der Lesezeichenfolge hinzufügen
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;
}
// Helper-Methode, die die Lesezeichenfolge syntaktisch analysiert und ein
// internes Objekt erstellt, das von anderen Codeabschnitten verwendet werden kann
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 {
// Verhinderung der Aktivierung für dieses Beispiel
}
}
</codeblock>
- Referenzieren Sie die Klasse, die Sie im vorherigen Schritt erstellt haben, zusammen mit der Unterstützungsklasse in der xJCL.
xJCL-Beispiel
<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>
Nächste Schritte
Installieren Sie die Anwendung.