バッチ・データ・ストリーム・フレームワークの使用

このトピックでは、バッチ・データ・ストリーム (BDS) フレームワークを使用する方法の例を示します。

始める前に

使用する適切なパターンを指定します。パターンは、必要なデータ・ストリームのタイプに基づいて選択します。例えば、ファイルからテキストを読み取るには、FileReaderPattern を選択します。パターンの選択については、バッチ・データ・ストリームのフレームワークおよびパターンを参照してください。

手順

  1. パターン・インターフェースを実装します。
    <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. 前述のステップで作成したクラスおよびサポート・クラスを xJCL で参照します。

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>

次のタスク

アプリケーションをインストールします。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tgrid_btchpttrnex
ファイル名:tgrid_btchpttrnex.html