Kettle调用纷享销客部门和用户和用户接口,来把对应的部门和用户存入本地数据库。
parent_job.setVariable("corpAccessToken", rows[0].getString("corpAccessToken", ""));
parent_job.setVariable("corpId", rows[0].getString("corpId", ""));
true
var prevRow=previous_result.getRows();//获取上一个传递的结果
if (prevRow == null &&(prevRow.size()=0))
{
false;
}else{
parent_job.setVariable("tables", prevRow);//ArrayList存储表名变量
parent_job.setVariable("size", prevRow.size());//存储执行表的总数量
parent_job.setVariable("i", 0);//循环控制变量
parent_job.setVariable("departmentId", prevRow.get(0).getString("id", ""));
true;
}
var prevRow=previous_result.getRows();
var size = new Number(parent_job.getVariable("size"));
var i = new Number(parent_job.getVariable("i"))+1;
if(i<size){
parent_job.setVariable("departmentId", prevRow.get(i).getString("id", ""));
}
parent_job.setVariable("i",i);
true;
body 为请求携带的参数:{“appId”: “”,“appSecret”:"",“permanentCode”:""}
url 为获取access_token的接口:https://open.fxiaoke.com/cgi/corpAccessToken/get/V2
返回的json格式如下:具体可参考文档http://open.fxiaoke.com/wiki.html#artiId=17
{
"errorCode": 0,
"errorMessage": "success",
"corpAccessToken": "CORP_ACCESS_TOKEN",
"corpId": "CORP_ID",
"expiresIn": 7200
}
获取job中传过来的变量corpid,corpAccessToken
拼接参数body
处理接口返回的json,详细见文档http://open.fxiaoke.com/wiki.html#artiId=20
用户转换,通过循环传入的部门id,去查询该部门下的用户,并插入到数据库。
接口描述见文档:http://open.fxiaoke.com/wiki.html#artiId=22
var body = '{"corpAccessToken":"'+corpAccessToken+'","corpId":"'+corpId+'","departmentId":'+departmentId+',"fetchChild":'+fetchChild+'}';
是个判断,因为部门下可能存在没有用户,如果主键null去进行插入更新操作,就会报错。所以加了这个判断
未详细介绍的可参考我的另外两篇博客
Kettle循环获取结果集
Kettle循环获取结果集中的数据并传入转换里面