美文网首页
OSB组件-for each

OSB组件-for each

作者: 阿三君 | 来源:发表于2017-10-25 10:54 被阅读0次

for each是osb里面用来处理循环的一个组件,学编程的第一节课我们就知道程序设计的三要素,顺序、循环和判断。osb服务编排就相当于一个可视化程序设计平台,只不过这个平台操作的对象是接口和服务,同样需要程序设计三要素,for each就是实现三要素里面的循环。
假设变量P_RESULT代码如下:

<soap-env:Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">  
  <ZZYUE_RFC_PP_ZXBD_NEW.Response xmlns="urn:sap-com:document:sap:rfc:ZZYUE_RFC_PP_ZXBD_NEW.response">  
    <S_SUBRC>2</S_SUBRC>  
    <OUT_REC> 
      <item> 
        <MANDT/>  
        <ZMODE>1</ZMODE>  
        <MATNR>17N4V10-HW3-1-02</MATNR>  
        <IDNRK>P321185A123G060849</IDNRK>  
        <YBBH/>  
        <ERSDA>2017-10-23</ERSDA>  
        <ERTIM>13:03:05</ERTIM>  
        <FLAG>2</FLAG>  
        <QUNT>1</QUNT>  
        <ERNAM>U2983</ERNAM>  
        <BCODE>P321185A123G060849</BCODE>  
        <BINFO>组件物料超出预定值?</BINFO> 
      </item>  
      <item> 
        <MANDT/>  
        <ZMODE>1</ZMODE>  
        <MATNR>17N4V10-HW3-1-02</MATNR>  
        <IDNRK>P321185A123G060850</IDNRK>  
        <YBBH/>  
        <ERSDA>2017-10-23</ERSDA>  
        <ERTIM>12:03:05</ERTIM>  
        <FLAG>2</FLAG>  
        <QUNT>1</QUNT>  
        <ERNAM>U2983</ERNAM>  
        <BCODE>P321185A123G060849</BCODE>  
        <BINFO>组件物料超出预定值?</BINFO> 
      </item> 
    </OUT_REC> 
  </ZZYUE_RFC_PP_ZXBD_NEW.Response> 
</soap-env:Body>

其中OUT_REC下有多个item,需要使用for each循环遍历所有item

  • 添加for each组件
ni
初始化for each组件有四个变量需要填
for each variable:该变量表示每次循环从数组里面取到的对象
in <XPath> of variable:需要循环的变量
Indexed by varriable:保存每次循环的索引,从1开始计数
with total count in variable:保存数据大小
P_RESULT是需要遍历的数组,其他变量可以自行指定
类比java里面循环数组的方式
for(int i=0;i<result.size;++i){
      Object item=result.get(i);
}

P_ITEM相当于java里面的item
P_RESULT相当于java 里面的result
P_INDEX相当于java里面的i只不过osb里面从1开始计数
P_COUNT相当雨java里面的result.size
注意到上面XPath变量我们还未设置
P_RESULT表示的是一个完整的xml代码,xpath就是需要指定数组元素在该xml里面的路径,在这里面数组的路径为

soap-env:Body/ZZYUE_RFC_PP_ZXBD_NEW.Response/OUT_REC/item

soap-env:Body是xml跟路径,可以用点.表示

./ZZYUE_RFC_PP_ZXBD_NEW.Response/OUT_REC/item

另外ZZYUE_RFC_PP_ZXBD_NEW.ResponseOUT_REC缺少命名空间,解决但方法是在xpath里面创建一个命名空间


名字可以自行指定,URI可以看下上面xml的代码

 <ZZYUE_RFC_PP_ZXBD_NEW.Response xmlns="urn:sap-com:document:sap:rfc:ZZYUE_RFC_PP_ZXBD_NEW.response"> 

xmlns就是命名空间的URI

修改xpath路径为

./cus:ZZYUE_RFC_PP_ZXBD_NEW.Response/cus:OUT_REC/cus:item

修改服务编排流程,增加一个report组件观察各个变量

测试运行


P_INDEX=2是因为每次循环P_INDEX都会被重新设置,因为有两次循环所以最后值为2
P_COUNT=2表示数组大小为2
Report里面也有两条数据

相关文章

网友评论

      本文标题:OSB组件-for each

      本文链接:https://www.haomeiwen.com/subject/winfpxtx.html