OSB组件-for each

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

  
    
    2  
     
       
          
        1  
        17N4V10-HW3-1-02  
        P321185A123G060849  
          
        2017-10-23  
        13:03:05  
        2  
        1  
        U2983  
        P321185A123G060849  
        组件物料超出预定值? 
        
       
          
        1  
        17N4V10-HW3-1-02  
        P321185A123G060850  
          
        2017-10-23  
        12:03:05  
        2  
        1  
        U2983  
        P321185A123G060849  
        组件物料超出预定值? 
       
     
   

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

  • 添加for each组件
OSB组件-for each_第1张图片
ni

OSB组件-for each_第2张图片

初始化for each组件有四个变量需要填
for each variable:该变量表示每次循环从数组里面取到的对象
in of variable:需要循环的变量
Indexed by varriable:保存每次循环的索引,从1开始计数
with total count in variable:保存数据大小

OSB组件-for each_第3张图片

P_RESULT是需要遍历的数组,其他变量可以自行指定
类比java里面循环数组的方式

for(int i=0;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里面创建一个命名空间

OSB组件-for each_第4张图片

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

  

xmlns就是命名空间的URI

修改xpath路径为

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

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

OSB组件-for each_第5张图片

测试运行

OSB组件-for each_第6张图片

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

你可能感兴趣的:(OSB组件-for each)