1,Spoon.java的main方法是整個Kettle運行的入口。當打開Kettle的設計器界面後,能夠在其中設計做業和轉換。這裏討論轉換的執行過程。java
2,設計好一個轉換後,轉換保存的本地文件是 .ktr文件。從 .ktr文件中能夠讀取出該轉換的元數據transMeta。ui
3,點擊運行按鈕時,觸發監聽器,調用Spoon.java 的runFile() ,在runFile裏面調用 executeFile()。在executeFile()裏面得到了transMeta數據。spa
1 public void executeFile(boolean local, boolean remote, boolean cluster, boolean preview, boolean debug, 2 Date replayDate, boolean safe) { 3 4 TransMeta transMeta = getActiveTransformation();//在這裏獲得了transMeta 5 if (transMeta != null) 6 executeTransformation(transMeta, local, remote, cluster, preview, debug, replayDate, safe, 7 transExecutionConfiguration.getLogLevel());
4,再調用executeTransformation(),在該方法裏 new Thread,並在線程的run方法裏面執行該轉換線程
delegates.trans.executeTransformation(transMeta, local, remote, cluster, preview, debug, replayDate,
safe, logLevel);
5,最終在 org.pentaho.di.ui.spoon.delegates.SpoonTransformationDelegate.java 的方法executeTransformation(TransMeta, boolean, boolean, boolean, boolean, boolean, Date, boolean, LogLevel)中配置好轉換的參數,以及執行轉換的模式,啓動並執行轉換。debug
1 else if( executionConfiguration.isExecutingStorm()){ 2 //execute transformation in storm platform 3 activeTransGraph.startTopology(executionConfiguration); 4 }
這裏整合了Storm,可讓轉換執行在Storm上。設計
總結:transMeta數據是構建轉換的元數據,只要得到了transMeta,就能夠在其它地方從新構建轉換。而transMeta最初是在Spoon.java 的 executeFile() 裏面經過 getActiveTransformation()方法得到。code