Scripting wso2 esb PayloadFactory如何支持阵列

Scripting wso2 esb PayloadFactory如何支持阵列,scripting,wso2,wso2esb,esb,Scripting,Wso2,Wso2esb,Esb,在ESB中,我们可以使用payloadFactory创建请求。但payload factory是一种预先配置的json格式,并用value替换placehold。 如果请求包含一个数组,则非常困难。有什么建议吗? 有效载荷工厂样品 <payloadFactory media-type="json"> <format> { "tableId":"$1", "mi

在ESB中,我们可以使用payloadFactory创建请求。但payload factory是一种预先配置的json格式,并用value替换placehold。 如果请求包含一个数组,则非常困难。有什么建议吗? 有效载荷工厂样品

<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>

{
“tableId”:“$1”,
“最低”:“$2”,
“最大”:“$3”
}

对于更动态/复杂的负载修改,您可以使用,您可以在其中编写一些javascript代码来构建负载。

就像Rajeev已经提到的那样,这可以通过使用脚本中介来实现。我这样做是为了实现分页功能,从包中的db读取整个内容

下面是我所做的一个例子,希望也能有所帮助

<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);
打印(“开始JS”);
var pageSize=500;
var pagesRest=mc.getProperty(“结果计数”)%pageSize;
var pages=((mc.getProperty(“result_count”)-pagesRest)/pageSize)+1;
var xmlResponse=mc.getPayloadXML();
var rowCount=mc.getProperty(“结果计数”);
打印(“行计数:+行计数+”页:+pages);
变量行数据={
行:[]
};
var resultCount=0;
对于(变量i=1;i=pages;i++)
{
打印(“建筑页面”+i);
rowData.rows[i]={};
rowData.rows[i].from=“”+(i-1)*页面大小;
rowData.rows[i]。to=“”+(页面大小*i);
rowData.rows[i].orderBy=“caseid”;
结果计数+=页面大小;
}
mc.setPayloadJSON(rowData);

问候 马丁