kettlejava脚本的api_Java调用自己开发的Kettle plugin插件
反正找了一天天也沒(méi)找到!!! Kettle 6.1 相比 Kettle 3 改動(dòng)太大了。下面直接上代碼,備忘!
在初始化
KettleEnvironment.init();
添加插件如下代碼,就能夠注冊(cè)一個(gè)Step的插件了
List empty = Collections.emptyList();
// 這個(gè)map別復(fù)用了,下一個(gè)插件重新new一個(gè),不然即使clear了,下一個(gè)插件也不能注冊(cè)成功
Map,String> xxxxClassMap=new HashMap,String>();
// xxxxMeta 就是開(kāi)發(fā)的插件的Meta類(lèi)了
xxxxClassMap.put(StepMetaInterface.class,xxxxMeta.class.getName());
PluginInterface xxxxPlugin=new Plugin(
new String[]{"MergeField"},
StepPluginType.class,
StepMetaInterface.class,
"轉(zhuǎn)換",
"插件的名字",
"插件的描述,不影響java執(zhí)行",
"插件的圖片,不影響java執(zhí)行",
false,
false,
xxxxClassMap,
empty,
null,
null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,xxxxPlugin);
Map,String> anotherClassMap=new HashMap,String>();
// anotherMeta 就是開(kāi)發(fā)的插件的Meta類(lèi)了
xxxxClassMap.put(StepMetaInterface.class,anotherMeta.class.getName());
PluginInterface anotherPlugin=new Plugin(
new String[]{"MergeField"},
StepPluginType.class,
StepMetaInterface.class,
"轉(zhuǎn)換",
"插件的名字",
"插件的描述,不影響java執(zhí)行",
"插件的圖片,不影響java執(zhí)行",
false,
false,
anotherClassMap,
empty,
null,
null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,anotherPlugin);
如此這般就能運(yùn)行了
附上java調(diào)用stepMeta的完整代碼
KettleEnvironment.init();
List empty = Collections.emptyList();
// 這個(gè)map別復(fù)用了,下一個(gè)插件重新new一個(gè),不然即使clear了,下一個(gè)插件也不能注冊(cè)成功
Map,String> xxxxClassMap=new HashMap,String>();
// xxxxMeta 就是開(kāi)發(fā)的插件的Meta類(lèi)了
xxxxClassMap.put(StepMetaInterface.class,xxxxMeta.class.getName());
PluginInterface xxxxPlugin=new Plugin(
new String[]{"MergeField"},
StepPluginType.class,
StepMetaInterface.class,
"轉(zhuǎn)換",
"插件的名字",
"插件的描述,不影響java執(zhí)行",
"插件的圖片,不影響java執(zhí)行",
false,
false,
xxxxClassMap,
empty,
null,
null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,xxxxPlugin);
// 數(shù)據(jù)庫(kù)連接元對(duì)象(連接名稱,不必與kettle中配置的保持一致:數(shù)據(jù)庫(kù)類(lèi)型:連接方式(kettle支持的連接方式):資源庫(kù)IP:資源庫(kù)實(shí)例名:資源庫(kù)端口:資源庫(kù)用戶名:資源庫(kù)用戶密碼)
DatabaseMeta connection = new DatabaseMeta("資源庫(kù)名稱,不影響", "Oracle", DatabaseMeta.getAccessTypeDesc(0), "oracle的地址", "oracle的實(shí)例", "1521", "oracle用戶名", "oracle密碼");
// 資源庫(kù)元對(duì)象
KettleDatabaseRepositoryMeta repinfo = new KettleDatabaseRepositoryMeta();
repinfo.setConnection(connection);
// 資源庫(kù)
KettleDatabaseRepository repository = new KettleDatabaseRepository();
repository.init(repinfo);
// 連接資源庫(kù)
repository.connect("admin","admin",true);
// 資源庫(kù)目錄對(duì)象
RepositoryDirectoryInterface directoryInterface=repository.loadRepositoryDirectoryTree();
// 轉(zhuǎn)換元對(duì)象
TransMeta transMeta=repository.loadTransformation("tran的名稱",directoryInterface,null,true,null);
// 轉(zhuǎn)換
Trans trans = new Trans(transMeta);
// 執(zhí)行轉(zhuǎn)換
trans.execute(null);
// 等待轉(zhuǎn)換執(zhí)行結(jié)束
if(trans.getErrors()>0){
System.out.println("transformation error");
}else{
System.out.println("transformation successfully");
}
總結(jié)
以上是生活随笔為你收集整理的kettlejava脚本的api_Java调用自己开发的Kettle plugin插件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工业机器人电路图讲解话术_燃气传感器技术
- 下一篇: 自定义关键字_Java项目实践,如何获取