Kettle循環分批執行Rest client請求

業務需求,首先取到數據庫中進件單號列表,發送Rest client請求,獲取java執行的結果,根據結果更新數據庫中進件信息。每次發送的進件單號過多的話,返回的信息量太大,代碼報錯。所以採用循環,將進件單號分批 執行。整體如下:

javaScript代碼如下:


    var currPage = parent_job.getVariable("CURR_PAGE");// 從job獲取當前頁數值(當前第幾頁)

    var total_count = parseInt(parent_job.getVariable("count(no)")); // 從job中獲取本次導入的總條數
    var page_size = parseInt(parent_job.getVariable("PAGE_SIZE")); // 分頁條數
    var total_page = parent_job.getVariable("TOTAL_PAGE"); // 本次導入的總分頁數

    if(total_page==null||total_page==undefined||total_page==""){
         total_page = total_count / page_size;
         if(total_count % page_size > 0){
               ++total_page
         }
           parent_job.setVariable("TOTAL_PAGE",total_page);
         }else{
        total_page = parseInt(total_page);
        }

    if(currPage==null||currPage==undefined||currPage==""){
        currPage = 1;
    }else{
        currPage = parseInt(currPage);
    }

    if(currPage>total_page){
        false;
     }else{
        var start = (currPage -1 ) * page_size;
        parent_job.setVariable("START_ROW",start);
        parent_job.setVariable("CURR_PAGE",currPage+1);
        true;
     }

  提交java模塊:

表輸入中,每次分批:

SELECT
 no
FROM afc_order_info
where 
is_work_flow_done='0'
limit
${START_ROW},${PAGE_SIZE}
 

通過JSON Output模塊,將結果封裝爲Rest Client的入參。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章