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.
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()
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);
}
}
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.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.
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;
}
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);
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());