FileWriterPattern

Das Muster FileWriterPattern wird verwendet, um Textdaten in eine Datei zu schreiben.

Unterstützungsklassen

Die Klasse "TextFileWriter" stellt die Logik zum Öffnen und Schreiben von Zeichenfolgedaten in die gegebene Datei bereit. Die Datei wird entweder im Anfügemodus oder im Überschreibmodus geöffnet, je nachdem, welche Eigenschaften angegeben wurden. Während eines Jobneustarts wird die Datei immer im Anfügemodus geöffnet.

Es gibt zwei Möglichkeiten, den Dateinamen von TextFileWriter dynamisch über JobStepContext zu definieren:
  • Verwenden Sie eine bekannte, von Compute Grid definierte Eigenschaft auf Jobebene. Sehen Sie sich das folgende Beispiel an:
       JobStepContext ctx= JobStepContextMgr.getContext();   Properties jobProps = ctx.getJobLevelProperties();
       jobProps.set(TextFileWriter.
       FILENAME_JOBSTEPCONTEXT_DEFAULT_PROPERTY_NAME, "/my/fileName");
    Wenn Sie den Wert für "/my/fileName" vor der Initialisierung von TextFileWriter setzen, wird dieser Wert von TextFileWriter als Dateiname verwendet.
  • Verwenden Sie Ihre eigene, von einer xJCL-Eigenschaft auf BDS-Ebene definierte angepasste Eigenschaft. Verwenden Sie diese Methode, wenn Sie zwei Writer haben und jeder Writer einen anderen Dateinamen benötigt.
    Verwenden Sie in dieser Methode die folgende xJCL-Eigenschaft auf BDS-Ebene, um den Namen der Eigenschaft JobStepContext anzugeben: com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileWriter.FILENAME.xjcl.custom.property.name. Beispiele:
    xJCL
          <bds>
            <logical-name>outputStream</logical-name>
    
    <impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileWriter</impl-class>
    
            <props>
              <prop name="PATTERN_IMPL_CLASS" value="mypkg.MyWriter"/>
              <prop name="FILENAME" value="/my/staticFileName.txt"/>    <!--
    Diese Einstellung wird wirksam, wenn die dynamische Konfiguration nicht gesetzt ist. -->
              <prop name="AppendJobIdToFileName" value="true"/>           <!--
    Existing options are still usable with dynamically-determined filenames -->
              <prop name="debug" value="true"/>
              <prop
    name="com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileWriter.FILENAME.xjcl.custom.property.name"
      value="my.bds.specific.property.name"/>
            </props>
          </bds>
        </batch-data-streams>
      </job-step>
    Setzen Sie wie bei der ersten Methode die Eigenschaft auf Jobebene, bevor Sie die Initialisierung von TextFileWriter durchführen. Beispiel:
       JobStepContext ctx= JobStepContextMgr.getContext();   Properties jobProps = ctx.getJobLevelProperties();
       jobProps.set("my.bds.specific.property.name", "/my/fileName");

Erforderliche Eigenschaften

Die folgenden Eigenschaften sind für das Muster erforderlich.

Tabelle 1. Erforderliche Eigenschaften. Die Tabelle enthält die Namen und Werte der erforderlichen Eigenschaften für das Muster.
Eigenschaftsname Wert
PATTERN_IMPL_CLASS Die Klasse, die die Schnittstelle FileWriterPattern implementiert.
FILENAME Vollständiger Pfad zur Eingabedatei

Optionale Eigenschaften

Die folgenden Eigenschaften sind für das Muster optional.

Tabelle 2. Optionale Eigenschaften. Die Tabelle enthält die Namen, die Werte und die Beschreibungen der optionalen Eigenschaften für das Muster.
Eigenschaftsname Wert Beschreibung
debug true oder false (der Standardwert ist false) Aktiviert detailliertes Tracing in diesem Stapeldatenstrom.
EnablePerformanceMeasurement true oder false (der Standardwert ist false) Berechnet die Gesamtzeit in den Stapeldatenströmen und in der Methode "processRecord" bei Verwendung des GenericXDBatchStep.
EnableDetailedPerformanceMeasurement true oder false (der Standardwert ist false) Bietet eine detailliertere Aufgliederung der Zeit pro Methode des Stapeldatenstroms.
file.encoding Codierung der Datei. Beispiel: 8859_1
AppendJobldToFileName true oder false (der Standardwert ist false) Hängt die Job-ID an den Dateinamen an, bevor die Datei geladen wird.
append true oder false (der Standardwert ist true) Bestimmt, ob die Datei im Anfügemodus (append) geöffnet wird.
Wichtig: Während eines Neustarts wird die Datei immer im Anfügemodus geöffnet.

Schnittstellendefinition

public interface FileWriterPattern { 
  
	/**  
	 	 * Wird bei der Konfiguration des Abschnitts aufgerufen
	 	 * @param props
	 */  
	public void initialize(Properties props);
	  
	/**  
	 	 * Diese Methode muss das jeweilige Datensatzobjekt in den BufferedWriter schreiben.
	 	 * @param out  
	 	 * @param record  
	 	 * @throws IOException  
	 */  
		public void writeRecord(BufferedWriter out, Object record) throws IOException;  
	  
	/**  
	 	 * Diese Methode wird nur einmal nach dem Öffnen des bufferedwriter aufgerufen. 
  * Sie sollte zum Schreiben aller Header-Informationen verwendet werden.
	 	 * @param out  
	 	 * @throws IOException  
	 */  
		public void writeHeader(BufferedWriter out) throws IOException;  

        /**
	 	 * Diese Methode kann während des Verarbeitungsschritts aufgerufen werden,
  * um den Header explizit zu initialisieren und zu schreiben.
	 	 * @param header
	 	 * @throws IOException
	 */
		public void writeHeader(BufferedWriter out, Object header) throws IOException;

}  

Beispiel für xJCL

<batch-data-streams>
<bds>
<logical-name>outputStream</logical-name>
<props>
     <prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoWriter"/>
     <prop name="file.encoding" value="8859_1"/>
     <prop name="FILENAME" value="/opt/txlist.txt" />
     <prop name="debug" value="true"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileWriter</impl-class>
</bds>
</batch-data-streams>

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rgrid_btchpttrn6
Dateiname:rgrid_btchpttrn6.html