Mise en œuvre des méthodes abstraites de la classe Processeur (DataStage)

Votre code Java™ doit implémenter une sous-classe de la classe Processor . La classe Processor est constituée de méthodes appelées par l'étape Java Integration. Lorsqu'un travail incluant l'étape Java Integration démarre, l'étape instancie votre classe Processor et appelle la logique dans vos implémentations Processor .

La classe Processor fournit la liste suivante de méthodes que l'étape Java Integration peut appeler pour interagir avec votre code Java au moment de l'exécution du travail ou de la conception.
  • getCapabilities()
  • validateConfiguration()
  • getConfigurationErrors()
  • getBeanForInput()
  • getBeanForOutput()
  • getAdditionalOutputColumns()
  • initialize()
  • process()
  • terminate()
  • getColumnMetadataForInput()
  • getColumnMetadataForOutput()
  • getUserPropertyDefinitions()
Au minimum, votre code Java doit implémenter les deux méthodes abstraites suivantes.
  • public abstract boolean validateConfiguration(Configuration configuration, boolean isRuntime) throws Exception;
  • public abstract void process() throws Exception;

L'exemple suivant montre l'implémentation de l'étape peek simple qui imprime les valeurs de colonne d'enregistrement dans le journal des travaux, qui peut être visualisé dans Client Director. Il suppose un lien d'entrée unique.


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);
  }
}
L'étape Java Integration appelle la méthode validateConfiguration() pour spécifier la configuration en cours (nombre et types de liens) et les valeurs des propriétés utilisateur. Votre code Java doit valider une configuration et des propriétés utilisateur données et renvoyerfalseà l'étape d'intégration Java s'il y a des problèmes avec elles. Dans l'exemple précédent, puisque ce code suppose une étape comportant un seul lien d'entrée, il vérifie le nombre de liens d'entrée et renvoiefalsesi la configuration de l'étape ne répond pas à cette exigence.
if (configuration.getInputLinkCount() != 1)
{
  // this sample code assumes stage has 1 input link.
  return false;
}
L'interface Configuration définit les méthodes utilisées pour obtenir la configuration de l'étape en cours (nombre et types de liens) et les valeurs des propriétés utilisateur. La méthode getInputLinkCount() permet d'obtenir le nombre de liens d'entrée connectés à cette étape.
Si la configuration de l'étape est acceptée par votre code Java, elle sauvegarde la référence à un objet InputLink pour un traitement ultérieur et renvoietrueà l'étape Java Integration.
m_inputLink = configuration.getInputLink(0);     
        return true;
      }

Une fois la configuration de l'étape vérifiée par votre code Java, vous pouvez interagir avec les étapes connectées dans votre travail. La méthode process() est un point d'entrée pour le traitement des enregistrements depuis le lien d'entrée ou vers le lien de sortie. Lorsqu'une ligne est disponible sur l'un des liens d'entrée de l'étape (le cas échéant et quel que soit le nombre de liens de sortie), l'étape Java Integration appelle cette méthode si le travail ne se termine pas. Votre code Java doit consommer toutes les lignes des liens d'entrée de l'étape.

En appelant la méthode readRecord() de l'interface InputLink , votre code Java peut consommer une ligne à partir du lien d'entrée. Il renvoie un objet qui implémente l'interface InputRecord. L'interface InputRecord définit les méthodes utilisées pour obtenir des données de colonne à partir d'un enregistrement de ligne consommé.
InputRecord inputRecord = m_inputLink.readRecord();
if (inputRecord == null)
{ 
  // No more input. Your code must return from process() method.
  break;
}
Une fois que votre code Java a consommé un enregistrement de ligne à partir du lien d'entrée de l'étape, votre code Java peut obtenir les valeurs d'enregistrement de colonne en appelant la méthode getValue(int columnIndex) de l'interface InputRecord . getColumnCount() dans InputLink renvoie le nombre de colonnes qui existent dans ce lien d'entrée.
for (int i = 0; i < m_inputLink.getColumnCount(); i++) 
{ 
  Object value = inputRecord.getValue(i);
Enfin, chaque valeur de colonne est écrite dans le journal des travaux en appelant la méthode information() de la classe Logger . La classe Logger permet à votre code Java d'écrire les données dans le journal des travaux avec les niveaux de journalisation spécifiés. Le code suivant écrit la représentation de chaîne de chaque valeur de colonne dans un journal de travail.
Logger.information(value.toString());