2015-10-26 46 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代码来构建有效载荷。