Executar o código Java no nó condutor (DataStage)

O estágio Java™ Integration suporta a execução de código Java no nó condutor durante a inicialização e finalização de estágios.

Para executar o código Java no condutor, seu código Java chama o método setIsRunOnConductor da classe Capabilities . Durante a inicialização do estágio, a classe Processor chama os métodos a seguir:
  1. getCapabilities()
  2. validateConfiguration()
  3. initialize()
Durante a inicialização, alguns dos métodos adicionais da classe Processor são chamados nos cenários a seguir:
  • Se o método validateConfiguration retornar false, o método getConfigurationErrors será chamado.
  • Se a propagação da coluna de tempo de execução estiver ativada em um link de saída e o método getBeanForOutput for implementado para retornar o objeto JavaBean, os métodos a seguir da classe Processor serão chamados durante a inicialização:
    1. getCapabilities()
    2. validateConfiguration()
    3. getBeanForOutput()
    4. getAdditionalOutputColumns()
  • Se a capacidade que executa de seu código Java no nó do condutor e propagação da coluna de tempo de execução forem ativadas em pelo menos um link de saída associado ao objeto JavaBean , então os métodos a seguir da classe Processor são chamados na ordem especificada durante a inicialização. O método validateConfiguration é chamado duas vezes no nó do condutor.
    1. getCapabilities()
    2. validateConfiguration()
    3. getBeanForOutput()
    4. getAdditionalOutputColumns()
    5. validateConfiguration()
    6. initialize()

Durante a finalização de um estágio, é chamado o método terminate() da classe Processor.

O código Java de exemplo a seguir é usado para configurar a capacidade de execução dos métodos da classe Processor no nó do condutor para inicialização e finalização do estágio.

public Capabilities getCapabilities()
{
   Capabilities capabilities = new Capabilities();
   capabilities.setIsRunOnConductor(true); 
   return capabilities;
}

O código Java verifica o valor de retorno do método getNodeNumber da classe Configuration para identificar se o método é chamado no nó do condutor ou nós do player. Se o valor de retorno for-1o método roda no nó do condutor. Se o valor de retorno for qualquer outro número, por exemplo 0 ou 1, o método será chamado nos nós do reprodutor.

No exemplo a seguir, a classe Processor concluirá processos de inicialização e finalização no nó do condutor e nos nós do reprodutor.

private int m_nodeID = -1;   
public boolean validateConfiguration(Configuration configuration, boolean isRuntime) throws Exception 
{    
...    
m_nodeID = configuration.getNodeNumber();    
...    
return true; 
}  

public void initialize() throws Exception 
{    
if (m_nodeID == -1) // On Conductor    
   {       
     // Perform any initialization process on the conductor node     
   }    
   else    
   {       
     // Perform any initialization process on each player node    
   } 
}  

public void terminate(boolean isAborted) throws Exception 
{    
   if (m_nodeID == -1)  // On Conductor    
   {       
    // Perform any termination process on the connector node    
   }    
   else    
   {       
   // Perform any termination process on each player node    
   } 
}