在kettle使用java代码模块需要注意的一些事项,以防忘记。
首先需要继承processRow方法,跟java的main方法类似,代码从这里开始执行,并且在里边读取跟保存变量。
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws Exception
{
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}
r = createOutputRow(r, data.outputRowMeta.size());
String appid = get(Fields.In, "appid").getString(r);
String appkey = get(Fields.In, "appkey").getString(r);
String city_code = get(Fields.In, "city_code").getString(r);
String date = get(Fields.In, "date").getString(r);
Map body = new HashMap();
body.put("city_code", city_code);
body.put("date", date);
String sign = signRequest(appid, body, appkey);
get(Fields.Out,"sign").setValue(r,sign);
logBasic("sign:"+sign);
putRow(data.outputRowMeta, r);
return true;
}
如上,前几行代码不变 读取变量使用
get(Fields.In, "appid");
保存变量使用get(Fields.Out,"sign").setValue(r,sign);
最后不要忘记putRow(data.outputRowMeta, r);及return true;
输入日志可以使用logBasic("sign:"+sign);
上面import java.util.*;
需要的jar包放入kettle安装目录的lib目录下
底下变量名称跟保存变量名称一样,如下图所示