java调用kettle中的资源库文件(job\trans)

废话不多说直接上代码

连接资源库

	/**
	 * @author 小强
	 * 配置资源库环境  并接连接的资源库 
	 **/
	public static Object RepositoryCon() throws KettleException{
		//初始化
		//EnvUtil.environmentInit();
		KettleEnvironment.init();
		//数据库连接元对象								
		DatabaseMeta dataMeta = new DatabaseMeta("ETL", "MS SQL Server", "Native(JDBC)", "127.0.0.1", "ETL", "1433", "sa", "sa");
		//数据库形式的资源库元对象
		KettleDatabaseRepositoryMeta repInfo = new KettleDatabaseRepositoryMeta();
		//
		repInfo.setConnection(dataMeta);
		
		//数据库形式的资源库对象
		KettleDatabaseRepository rep = new KettleDatabaseRepository();
		//用资源库元对象初始化资源库对象
		rep.init(repInfo);
		//连接到资源库
		rep.connect("admin", "admin");//默认的连接资源库的用户名和密码
		if(rep.isConnected()){
			System.out.println("连接成功");
			return rep;
		}else{
			System.out.println("连接失败");
			return null;
		}
		
	}
根据jobName调用指定的job

	/**
	 * @author 小强
	 * 根据指定的资源库对象及job名称   运行指定的job
	 * */
	public static void runJob(KettleDatabaseRepository rep,String jobName){
		
	try{
			RepositoryDirectoryInterface dir = rep.findDirectory("/publish/job");//根据指定的字符串路径 找到目录
			//加载指定的job
			JobMeta jobMeta = rep.loadJob(rep.getJobId(jobName, dir), null);
			Job job = new Job(rep, jobMeta);
			//设置参数
			jobMeta.setParameterValue("method", "update");
			jobMeta.setParameterValue("tsm5", "07bb40f7200448b3a544786dc5e28845");
			jobMeta.setParameterValue("args", " {'fkid':'07bb40f7200448b3a544786dc5e28845','svctype':'Diffwkrlifehelp','content':'更新3','sysu<span style="white-space:pre">								</span>uid':'01ee0e61f357476b8dbb4be49ddecc77','uid':'1033','role':'3999','posi':'2999'}");
			
			job.setLogLevel(LogLevel.ERROR);
			//启动执行指定的job
			<span style="color:#ff0000;">job.run()</span>;
			job.waitUntilFinished();//等待job执行完;
			job.setFinished(true);
			System.out.println(job.getResult());	
	}catch (Exception e) {
		e.printStackTrace();
		}	
}

根据trans名称调用指定的转换

	/**
	 * @author 小强
	 * 
	 * @param rep  资源库对象
	 * @param transName 要调用的trans名称
	 * 
	 * 调用资源库中的trans
	 * 
	 * */
	public static void runTrans(KettleDatabaseRepository rep,String transName){
		
		try{
			RepositoryDirectoryInterface dir = rep.findDirectory("/publish/tsf");//根据指定的字符串路径 找到目录
			TransMeta tmeta = rep.loadTransformation(rep.getTransformationID(transName, dir), null);
			//设置参数
			//tmeta.setParameterValue("", "");
			Trans trans = new Trans(tmeta);
			trans.execute(null);//执行trans
			trans.waitUntilFinished();
			if(trans.getErrors()>0){
				System.out.println("有异常");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}



程序入口

	/**
	 * @author 小强
	 * 入口
	 * **/
	public static void main(String[] arg) throws KettleException{
		Object obj = RepositoryCon();
		if(obj!=null){//资源库连接成功
			//runJob((KettleDatabaseRepository) obj,"job_lifehelp");//调用指定的job
			runTrans((KettleDatabaseRepository) obj, "java_trans_test");//调用指定的tansformation
		}
			
	}



解释:

kettle中目录结构如图:

job中参数如图:


所以上文中有:“/publish/job”目录 以及 JobMeta参数args,method,tsm5等值;  

DatabaseMeta的配置参照下图:




  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值