Utilisation de l'infrastructure du flux de données par lots

Cette rubrique présente un exemple d'utilisation de l'infrastructure du flux de données par lots (BDS).

Avant de commencer

Identifiez le masque approprié à utiliser. Sélectionnez un masque en fonction du type de flux de données dont vous avez besoin. Par exemple, si vous souhaitez lire du texte à partir d'un fichier, sélectionnez le masque FileReaderPattern. Pour obtenir une sélection de masques, voir Infrastructure et masques du flux de données par lots.

Procédure

  1. Implémentez l'interface du masque :
    <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. Référencez la classe que vous avez créée à l'étape précédente avec la classe prise en charge dans xJCL.

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

Que faire ensuite

Installez l'application.

Icône indiquant le type de rubrique Rubrique de tâche



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=tgrid_btchpttrnex
Nom du fichier : tgrid_btchpttrnex.html