2015-10-26 64 views
2

在ESB中,我們可以使用payloadFactory創建一個請求。但是有效載荷工廠是預先配置的json格式,並替換了有價值的位置。 如果請求包含一個數組,這是非常困難的。任何建議? 有效載荷工廠樣品wso2 esb PayloadFactory如何支持數組

<payloadFactory media-type="json"> 
      <format> 
      { 
       "tableId":"$1", 
       "min":"$2", 
       "max":"$3" 
      } 
      </format> 
      <args> 
       <arg evaluator="xml" expression="$func:tableId"/> 
       <arg evaluator="xml" expression="$func:min"/> 
       <arg evaluator="xml" expression="$func:max"/> 
      </args> 
     </payloadFactory> 

回答

4

就像Rajeev已經提到的那樣,這可以使用腳本介體來實現。我已經做了這個分頁功能來從包中的數據庫讀取整個內容。

下面是我做的一個例子,希望對你有所幫助。

<script language="js">print("Start JS"); 
     var pageSize = 500; 
     var pagesRest = mc.getProperty("result_count") % pageSize; 
     var pages = ((mc.getProperty("result_count")-pagesRest)/pageSize)+1; 
     var xmlResponse = mc.getPayloadXML(); 
     var rowCount= mc.getProperty("result_count"); 
     print("rowCount: " + rowCount+" pages:"+pages); 
     var rowData = { 
      rows : [] 
     }; 
     var resultCount=0; 

     for(var i=1;i&lt;=pages;i++) 
     { 
      print("Building page "+i); 
      rowData.rows[i] = {}; 
      rowData.rows[i].from = "" + (i-1)*pageSize ; 
      rowData.rows[i].to= "" + (pageSize * i); 
      rowData.rows[i].orderBy = "caseid"; 

      resultCount+=pageSize; 
     } 

     mc.setPayloadJSON(rowData); 

問候 馬丁

+0

非常感謝,這是非常有幫助 – richard

1

更多動態/複雜的有效載荷修改就可以使用Script Mediator在這裏你可以寫一些JavaScript代碼來構建有效載荷。