2016-05-31 159 views
0

我有一個迭代dss的調用響應的問題。我有2個服務器WSO2 ESB迭代DSS響應(json數組)

WSO2 ESB服務器(4.9.0) WSO2應用服務器(5.3.0)與數據服務(4.3.4)功能安裝

我做一個有效載荷

<payloadFactory media-type="xml"> 
    <format> 
     <p:valoresReport xmlns:p="ReportsDataService"> 
     <xs:uuid xmlns:xs="ReportsDataService">$1</xs:uuid> 
     </p:valoresReport> 
    </format> 
    <args> 
     <arg value="123456789"/> 
    </args> 
    </payloadFactory> 

並通過終點做一個呼叫

<call blocking="true"> 
    <endpoint key="ReportsDataServiceEndPoint"/> 
    </call> 

的迴應是:

<ReportRowSet xmlns="ReportsDataService"> 
    <reportRow> 
     <column1>1</column1> 
     <column2>2</column2> 
     <column3>3</column3> 
    </reportRow> 
    <reportRow> 
     <column1>columna 1</column1> 
     <column2>olumna 2</column2> 
     <column3>columna 3</column3> 
    </reportRow> 
</ReportRowSet> 

要讀取響應,我改變德爲messageType到JSON

<property name="messageType" scope="axis2" type="STRING" value="application/json"/> 

,並得到使用JSON-EVAL值。

<property expression="json-eval($.ReportRowSet.reportRow)" name="rows" 
    scope="default" type="STRING"/> 

我可以登錄屬性

<log level="custom"> 
    <property expression="$ctx:rows" name="ROWS"/> 
    </log> 

輸出:

[2016-05-31 16:21:38,489] INFO - LogMediator ROWS = [{"column1":1,"column3":3,"column2":2},{"column1":"columna 1","column3":"columna 3","column2":"olumna 2"}] 

但是當我嘗試迭代行,我不知道如何做到這一點(這種方式不工作)

<iterate continueParent="true" expression="$ctx:rows" 
    id="MyIterator" sequential="true"> 
    <target> 
     <sequence> 
     ... 

我也試過沒有成功(沒有改變消息類型):

<iterate continueParent="true" expression="//ReportRowSet/reportRow" 
    id="MyIterator" sequential="true"> 

什麼是做這種整合和迭代的正確形式。

我讓你我的DSS和順序:

ReportsDataService.dbs:[https://drive.google.com/open?id=0B44t8SdKZz79ellKVmpkM0t6Rmc]

GenerarReporteSequence.xml:https://drive.google.com/open?id=0B44t8SdKZz79YlkxMnNnNm8weGs]

回答

0

嘗試用下面的迭代器調解正確的命名空間,來樣,

 <iterate xmlns:ns1="ReportsDataService" id="MyIterator" expression="//ns1:ReportRowSet/ns1:reportRow" sequential="true"> 
     <target> 
      <sequence> 
       <log level="custom"> 
       <property name="col" expression="//ns1:column1"/> 
       </log> 
       <call> 
       <endpoint> 
        <http uri-template="http://endpoint.url"/> 
       </endpoint> 
       </call> 
      </sequence> 
     </target> 
    </iterate> 
+0

優秀!!!!那工作完美!!!!!謝謝!!! – cmarguello