Implementierung der abstrakten Methoden der Klasse Processor (DataStage)

Ihr Java™ -Code muss eine Unterklasse der Processor -Klasse implementieren. Die Klasse Processor besteht aus Methoden, die von der Stage 'Java Integration' aufgerufen werden. Wenn ein Job gestartet wird, der die Stage 'Java Integration' enthält, instanziiert die Stage Ihre Processor -Klasse und ruft die Logik in Ihren Processor -Implementierungen auf.

Die Klasse Processor stellt die folgende Liste von Methoden bereit, die von der Stage 'Java Integration' aufgerufen werden können, um zur Jobausführungszeit oder zur Entwicklungszeit mit Ihrem Java-Code zu interagieren.
  • getCapabilities()
  • validateConfiguration()
  • getConfigurationErrors()
  • getBeanForInput()
  • getBeanForOutput()
  • getAdditionalOutputColumns()
  • initialize()
  • process()
  • terminate()
  • getColumnMetadataForInput()
  • getColumnMetadataForOutput()
  • getUserPropertyDefinitions()
Ihr Java-Code muss mindestens die folgenden beiden abstrakten Methoden implementieren:
  • public abstract boolean validateConfiguration(Configuration configuration, boolean isRuntime) throws Exception;
  • public abstract void process() throws Exception;

Das folgende Beispiel zeigt die einfache Implementierung der Stage 'Peek', die Satzspaltenwerte in das Jobprotokoll ausgibt, das im Director-Client angezeigt werden kann. Es wird von einem einzelnen Eingabelink ausgegangen.


package samples;

import com.ibm.is.cc.javastage.api.*;

public class SimplePeek extends Processor
{
  private InputLink m_inputLink;

  public boolean validateConfiguration(
    Configuration configuration, boolean isRuntime)throws Exception
  {
    if (configuration.getInputLinkCount() != 1)
    {
      // this sample code assumes stage has 1 input link.
      return false;
    }
    
    m_inputLink = configuration.getInputLink(0);
     
    return true;   
  }

  public void process() throws Exception
  {
    do
    {
      InputRecord inputRecord = m_inputLink.readRecord();
      if (inputRecord == null)
      { 
         // No more input. Your code must return from process() method.
         break;
      }

      for (int i = 0; i < m_inputLink.getColumnCount(); i++) 
      { 
         Object value = inputRecord.getValue(i);
         Logger.information(value.toString());
      }
    } 
    while (true);
  }
}
Die Stage 'Java Integration' ruft die Methode validateConfiguration() auf, um die aktuelle Konfiguration (Anzahl und Linktypen) und die Werte für die Benutzereigenschaften anzugeben. Ihr Java-Code muss eine bestimmte Konfiguration und Benutzereigenschaften validieren und zurückgebenfalsein die Stage 'Java Integration', wenn Probleme mit ihnen auftreten. Da dieser Code im vorherigen Beispiel eine Stage mit einem Eingabelink voraussetzt, überprüft er die Anzahl der Eingabelinks und gibt Folgendes zurück:falsewenn die Phasenkonfiguration diese Anforderung nicht erfüllt.
if (configuration.getInputLinkCount() != 1)
{
  // this sample code assumes stage has 1 input link.
  return false;
}
Die Schnittstelle Configuration definiert Methoden, die verwendet werden, um die aktuelle Stagekonfiguration (Anzahl und Typ der Links) und die Werte für die Benutzereigenschaften abzurufen. Die Methode getInputLinkCount() wird verwendet, um die Anzahl der mit dieser Stage verbundenen Eingabelinks abzurufen.
Wenn die Phasenkonfiguration von Ihrem Java-Code akzeptiert wird, wird der Verweis auf ein InputLink -Objekt für die nachfolgende Verarbeitung gespeichert und zurückgegeben.truein die Stage 'Java Integration'.
m_inputLink = configuration.getInputLink(0);     
        return true;
      }

Nachdem die Phasenkonfiguration durch Ihren Java-Code überprüft wurde, können Sie mit den in Ihrem Job verbundenen Stages interagieren. Die Methode process() ist ein Eingangspunkt für die Verarbeitung von Datensätzen aus dem Eingabelink oder in den Ausgabelink. Wenn eine Zeile in einem der Eingabelinks der Stage verfügbar ist (sofern vorhanden und unabhängig von der Anzahl der Ausgabelinks), ruft die Stage 'Java Integration' diese Methode auf, wenn der Job nicht beendet wird. Ihr Java-Code muss alle Zeilen aus den Eingabelinks der Stage verarbeiten.

Durch Aufrufen der Methode readRecord() der Schnittstelle InputLink kann Ihr Java-Code eine Zeile aus dem Eingabelink verarbeiten. Es wird ein Objekt zurückgegeben, das die Schnittstelle InputRecord implementiert. Die Schnittstelle InputRecord definiert Methoden, die zum Abrufen von Spaltendaten aus einem verarbeiteten Zeilendatensatz verwendet werden.
InputRecord inputRecord = m_inputLink.readRecord();
if (inputRecord == null)
{ 
  // No more input. Your code must return from process() method.
  break;
}
Nachdem Ihr Java-Code einen Zeilendatensatz aus dem Eingabelink der Stage verarbeitet hat, kann Ihr Java-Code die Spaltendatensatzwerte durch Aufrufen der Methode getValue(int columnIndex) der Schnittstelle InputRecord abrufen. getColumnCount() in InputLink gibt die Anzahl der Spalten zurück, die in diesem Eingabelink vorhanden sind.
for (int i = 0; i < m_inputLink.getColumnCount(); i++) 
{ 
  Object value = inputRecord.getValue(i);
Zuletzt wird jeder Spaltenwert in das Jobprotokoll geschrieben, indem die Methode information() der Logger-Klasse aufgerufen wird. Die Klasse Logger ermöglicht Ihrem Java-Code das Schreiben der Daten in das Jobprotokoll mit den angegebenen Protokollebenen. Mit dem folgenden Code wird die Zeichenfolgedarstellung jedes Spaltenwerts in ein Jobprotokoll geschrieben.
Logger.information(value.toString());