日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

kettle中java组件_kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件

發(fā)布時(shí)間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kettle中java组件_kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

該kettle插件功能類似kettle現(xiàn)有的定義java類插件,自定java類插件主要是支持在kettle中直接編寫java代碼實(shí)現(xiàn)自定特殊功能,而本控件主要是將自定義代碼轉(zhuǎn)移到j(luò)ar包,就是說(shuō)自定義功能的實(shí)現(xiàn)改為在eclipse等ide中開發(fā)。

設(shè)計(jì)本插件的原因是直接在kettle中寫java代碼是很不容易的事,開發(fā)體驗(yàn)與eclipse差得遠(yuǎn),java語(yǔ)法還要受到限制,調(diào)試麻煩。實(shí)現(xiàn)點(diǎn)簡(jiǎn)單的邏輯還行,稍微復(fù)雜一點(diǎn)就比較麻煩,需要對(duì)java和kettle相關(guān)接口很熟悉。而簡(jiǎn)單的功能可以采用javascript腳本實(shí)現(xiàn),復(fù)雜的功能一般人很難直接在自定義java類控件中編寫java實(shí)現(xiàn)。

有人說(shuō)可以每次直接開發(fā)新插件,雖然說(shuō)java的插件機(jī)制還是很不錯(cuò)的,但開發(fā)一個(gè)插件還是沒那么容易的,需要設(shè)計(jì)元數(shù)據(jù),插件件功能實(shí)現(xiàn),插件操作界面設(shè)計(jì)等,其中操作界面的調(diào)整是我最不愿意花時(shí)間的,慢慢調(diào)我也能調(diào)出常見控件的配置界面,但我覺得沒必要,所以要實(shí)現(xiàn)一個(gè)完善的插件需要做的事情還是很多的。

而本插件綜合了以上兩種機(jī)制,既有自定義java類的簡(jiǎn)單性,直接編寫核心業(yè)務(wù)代碼,操作界面統(tǒng)一使用一個(gè)JSON對(duì)象作為參數(shù)設(shè)置途徑,所以基于此開發(fā)功能,只需繼承一個(gè)基類而編寫一個(gè)功能實(shí)現(xiàn)類就可以了;又有直接開發(fā)插件的便捷性,只需將相關(guān)的jar包作為用戶類庫(kù)導(dǎo)入項(xiàng)目,創(chuàng)建一個(gè)類,繼承基類,就可以在eclipse中盡情的編寫你的業(yè)務(wù)代碼了。

