立即注册 登录
About云-梭伦科技 返回首页

tntzbzc的个人空间 https://www.aboutyun.com/?87 [收藏] [复制] [分享] [RSS]

日志

Java调用自定义开发的Kettle 6.1 plugin插件

热度 1已有 2464 次阅读2016-9-28 17:03

在初始化

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");
}










路过
1

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条