2016-05-31 2 views
0

У меня есть проблема для повторения ответа на вызов dss. У меня есть 2 сервераWSO2 ESB Iterate over DSS response (json array)

сервер

WSO2 ESB (4.9.0) WSO2 Application Server (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"> 

Какая правильная форма для этой интеграции и итерации.

Я дал вам мой ДСС и последовательность:

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

превосходный !!!! что работает perfec !!!!! благодаря!!! – cmarguello

 Смежные вопросы

  • Нет связанных вопросов^_^