Utilización de la infraestructura de secuencias de datos por lotes

En este tema se muestra un ejemplo de cómo utilizar la infraestructura de secuencia de datos por lotes (BDS).

Antes de empezar

Identifique el patrón correcto que se ha de utilizar. Seleccione un patrón basándose en el tipo de secuencia de datos que necesita. Por ejemplo, si desea leer el texto de un archivo, seleccione FileReaderPattern. Consulte Patrones e infraestructura de secuencia de datos por lotes para obtener una selección de patrones.

Procedimiento

  1. Implemente la interfaz de patrón:
    <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 FileReaderPattern
    public class TransactionListStream implements FileReaderPattern {
    	 private Properties properties;
    	 private BDSFWLogger logger;
    
    /**
       Guarde las propiedades especificadas en xJCL
    */
    
    	 public void initialize(Properties props) {
    // crear el registrador
    		 	logger = new BDSFWLogger(props);
    		
    				if (logger.isDebugEnabled())
    			 		logger.debug("entering TransactionListInputStream.initialize()");
    		 	properties = props;
    
    	}
    
    
    // Este método es donde debe añadir la lógica empresarial de proceso de la //serie de lectura
    	 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 de ayuda que analiza la serie de lectura y crea un objeto interno para que lo utilicen
     // otras partes del 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 hay operación para este ejemplo
    
    	}
    
    }
    </codeblock>
  2. Haga referencia a la clase que ha creado en el paso anterior, junto con la clase de soporte en el xJCL.

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

Qué hacer a continuación

Instale la aplicación.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tgrid_btchpttrnex
File name: tgrid_btchpttrnex.html