scripting - wso2 esb PayloadFactory如何支持数组

标签 scripting wso2 esb wso2-esb

在ESB中,我们可以使用payloadFactory创建请求。但有效负载工厂是预先配置的json格式,并用值替换占位符。 如果请求中包含数组,那就非常困难了。有什么建议吗? 有效负载工厂示例

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

最佳答案

就像 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);

问候 马丁

关于scripting - wso2 esb PayloadFactory如何支持数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33343152/

相关文章:

使用ESB和消息中间件的IPC设计

linux - 如何生成一个新终端并使用 shell 脚本在其上运行一些命令?

python - 同情如何运作?它如何与交互式 Python shell 交互,交互式 Python shell 是如何工作的?

tomcat - 从身份服务器验证的应用程序调用 Web 服务

wso2 - 如何为 WSO2 的 API 发布者中的资源禁用 OAuth2?

c++ - 编写简单的 WSO2/C++ Web 服务客户端时崩溃

esb - 为什么微服务架构不基于企业服务总线?

linux - 以文字模式从另一个脚本编写 bash 脚本

linux - Bash 不删除前导空格

java - 使用 Mule ESB 路由 Web 服务调用的示例