反正找了一天天也没找到!!! Kettle 6.1 相比 Kettle 3 改动太大了。下面直接上代码,备忘!
在初始化
KettleEnvironment.init();
添加插件如下代码,就能够注册一个Step的插件了
List<String> empty = Collections.emptyList();
// 这个map别复用了,下一个插件重新new一个,不然即使clear了,下一个插件也不能注册成功
Map<Class<?>,String> xxxxClassMap=new HashMap<Class<?>,String>();
// xxxxMeta 就是开发的插件的Meta类了
xxxxClassMap.put(StepMetaInterface.class,xxxxMeta.class.getName());
PluginInterface xxxxPlugin=new Plugin(
new String[]{"MergeField"},
StepPluginType.class,
StepMetaInterface.class,
"转换",
"插件的名字",
"插件的描述,不影响java执行",
"插件的图片,不影响java执行",
false,
false,
xxxxClassMap,
empty,
null,
null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,xxxxPlugin);
Map<Class<?>,String> anotherClassMap=new HashMap<Class<?>,String>();
// anotherMeta 就是开发的插件的Meta类了
xxxxClassMap.put(StepMetaInterface.class,anotherMeta.class.getName());
PluginInterface anotherPlugin=new Plugin(
new String[]{"MergeField"},
StepPluginType.class,
StepMetaInterface.class,
"转换",
"插件的名字",
"插件的描述,不影响java执行",
"插件的图片,不影响java执行",
false,
false,
anotherClassMap,
empty,
null,
null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,anotherPlugin);
如此这般就能运行了
附上java调用stepMeta的完整代码
KettleEnvironment.init();
List<String> empty = Collections.emptyList();
// 这个map别复用了,下一个插件重新new一个,不然即使clear了,下一个插件也不能注册成功
Map<Class<?>,String> xxxxClassMap=new HashMap<Class<?>,String>();
// xxxxMeta 就是开发的插件的Meta类了
xxxxClassMap.put(StepMetaInterface.class,xxxxMeta.class.getName());
PluginInterface xxxxPlugin=new Plugin(
new String[]{"MergeField"},
StepPluginType.class,
StepMetaInterface.class,
"转换",
"插件的名字",
"插件的描述,不影响java执行",
"插件的图片,不影响java执行",
false,
false,
xxxxClassMap,
empty,
null,
null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,xxxxPlugin);
// 数据库连接元对象(连接名称,不必与kettle中配置的保持一致:数据库类型:连接方式(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();
// 转换元对象
TransMeta transMeta=repository.loadTransformation("tran的名称",directoryInterface,null,true,null);
// 转换
Trans trans = new Trans(transMeta);
// 执行转换
trans.execute(null);
// 等待转换执行结束
if(trans.getErrors()>0){
System.out.println("transformation error");
}else{
System.out.println("transformation successfully");
}
网友评论