我们如何使用wso2esb计算Iterator中的对象

时间:2013-06-06 07:13:15

标签: wso2 wso2esb wso2dss

我从我的前端获取数组列表,我需要使用Wso2esb和dss插入到表中我几乎已经使用iterator完成了该功能。我需要在插入该数组列表时给予前端响应。我希望计算任何迭代次数的任何对象  我的代码是这样的

<iterate continueParent="true"
                        id="QuestionListMobile"
                        expression="//QuestionsList">
                  <target>
                     <sequence>
                        <property name="ttemplateformid"
                                  expression="get-property('ttemplateformid')"
                                  scope="default"
                                  type="STRING"/>
                        <payloadFactory>
                           <format>
                              <p:Insert_ttemplatedetails_Mobile_Op xmlns:p="http://ws.wso2.org/dataservice">
                                 <xs:templateformid xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:templateformid>
                                 <xs:formtemplatesectiondetailid xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:formtemplatesectiondetailid>
                                 <xs:questionid xmlns:xs="http://ws.wso2.org/dataservice">$3</xs:questionid>
                                 <xs:weightage xmlns:xs="http://ws.wso2.org/dataservice">0</xs:weightage>
                                 <xs:rank xmlns:xs="http://ws.wso2.org/dataservice">$4</xs:rank>
                                 <xs:score xmlns:xs="http://ws.wso2.org/dataservice">$5</xs:score>
                                 <xs:remarks xmlns:xs="http://ws.wso2.org/dataservice">$6</xs:remarks>
                                 <xs:feedback xmlns:xs="http://ws.wso2.org/dataservice">$7</xs:feedback>
                              </p:Insert_ttemplatedetails_Mobile_Op>
                           </format>
                           <args>
                              <arg expression="get-property('ttemplateformid')"/>
                              <arg expression="//sectionQuestionMapId/text()"/>
                              <arg expression="//QuestionId/text()"/>
                              <arg expression="//Rank/text()"/>
                              <arg expression="//answer/text()"/>
                              <arg expression="//remark/text()"/>
                              <arg expression="//Feedback/text()"/>
                           </args>
                        </payloadFactory>
                        <log level="full"/>
                        <send receive="QuestionsInsertion_Seq3">
                           <endpoint>
                              <address uri="http://localhost:9764/services/ttemplatesectiondetail_DataService/"
                                       format="soap11"/>
                           </endpoint>
                        </send>
                        <log level="full"/>
                     </sequence>
                  </target>
               </iterate>

我做得很好我怎么知道上面有多少阵列

<sequence xmlns="http://ws.apache.org/ns/synapse"
          name="QuestionsInsertion_Seq3"
          onError="fault">
   <property name="FORCE_ERROR_ON_SOAP_FAULT"
             value="true"
             scope="axis2"
             type="STRING"/>
   <property xmlns:f="http://ws.wso2.org/dataservice"
             xmlns:ns="http://org.apache.synapse/xsd"
             name="ttemplatedetailid"
             expression="//f:ttemplatedetailid/text()"
             scope="default"
             type="STRING"/>
   <log>
 <property xmlns:ns="http://org.apache.synapse/xsd"
             name="Total"
             expression="count(//QuestionId/text())"
             scope="default"
             type="STRING"/>
      <property xmlns:f="http://ws.wso2.org/dataservice"
                xmlns:ns="http://org.apache.synapse/xsd"
                name="ttemplatedetailid"
                expression="//f:ttemplatedetailid/text()"/>
   </log>

我正在记录QuesionId计数,但我没有得到我得到的总数只有1.0 我需要只计算代理或按顺序计数 提前谢谢

1 个答案:

答案 0 :(得分:0)

您无法计算迭代次数。您现在正在尝试的是,您在接收序列中获得DS响应,并从您尝试读取值的响应中获得。因此,请检查您的回复,并查看从端点获取的内容