假設我們要實現乙個step外掛程式,命名為***,下面的類是必須實現的:
【備註】public
class
***extends
basestep
implements
stepinte***ce
public
class
***meta
extends
basestepmeta
implements
stepmetainte***ce
public
class
***data
extends
basestepdata
implements
stepdatainte***ce
public
class
***dialog
extends
basestepdialog
implements
stepdialoginte***ce
kettle的外掛程式體系已經相當完善,為了節省開發者自定義外掛程式所花費的時間和精力,已經將大部分核心方法都實現並封裝在各自的基類中,如basestep、basestepmeta、basestepdialog。如果想再進一步了解kettle step外掛程式,可以閱讀ba***xx相關原始碼。
step流程處理類,當step真正執行起來,就是在這個實現類裡面進行資料處理的,大部分核心方法都在basestep父類裡面實現了,需要我們自行實現的方法有以下幾個:
實現這個類的作用有以下幾點:
大部分核心方法都已經在basestepmeta父類中實現了,其中需要我們重寫實現的方法有以下幾個:
step流程處理臨時資料儲存,實現該介面的類用來暫存流程處理過程所需要用到的資料。
step外掛程式資料設定對話方塊,在spoon中拖動該step到設計區並雙擊時,就會呼叫這個實現類的open方法,實現該介面的類用來設定stepmeta相關屬性,其中需要我們實現的核心方法為:
國際化使spoon介面展示的說明文字、日誌資訊能夠適應不同國家語言。
下面以我最近開發的乙個kettle外掛程式來向大家分析外掛程式開發的具體步驟。
【備註】
【注意】
將dubboclientdialog放在com.gosun.di.trans.steps.dubboclient
包下是因為預設情況下程式會在這個包下找對應的***dialog (這裡的***為dubboclient),可以通過重寫dubboclientmeta的getdialogclassname()方法來指定具體的包名和類名:
實現的四個類分別為dubboclient、dubboclientmeta、dubboclientdata、dubboclientdialog。詳情參考原始碼。
2.2.3 dubboclientmeta上的@step註解配置
item
說明id step
外掛程式唯一標識
image
指定step外掛程式在spoon中顯示的圖示
i18npackagename
指定國際化messages所在的包名
name
step外掛程式命名
description
step外掛程式描述
categorydescription
指定step外掛程式所屬的spoon轉換目錄
【備註】
對於上圖所取的categorydescription,對應的basestep.category.lookup
應該在stepplugintype這個類的註解裡面可以找到(也可以在對應的註解裡面新建目錄):
在@step註解中指定的i18npackagename顯示我們要儲存國際化資訊的基目錄,根據上面的指定,在com.gosun.di.trans.steps.dubboclient
新建messages包。在這個包下面新建多個properties,命名規則為messages_[locate].properties
,其中locate表示國家,如en_us
表示美國,zh_cn
表示中國。
kettle 外掛程式開發
kettle core kettle的核心模組,包括一些資料處理等。kettle dbdialog kettle資料庫連線介面邏輯。kettle engine kettle的引擎,負責執行kettle的具體作業和轉換的邏輯,並會呼叫core模組。kettle ui swt 使用者介面模組,包括使用者...
Kettle外掛程式開發(Job)
乙個 kettle 的job 外掛程式主要包括兩個類,和轉換步驟外掛程式一樣,乙個是用於客戶端定義引數配置的 ui dialog 類,乙個是 job entry 類,主要是跟蹤儲存客戶的配置資訊和執行 job具體的功能 在 execute 方法中執行 1 ui dialog類。ui dailog 類...
Qt5外掛程式開發
在工程目錄,也就是需要新增外掛程式的工程下,建立乙個新的類,可以稱作介面類,需要注意的是介面類必須是乙個純虛函式 在介面類的最後,必須使用巨集q declare inte ce 他的第乙個引數是這個介面的名字,第二個引數是乙個確定介面的字串。ifndef filterinte ce h define...