WebSphere Extended Deployment Compute Grid, Version 6.1.1
             Sistemas Operacionais: AIX,, HP-UX, Linux, Solaris, Windows ,


Usando a Estrutura Batch Data Stream (BDS)

Este tópico mostra um exemplo de como usar a estrutura Batch Data Stream (BDS).

Antes de Começar

Identifique o padrão correto a ser usado. Selecione um padrão baseado em qual tipo de fluxo de dados é necessário. Por exemplo, se você desejar ler o texto de um arquivo, selecione o FileReaderPattern. Consulte Padrões e Estrutura de Fluxo de Dados em Lote para obter uma seleção de padrões.

Procedimento

  1. Implemente a interface padrão:
    <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 o FileReaderPattern
    public class TransactionListStream implements FileReaderPattern {
    	private Properties properties;
    	private BDSFWLogger logger;
    
    /**
       Salve as propriedades especificadas no xJCL
    */
    
    	public void initialize(Properties props) {
    // criar criador de logs
    		logger = new BDSFWLogger(props);
    		
    		if (logger.isDebugEnabled())
    			logger.debug("entering TransactionListInputStream.initialize()");
    		properties = props;
    
    	}
    
    
    // Esse método é onde você deve incluir a lógica de negócios de processamento da cadeia// de leitura
    	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 auxiliar que analisa a cadeia de leitura e cria um objeto interno para uso ///por outras partes do 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 OP para esta amostra
    
    	}
    
    	
    
    }
    </codeblock>
  2. Faça referência à classe que você acabou de criar na etapa anterior, juntamente com a classe de suporte no xJCL.

Exemplo

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



Conceitos relacionados
Padrões e Estrutura de Fluxo de Dados em Lote
Informações relacionadas
JDBCReaderPattern
JDBCWriterPattern
ByteWriterPattern
FileReaderPattern
FileWriterPattern
RecordOrientedDatasetReaderPattern
Tópico de Tarefa    

Termos de Uso | Feedback

Última atualização: 24/09/2009 14h24min35s EDT
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1m1/index.jsp?topic=/com.ibm.websphere.gridmgr.doc/info/scheduler/tbtchpttrnex.html