反正找了一天天也沒找到G叟ぁ!脓匿! Kettle 6.1 相比 Kettle 3 改動太大了淘钟。下面直接上代碼,備忘陪毡!
在初始化
KettleEnvironment.init();
添加插件如下代碼米母,就能夠注冊一個Step的插件了
List<String> empty = Collections.emptyList();
// 這個map別復(fù)用了,下一個插件重新new一個毡琉,不然即使clear了铁瞒,下一個插件也不能注冊成功
Map<Class<?>,String> xxxxClassMap=new HashMap<Class<?>,String>();
// xxxxMeta 就是開發(fā)的插件的Meta類了
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<Class<?>,String> anotherClassMap=new HashMap<Class<?>,String>();
// anotherMeta 就是開發(fā)的插件的Meta類了
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<String> empty = Collections.emptyList();
// 這個map別復(fù)用了,下一個插件重新new一個芍碧,不然即使clear了煌珊,下一個插件也不能注冊成功
Map<Class<?>,String> xxxxClassMap=new HashMap<Class<?>,String>();
// xxxxMeta 就是開發(fā)的插件的Meta類了
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ù)庫連接元對象(連接名稱定庵,不必與kettle中配置的保持一致:數(shù)據(jù)庫類型:連接方式(kettle支持的連接方式):資源庫IP:資源庫實例名:資源庫端口:資源庫用戶名:資源庫用戶密碼)
DatabaseMeta connection = new DatabaseMeta("資源庫名稱,不影響", "Oracle", DatabaseMeta.getAccessTypeDesc(0), "oracle的地址", "oracle的實例", "1521", "oracle用戶名", "oracle密碼");
// 資源庫元對象
KettleDatabaseRepositoryMeta repinfo = new KettleDatabaseRepositoryMeta();
repinfo.setConnection(connection);
// 資源庫
KettleDatabaseRepository repository = new KettleDatabaseRepository();
repository.init(repinfo);
// 連接資源庫
repository.connect("admin","admin",true);
// 資源庫目錄對象
RepositoryDirectoryInterface directoryInterface=repository.loadRepositoryDirectoryTree();
// 轉(zhuǎn)換元對象
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");
}