PDA

View Full Version : Integrar en Java



noemicr
03-23-2009, 07:35 AM
Hola a todos de nuevo!
Tengo una transformación ktr y necesito llamarla en una aplicación java. He estado leyendo la información que da pentaho y he visto que era tan fácil como recoger el nombre del fichero ktr y dejarla correr. Es tan sencillo?
Gracias,

tdidomenico
03-23-2009, 10:09 AM
Depende de cómo quieras llamarla. Las dos opciones serían:

a) Hacer una llamada al sistema desde Java y ejecutar Kitchen (http://wiki.pentaho.com/pages/viewpage.action?pageId=11869458) ó Pan (http://wiki.pentaho.com/pages/viewpage.action?pageId=11869063), como si estuvieras ejecutando tu transformación desde línea de comandos.

b) Cargar las librerías de Kettle en tu aplicación Java y hacer la llamada mediante los objetos disponibles.

La primera opción es la más sencilla. Si te decidís por la segunda, te dejo unas secciones del código que necesitarías:

Esto es lo que deberías importar (necesitarás referenciar las librerías de Kettle correspondientes):


import java.io.*;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.logging.LogWriter;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.trans.StepLoader;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
Y luego este sería un método para hacer la llamada:



public static void correrTransformacion(String archivo) {
try {
StepLoader.init();

EnvUtil.environmentInit();

TransMeta transMeta = new TransMeta(archivo);
transMeta.setVariable("miVariable", "miValor"); //esto es opcional, por si querés definir una variable

Trans trans = new Trans(transMeta);

trans.execute(null);
trans.waitUntilFinished();
if ( trans.getErrors() > 0 )
{
throw new RuntimeException( "Hubo errores durante la ejecución de la transformación." );
}
}
catch ( KettleException e ) {
System.out.println(e);
}
}

noemicr
03-26-2009, 07:31 AM
Gracias por tu ayuda