先看流程

java ktr 调用kettle文件 kettle调用接口_java ktr 调用kettle文件

在调用接口之前首先先需要知道一些必要的参数

url:就是接口地址

body:相当于sql语句中的where条件(select * from dual where body=)

再不明白请看图,其中百度就相当于body

java ktr 调用kettle文件 kettle调用接口_java ktr 调用kettle文件_02

token:就相当于打开接口的钥匙,URL就是门,想进门你就得有钥匙,请看具体解释

java ktr 调用kettle文件 kettle调用接口_当前页_03

关于这个token看具体情况,有的接口需要token,有的接口不需要,我展示的这个接口需要token但是他会一直在变,苦苦找寻办法没有解决,最后让做ESB的同事给我代理出来了

page:从第几页开始

size:每页多少条数据步骤一:

java ktr 调用kettle文件 kettle调用接口_数据库_04

DELETE FROM WR_EXPENSE_APPLY WHERE SUBSTR(submittedDate,0,4) = TO_CHAR(SYSDATE,'yyyy')

====================================================================

步骤二:

java ktr 调用kettle文件 kettle调用接口_数据库_05

===================================================================步骤三设置变量:

java ktr 调用kettle文件 kettle调用接口_java ktr 调用kettle文件_06

====================================================================步骤四获取变量:

java ktr 调用kettle文件 kettle调用接口_数据_07

====================================================================

java ktr 调用kettle文件 kettle调用接口_java ktr 调用kettle文件_08

====================================================================

java ktr 调用kettle文件 kettle调用接口_java ktr 调用kettle文件_09

// 获取同步时间区间、开始页、每页行数
var startDate = getVariable("startDate","");
var endDate = getVariable("endDate","");
var page = getVariable("page","");
var size = getVariable("size","");

//var status = getVariable("status","");

//var useLastModifiedDate = getVariable("useLastModifiedDate","");

var companyOid = getVariable("companyOid","");

// 拼接请求体内容
var body = '{"startDate":"'+ startDate +'","endDate":"'+ endDate +'","page":'+ page +',"size":'+ size +',"companyOid":'+ companyOid +'}';
//"useLastModifiedDate":'+ useLastModifiedDate +',

====================================================================

java ktr 调用kettle文件 kettle调用接口_java ktr 调用kettle文件_10

这里的写日志看个人喜好吧,我是为了测试有没有传参==================================================================

java ktr 调用kettle文件 kettle调用接口_数据库_11

这里的result为body输出内容存放的字段,比如一千条数据存放在了result字段里,为一行数据

===================================================================

重头戏!!!

java ktr 调用kettle文件 kettle调用接口_java ktr 调用kettle文件_12

获取的数据为json格式那么就需要,json解析,详见图中"字段"===================================================================

java ktr 调用kettle文件 kettle调用接口_数据库_13


最后表输出就不用说了

=================================================================

步骤五:循环页数取数据

java ktr 调用kettle文件 kettle调用接口_字段_14

// 获取当前页 var page = parent_job.getVariable("page"); page ++; parent_job.setVariable("page",page); true;====================================================================

java ktr 调用kettle文件 kettle调用接口_字段_15

====================================================================

java ktr 调用kettle文件 kettle调用接口_数据库_16

很多童鞋就要问了,我怎么知道接口返回的数据有多少页啊,说实话我也不知道,找了很多办法没解决
最后我只能瞎编一个字段用来存放页数,页数也是我自己估算出来的(设置变量的count字段,我设置了40页)

java ktr 调用kettle文件 kettle调用接口_当前页_17

===================================================================

最后一个问题设置变量的时候怎么设置带有list集合的参数?

简单来说就是:请看下图:

java ktr 调用kettle文件 kettle调用接口_当前页_18

解决方法:

java ktr 调用kettle文件 kettle调用接口_当前页_19


没错就是设置变量,直接在这个字段上把条件写死,再去获取变量,完美解决,很笨,但很实用====================================================================

最后附一张图,

java ktr 调用kettle文件 kettle调用接口_当前页_20