該插件已經(jīng)作為我的另一個(gè)開源項(xiàng)目kettle管理平臺(tái)(http://www.cnblogs.com/majinju/p/5739820.html)的一個(gè)子項(xiàng)目開源,相關(guān)代碼可以從github上那個(gè)項(xiàng)目中獲取,下面介紹下基于該插件開發(fā)實(shí)現(xiàn)自己業(yè)務(wù)的插件。

在eclipse中創(chuàng)建用戶類庫(kù)ku,到kettle管理平臺(tái)項(xiàng)目介紹的博文中下載0.1.0版部署包,然后將部署包的lib目錄中的jar全部加入。

在eclipse中創(chuàng)建一個(gè)java項(xiàng)目,添加上一步創(chuàng)建的用戶類庫(kù)到構(gòu)建路徑,然后新建一個(gè)java類,以下是轉(zhuǎn)換步驟實(shí)現(xiàn)代碼樣例。

/*** Project Name:KettleUtil

* Date:2016年6月29日

* Copyright (c) 2016, jingma All Rights Reserved.*/

packagenet.oschina.kettleutil.utilrun;importnet.oschina.kettleutil.KettleUtilRunBase;importnet.oschina.mytuils.KettleUtils;importorg.pentaho.di.core.row.RowMetaInterface;importorg.pentaho.di.core.row.ValueMeta;importorg.pentaho.di.core.variables.VariableSpace;importorg.pentaho.di.trans.TransMeta;importorg.pentaho.di.trans.step.StepMeta;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;/*** kettle util 運(yùn)行示例

* date: 2016年6月29日

*@authorjingma

*@version

*/

public class KurDemo extendsKettleUtilRunBase{/*** 具體處理每一行數(shù)據(jù)

*@seenet.oschina.kettleutil.KettleUtilRunBase#disposeRow(java.lang.Object[])*/@Overrideprotected voiddisposeRow(Object[] outputRow) {//設(shè)置JOB名稱

outputRow[getFieldIndex("JOB_NAME")] =KettleUtils.getRootJobName(ku);

}/***

*@seenet.oschina.kettleutil.KettleUtilRunBase#init()*/@Overrideprotected voidinit() {

ku.logBasic("初始化插件");

}/***

*@seenet.oschina.kettleutil.KettleUtilRunBase#end()*/@Overrideprotected voidend() {

ku.logBasic("數(shù)據(jù)處理結(jié)束");

}/***

*@seenet.oschina.kettleutil.KettleUtilRunBase#getDefaultConfigInfo(org.pentaho.di.trans.TransMeta, java.lang.String)*/@Overridepublic String getDefaultConfigInfo(TransMeta transMeta, String stepName) throwsException{//創(chuàng)建一個(gè)JSON對(duì)象,用于構(gòu)建配置對(duì)象,避免直接拼字符串構(gòu)建JSON字符串

JSONObject params = newJSONObject();//設(shè)置一個(gè)參數(shù)key1

params.put("key1", "");

RowMetaInterface fields=transMeta.getPrevStepFields(stepName);if(fields.size()==0){throw new RuntimeException("沒有獲取到上一步驟的字段,請(qǐng)確認(rèn)連接好上一步驟");

}

params.put("PrevInfoFields", fields.toString());//創(chuàng)建一個(gè)JSON數(shù)組對(duì)象,用于存放數(shù)組參數(shù)

JSONArray arr = newJSONArray();

arr.add("arr1");

arr.add("arr2");

params.put("array", arr);//生成的參數(shù)樣例//{//"array":[//"arr1",//"arr2"//],//"key1":""//}//返回格式化后的默認(rèn)JSON配置參數(shù),供使用者方便快捷的修改配置

return JSON.toJSONString(params, true);

}public voidgetFields(RowMetaInterface r, String origin, RowMetaInterface[] info, StepMeta nextStep, VariableSpace space) {//添加輸出到下一步的字段

addField(r,"JOB_NAME",ValueMeta.TYPE_STRING,ValueMeta.TRIM_TYPE_BOTH,origin,"JOB名稱");

}

}

3. 以下是作業(yè)實(shí)體插件實(shí)現(xiàn)樣例

/*** Project Name:KettleUtil

* Date:2016年6月29日

* Copyright (c) 2016, jingma All Rights Reserved.*/

packagenet.oschina.kettleutil.utilrun;importnet.oschina.kettleutil.jobentry.JobEntryKettleUtilRunBase;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;/*** job entry kettle util 運(yùn)行示例

* date: 2016年6月29日

*@authorjingma

*@version

*/

public class JeurDemo extendsJobEntryKettleUtilRunBase{/***

*@seenet.oschina.kettleutil.jobentry.JobEntryKettleUtilRunBase#run()*/@Overrideprotected boolean run() throwsException {//這里寫自己的業(yè)務(wù)

jeku.logBasic(jeku.getConfigInfo());

jeku.logBasic(configInfo.toJSONString());return true;

}/***

*@seenet.oschina.kettleutil.KettleUtilRunBase#getDefaultConfigInfo(org.pentaho.di.trans.TransMeta, java.lang.String)*/@Overridepublic String getDefaultConfigInfo() throwsException{//創(chuàng)建一個(gè)JSON對(duì)象,用于構(gòu)建配置對(duì)象,避免直接拼字符串構(gòu)建JSON字符串

JSONObject params = newJSONObject();//設(shè)置一個(gè)參數(shù)key1

params.put("key1", "");//創(chuàng)建一個(gè)JSON數(shù)組對(duì)象,用于存放數(shù)組參數(shù)

JSONArray arr = newJSONArray();

arr.add("arr1");

arr.add("arr2");

params.put("array", arr);//生成的參數(shù)樣例//{//"array":[//"arr1",//"arr2"//],//"key1":""//}//返回格式化后的默認(rèn)JSON配置參數(shù),供使用者方便快捷的修改配置

return JSON.toJSONString(params, true);//return "select *\n from dual";

}

}

4. 開發(fā)完成后,打包放入kettle lib中,重啟kettle。以下是該插件配置界面,可以修改步驟名稱,在類名稱處填寫你的實(shí)現(xiàn)類的完整類路徑,然后就可以點(diǎn)擊【獲取默認(rèn)配置】按鈕,獲取你配置的實(shí)現(xiàn)類對(duì)應(yīng)的配置信息,根據(jù)需要修改即可完成配置。以下分別是轉(zhuǎn)換的插件實(shí)現(xiàn)示例和作業(yè)實(shí)體實(shí)現(xiàn)示例截圖。

以上就完成了基于該插件的開發(fā)使用工作,由上可以看出,執(zhí)行編寫一個(gè)類,就可以完成一個(gè)插件的開發(fā)工作。

總結(jié)

以上是生活随笔為你收集整理的kettle中java组件_kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男女啊啊啊视频 | 永久免费精品 | 美日韩精品一区二区 | 国产porn| 亚洲加勒比 | 在线播放一级片 | 免费观看成人 | 天天想你在线观看完整版电影高清 | 色婷婷导航 | 美女隐私免费看 | 韩国伦理大全 | 超碰这里只有精品 | 欧洲久久久 | 高h校园不许穿内裤h调教 | 一区二区三区四区影院 | 那个网站可以看毛片 | 亚洲永久视频 | 亚洲欧美另类在线视频 | 日本精品一区二区三区四区的功能 | 深夜成人福利 | 免费一区二区三区四区 | 国产 中文 字幕 日韩 在线 | 亚洲欧美偷拍一区 | 伊人欧美 | 久久精品国产99精品国产亚洲性色 | 天天爱天天草 | 极品白嫩少妇无套内谢 | 精品无码黑人又粗又大又长 | 日本大奶少妇 | 亚洲a视频在线 | 欧美在线v | 日本一区二区三区在线看 | 少妇一晚三次一区二区三区 | 寡妇高潮一级视频免费看 | 天天激情站 | 电影寂寞少女免费观看 | 欧美a在线视频 | 亚洲男女av| 久久亚洲AV成人无码国产人妖 | 麻豆观看| 国产精品熟妇一区二区三区四区 | 奇米综合 | 第一福利丝瓜av导航 | 777片理伦片在线观看 | 欧美另类视频在线观看 | 国产伦精品一区二区三区视频黑人 | 狠狠爱网站 | 亚洲精品欧洲精品 | 亚洲看片 | 日本一区二区成人 | 一级黄色免费 | av一起看香蕉 | 红桃视频隐藏入口 | 一起操17c| 黄色小视频在线观看免费 | 亚洲女人在线 | 国产手机精品视频 | 色呦呦在线免费观看 | www视频在线| 亚洲黄片一区 | 粉嫩小箩莉奶水四溅在线观看 | 日韩精品一区二区在线播放 | 18成人免费观看视频 | 天堂网在线资源 | 日本激情影院 | 三上悠亚激情av一区二区三区 | 久久久久久久久久成人 | 骚av在线 | 日日爱av | 性做久久久久久久久 | 天天曰天天操 | 麻豆免费在线 | 德国经典free性复古xxxx | 五月天丁香社区 | 99久久一区 | 国产日韩欧美综合在线 | 人妻在线一区二区三区 | 天天干,夜夜爽 | 精品午夜福利视频 | 在厨房拨开内裤进入毛片 | 国产精品美女久久久免费 | 免费极品av一视觉盛宴 | 超碰在线99 | 精品一区二区日韩 | 永久免费av| 国产黄色大片 | 性工作者十日谈 | av导航在线观看 | 久久精品国产亚洲av高清色欲 | 尤物网站在线观看 | 香蕉一区二区三区四区 | 天天av综合| 亚洲一区二区三区在线视频 | 神秘马戏团在线观看免费高清中文 | 深夜福利1000 | 做视频 | 秋霞黄色网 | 日韩最新中文字幕 | 成人在线播放视频 |