kettle外掛程式載入流程

2021-07-24 04:02:14 字數 2492 閱讀 9472

kettle遵循著外掛程式機制,基於外掛程式使得kettle整個結構非常清晰,耦合性低,移植性強,特別是對kettle進行二次開發尤其方便,根據了解,擴充套件step型別的外掛程式比較多,具體步驟可以參考: 。通過了解外掛程式的載入流程,不僅kettle的原理有深一層的認識,還有助於在進行二次開發遇到問題的時候進行定位(例如,最近遇到個情況就是通過kettle api建立資源庫,但在使用spoon工具儲存轉換到該資源庫時出錯,其實就是因為資源庫中step型別與實際中step外掛程式不一致導成的,造成不一致的原因是因為通過api建立資源庫時kettle環境中載入不到某些外掛程式資訊),本文是基於kettle5.x,外掛程式型別很多,選取stepplugintype型別為例進行描述。

pluginregistry是乙個提供所有訪問所有kettle外掛程式的單例。可以通過它註冊外掛程式型別以及外掛程式,還可以查詢每種類別的外掛程式,挑幾個以下會用到的屬性進行說明

註冊pluginregistryplugintype外掛程式型別,並獲得該型別的外掛程式並載入初始化,最後儲存到list extensions,可以不關注該步驟

呼叫registerplugintype(stepplugintype)方法進行註冊:

把stepplugintype新增到pluginmap中,如果stepplugintype未註冊,則初始化乙個空的list用來儲存該外掛程式型別的具體外掛程式

把stepplugintype新增到categorymap中,如果stepplugintype未註冊,則初始化乙個空的list來儲存該外掛程式型別的類目

把外掛程式型別註冊之後,根據該型別查詢所有該型別的具體外掛程式,它會通過3種方式來載入:

registernatives():查詢原生的step外掛程式。首先載入kettle-steps.xml(該配置檔案在kettle-engine模組中)獲取裡面所有step配置,可以在環境變數中設定「kettle_core_steps_file」來覆蓋預設的kettle-steps.xml;然後呼叫registerpluginfromxmlresource(),解析出step所有的屬性,根據屬性構造出來個plugin物件;接著,把該外掛程式資訊儲存到pluginmapcategorymap對應外掛程式型別的value(list)中;最後 ,觸發該外掛程式型別的新增、改變外掛程式的事件 。

registerpluginjars():根據jar包註冊外掛程式(通過註解方釋來描述外掛程式)。首先,windows下先會預設從[plugins, plugins\steps, c:\users\administrator\.kettle\plugins, c:\users\administrator\.kettle\plugins\steps]這幾個目錄中查詢stepplugintype型別的外掛程式jar包;然後,呼叫handlepluginannotation():通過註解解析出所有外掛程式相關的描述屬性,並構造plugin物件;接著,把該外掛程式資訊儲存到pluginmapcategorymap對應外掛程式型別的value(list)中;最後 ,觸發該外掛程式型別的新增、改變外掛程式的事件 。

registerxmlplugins():根據xml配置檔案註冊外掛程式。首先,windows下先會預設從[plugins, plugins\steps, c:\users\administrator\.kettle\plugins, c:\users\administrator\.kettle\plugins\steps]這幾個目錄中查詢stepplugintype型別外掛程式的配置檔案:***plugin.xml;然後,解析節點內容,並呼叫registerpluginfromxmlresource(),解析出step所有的屬性,根據屬性構造出來個plugin物件;接著,把該外掛程式資訊儲存到pluginmapcategorymap對應外掛程式型別的value(list)中;最後 ,觸發該外掛程式型別的新增、改變外掛程式的事件 。

還可以從環境變數中讀取「kettle_plugin_classes」的值,從中載入指定的外掛程式,該方法對除錯模式非常有利,可以通過在eclipse中啟動spoon時新增vm arguments:

dkettle_plugin_classes=org.pentaho

.di.trans

.steps

.gpload

.gploadmeta,org.pentaho

.di.core

.database

.palodatabasemeta //以逗號隔開

kettle 外掛程式開發

kettle core kettle的核心模組,包括一些資料處理等。kettle dbdialog kettle資料庫連線介面邏輯。kettle engine kettle的引擎,負責執行kettle的具體作業和轉換的邏輯,並會呼叫core模組。kettle ui swt 使用者介面模組,包括使用者...

Kettle開發流程

回到啟動介面 注意 建立資源庫時不要使用中文 因為在配置資源庫時使用中文,可能導致repositories.xml出現亂碼。然後導致你為了解決connect按鈕不見的問題不斷的刪除檔案重啟kettle。同時,也是會發現,我們的資料庫裡面有很多資料庫已經建立好了 2.簡單demo 在目標庫中新建一張表...

Kettle外掛程式開發(Job)

乙個 kettle 的job 外掛程式主要包括兩個類,和轉換步驟外掛程式一樣,乙個是用於客戶端定義引數配置的 ui dialog 類,乙個是 job entry 類,主要是跟蹤儲存客戶的配置資訊和執行 job具體的功能 在 execute 方法中執行 1 ui dialog類。ui dailog 類...