OSB組件-for each

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里面也有兩條數據

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容