前提:本人屬於初學者,kettle與java的集成正在學習,本文着重說的是java調用本地的ktr並且傳參,而不是調用數據庫類型的資源庫中的ktr.
part1:java部分
project目錄如下
需要注意的是:
1:注意所需要的包,大多部分的包在kettle目錄下面就有。
2:ktr設計中可能設計多種數據源,驅動包都要有,比如上面的jtds,ojdbc.
3:根據提示也可以選擇性的導入js-1.7R1(開發過程中報了一個not found js類的) 下面的兩個activation,mail是報了mail的錯誤,所以導入。

1 package kettle; 2 //需要導入的包 3 import org.pentaho.di.core.KettleEnvironment; 4 import org.pentaho.di.trans.Trans; 5 import org.pentaho.di.trans.TransMeta; 6 public class ExecuteLocalTran { 7 /** 8 * java調用本地的tran並且傳遞參數 9 * 10 * 11 */ 12 public static void main(String arg[]) throws Exception 13 { 14 String idname="5";//作為參數值 15 String filename="./test.ktr";//ktr路徑 16 KettleEnvironment.init();//初始化kettle環境 17 TransMeta transMeta = new TransMeta(filename);//new tran的源數據對象 18 Trans trans = new Trans(transMeta);//創建tran對象 19 trans.setVariable("namevalue",idname);//給對象傳參 20 trans.prepareExecution(null);//異常處理 21 trans.startThreads();//開始執行 22 trans.waitUntilFinished();//等待執行完畢 23 if(trans.getErrors()!=0) 24 { 25 System.out.println("Error encountered!"); 26 } 27 } 28 29 }
part2:ktr部分
需要注意的地方:1:參數引用格式${java程序中指定的參數名} PS: trans.setVariable("namevalue",idname);//給對象傳參
2:一定要勾選”替換sql語句中的變量“