Можем ли мы установить массив в WSO2ESB?

В моем сценарии я хочу установить массив в WSO2ESB.

Я отправляю два параметра в базу данных и получаю количество строк, но мне нужна только одна строка.

Моя конфигурация

<target>
               <sequence>
                  <property name="partybranchid"
                            expression="get-property('partybranchid')"
                            scope="default"
                            type="STRING"/>
                  <payloadFactory>
                     <format>
                        <p:Select_MailDetails_Op xmlns:p="http://ws.wso2.org/dataservice">
                           <xs:assetid xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:assetid>
                           <xs:partybranchid xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:partybranchid>
                        </p:Select_MailDetails_Op>
                     </format>
                     <args>
                        <arg expression="get-property('assetid')"/>
                        <arg expression="get-property('partybranchid')"/>
                     </args>
                  </payloadFactory>
<log level="full"/>
                  <send receive="Mail_Seq">
                     <endpoint>
                        <address uri="http://localhost:9764/services/massetparametersetdetail_DataService/"
                                 format="soap11"/>
                     </endpoint>
                  </send>
               </sequence>
            </target>

и я получаю данные в этой последовательности:

<log><property xmlns:v="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd"
             name="primarymail" action="set"
             expression="//v:primarymail/text()"
             scope="default"
             type="STRING"/></log>
 <iterate xmlns:v="http://ws.wso2.org/dataservice"
            xmlns:ns="http://org.apache.synapse/xsd"
            id="Mail"
            expression="//v:Datalist">
      <target>
         <sequence>
            <property xmlns:v="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd"
             name="primarymail"
             expression="//v:primarymail/text()"
             scope="default"
             type="STRING"/>
           <property xmlns:ns="http://org.apache.synapse/xsd"
             name="assetname"
             expression="//assetname/text()"
             scope="default"
             type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd"
             name="assetcode"
             expression="//assetcode/text()"
             scope="default"
             type="STRING"/>
   <property xmlns:ns="http://org.apache.synapse/xsd"
             name="activityname"
             expression="//activityname/text()"
             scope="default"
             type="STRING"/>
   <property xmlns:ns="http://org.apache.synapse/xsd"
             name="username"
             expression="//username/text()"
             scope="default"
             type="STRING"/>
   <property xmlns:ns="http://org.apache.synapse/xsd"
             name="parametername"
             expression="//parametername/text()"
             scope="default"
             type="STRING"/>
   <property xmlns:ns="http://org.apache.synapse/xsd"
             name="uomcode"
             expression="//uomcode/text()"
             scope="default"
             type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd"
             name="tododetails"
             expression="fn:concat('AssetName:',get-property('assetname'),',','AssetCode:',get-property('assetcode'),',','ActivityName:',get-property('activityname'),',','UserName:',get-property('username'),',','ParameterName:',get-property('parametername'),',','UomCode:',get-property('uomcode'))"
             scope="default"
             type="STRING"/>
 <log><property xmlns:v="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd"
             name="primarymail" action="set"
             expression="//v:primarymail/text()"
             scope="default"
             type="STRING"/></log>
             </sequence>
      </target>
   </iterate>
   </sequence>

и я получаю ответ, как показано ниже, но я хочу отправить письмо только один раз.

Здесь мой мэйлид повторяется. Как я могу удалить этот почтовый идентификатор?

ответ, основная почта = [email protected]@[email protected]@[email protected]@[email protected]@[email protected]@myunisoft.com

Как я могу взять одиночную почту для этого?


person faisal shaik    schedule 12.07.2013    source источник
comment
В той последовательности, в которой вы получаете данные, вы можете поставить ‹log level=full› перед всем остальным и посмотреть, как выглядит ответ от assetsparametersetdetail_DataService. Возможно, вы перебираете не тот элемент. Если вы разместите ответное сообщение здесь (конечно, после удаления конфиденциальных данных), мы также сможем помочь с правильным xpath.   -  person keheliya    schedule 15.07.2013
comment
спасибо за повтор... это повторяется в соответствии с строкой в ​​базе данных, но мне это нужно как значения массива   -  person faisal shaik    schedule 15.07.2013


Ответы (1)


Ответ вашего веб-сервиса — это сообщение SOAP, и то, что вы получаете любому посреднику в ESB, — это конкретное входящее сообщение. Вы не можете напрямую иметь массив значений. – Один из вариантов — использовать посредник класса, извлекать нужные значения и устанавливать это значение в качестве свойства в контексте сообщения и использовать его.
 – если полезные данные ответа можно изменить в вашем сценарии, верните ответ с помощью известный разделитель и используйте операции xpath String, чтобы получить ваше значение.

person Subash Chaturanga    schedule 01.08.2013