實作 Processor 類別的 abstract 方法
您的 Java™ 程式碼必須實作 Processor 類別的子類別。 Processor 類別由 Java Integration 暫置所呼叫的方法組成。 當包括 Java 整合階段的工作啟動時,該階段會實例化您的 Processor 類別,並在 Processor 實作內呼叫邏輯。
Processor 類別提供下列方法清單,「Java 整合」階段可以呼叫這些方法,以在工作執行或設計時與您的 Java 程式碼互動。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;
下列範例顯示簡式 peek 階段實作,將記錄直欄值列印至可在 Director 用戶端中檢視的工作日誌。 它假設單一輸入鏈結。
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);
}
}Java Integration 暫置會呼叫
validateConfiguration() 方法,以指定現行配置 (鏈結的數目和類型) ,以及使用者內容的值。 您的 Java 程式碼必須驗證給定的配置和使用者內容,並傳回false至 Java Integration 暫置 (如果它們有問題)。 在前一個範例中,由於此程式碼假設某個階段具有單一輸入鏈結,因此它會檢查輸入鏈結數目並傳回false階段配置不符合此需求。if (configuration.getInputLinkCount() != 1)
{
// this sample code assumes stage has 1 input link.
return false;
}Configuration 介面定義用來取得現行暫置配置 (鏈結數目及類型) 的方法,以及使用者內容的值。 getInputLinkCount() 方法用來取得連接至此階段的輸入鏈結數目。如果 Java 程式碼接受暫置配置,則它會儲存
InputLink 物件的參照以進行後續處理,並傳回true至 Java Integration 暫置。m_inputLink = configuration.getInputLink(0);
return true;
}在 Java 程式碼驗證階段配置之後,您可以與工作中所連接的階段互動。 process() 方法是處理輸入鏈結或輸出鏈結的記錄的進入點。 當任何暫置輸入鏈結上有一列可用 (如果有任何及任何輸出鏈結數目) 時,如果工作未結束, Java Integration 暫置會呼叫此方法。 您的 Java 程式碼必須耗用暫置輸入鏈結中的所有列。
透過呼叫
InputLink 介面的 readRecord() 方法,您的 Java 程式碼可以耗用輸入鏈結中的一列。 它會傳回實作 InputRecord 介面的物件。 InputRecord 介面定義用來從耗用的列記錄取得直欄資料的方法。InputRecord inputRecord = m_inputLink.readRecord();
if (inputRecord == null)
{
// No more input. Your code must return from process() method.
break;
}在 Java 程式碼耗用暫置輸入鏈結中的列記錄之後,您的 Java 程式碼可以呼叫
InputRecord 介面的 getValue(int columnIndex) 方法來取得直欄記錄值。 InputLink 中的 getColumnCount() 會傳回此輸入鏈結中存在的直欄數。for (int i = 0; i < m_inputLink.getColumnCount(); i++)
{
Object value = inputRecord.getValue(i);最後,透過呼叫
Logger 類別的 information() 方法,將每一個直欄值寫入工作日誌。 Logger 類別可讓您的 Java 程式碼將資料寫入具有指定記載層次的工作日誌。 下列程式碼會將每一個直欄值的字串表示法寫入工作日誌。Logger.information(value.toString());