运行代码,job名为“Job测试01”可以跑起来。但是当我调用job.stop()或job.stopAll()无法停止该job,原因是代码里job重新new了一个,不再是原来的job,现在请教下,kettle是如何保存原先的job的,该怎么去停止该job。
public static void main(String[] args) {
try {
//初始化kettle环境
KettleEnvironment.init();
//创建资源库对象,此时的对象还是一个空对象
KettleDatabaseRepository repository = new KettleDatabaseRepository();
//创建资源库数据库对象,类似我们在spoon里面创建资源库
DatabaseMeta dataMeta = new DatabaseMeta("1111", "Oracle", "Native", "172.16.7.12", "datacache", "1521", "654321", "123456");
//资源库元对象,名称参数,id参数,描述等可以随便定义
KettleDatabaseRepositoryMeta kettleDatabaseMeta = new KettleDatabaseRepositoryMeta("111", "111", "111",dataMeta);
//给资源库赋值
repository.init(kettleDatabaseMeta);
//连接资源库
repository.connect("admin","admin");
//根据变量查找到模型所在的目录对象,此步骤很重要。
RepositoryDirectoryInterface directory = repository.findDirectory("/");
//创建ktr元对象
JobMeta jobMeta = repository.loadJob("Job测试01", directory, null, null);
//创建ktr
Job job = new Job(repository, jobMeta);
System.out.println(job.getJobname()+job.getStatus());
//执行ktr
job.start();
//job.stop();
//等待执行完毕
//trans.waitUntilFinished();
job.waitUntilFinished();
if(job.getErrors()>0)
{
System.err.println("job run Failure!");
}
else
{
System.out.println("job run successfully!");
}
} catch (KettleException e) {
e.printStackTrace();
}
}
运行代码,job名为“Job测试01”可以跑起来。但是当我调用job.stop()或job.stopAll()无法停止该job,原因是代码里job重新new了一个,不再是原来的job,现在请教下,kettle是如何保存原先的job的,该怎么去停止该job。
2013年6月27日 11:05