Network Deployment (Distributed operating systems), v8.0 > Develop and deploying applications > Develop batch applications > Develop batch applications


Use the batch data stream (BDS) framework

This topic shows you an example of how to use the batch data stream (BDS) framework. Identify the correct pattern to use. Select a pattern based on what type of data stream you need. For example, if to read text from a file, then select the FileReaderPattern. See Batch data stream framework and patterns for a selection of patterns.


Procedure

  1. Implement the pattern interface:
    <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;
    
    // Implement the FileReaderPattern
    public class TransactionListStream implements FileReaderPattern {
     private Properties properties;
     private BDSFWLogger logger;
    
    /**
       Save properties specified in the xJCL
    */
    
     public void initialize(Properties props) {
    // create logger
      logger = new BDSFWLogger(props);
    
      if (logger.isDebugEnabled())
       logger.debug("entering TransactionListInputStream.initialize()");
      properties = props;
    
     }
    
    
    // This method is where you should add the business logic of processing the read //string
     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 method that parses the read string and creates an internal object for use  // by other parts of the code  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 OP for this sample
    
     }
    
    }
    
    </codeblock> 
  2. Reference the class that you created in the previous step, along with the supporting class in the xJCL.


Example

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


What to do next

Install the application.
Batch data stream framework and patterns
JDBCReaderPattern
JDBCWriterPattern
ByteReaderPattern
ByteWriterPattern
FileReaderPattern
FileWriterPattern
JPAReaderPattern
JPAWriterPattern
PureQueryWriterPattern
PureQueryReaderPattern
Install the batch application

+

Search Tips   |   Advanced Search