Cordys BOP 4平臺開發入門實戰演練——For Each流程建模開發

肖永威發表於2015-04-21

關於For Each

    For Each是BPMN組結構,並且體現應該執行訊息內每個子單元的活動或子流程。For Each迴圈使用一個計數器,稱為一個詳盡描述重複執行相同活動的迭代器。For Each代表圖如下圖1所示。

    

                                                    圖1

    迭代器有下述3個數值:

  • 初始迭代器值
  • 增量值
  • 執行條件

    在執行條件失敗時迴圈結束。應複製對於結構中“Message Map”的遞迴元素(Element)的XPath去工作。


For Each迴圈流程實踐

(1)新建BPM流程

    按下圖2所示,用滑鼠圈上活動環節,點選滑鼠右鍵,在彈出選單中選中“Group as”,及後續彈出選中“For Each”,建立For Each組。

                                                               圖2

    拖拽與活動組相關的箭頭到For Each組邊界,調整好的流程圖如圖1所示。

(2)建立Message名稱為ApplyMsg

    在Message中Element為重複記錄,先定義Element為apply,在apply中再定義Element分別為name和data。如下圖3所示。

    

                  圖3

(3)新建測試XForm表單

    

                                     圖4

    在圖例4的XForm中新建兩個Input分別為名稱(Input1)和數量(Input2),拖拽繫結表單到活動環節上。


(4)配置For Each屬性Properties

    

                         圖5

    在For Each的屬性(Properties)頁面的General分頁中,需要在Iterator Name輸入框中定義迭代器名稱為iteratorName。再點選Select Condition輸入框中,如上圖5所示點選配置查詢圖示,彈出XPath Editor視窗。

(5)配置For Each條件

     

                                           圖6

    在XPath Editor介面,拖拽messagemap中的ApplyMsg到XPath視窗,刪除調其中的“text()”文字。為什麼呢?因為是傳入Message是多行記錄,是apply元素多條記錄。

(6)環節繫結Message

    在TestForEach活動環節上把表單上輸入框與Message繫結:name對應Input1,data對應Input2,如下圖7所示。

    

                                       圖7

    注意:需要定位到內部Element,體現出是迴圈多條記錄,針對傳入messagemap的例項(instance),其中的例項變數是iteratorName。這樣,按下圖8所示,第一步先拖拽“instance:iteratorName”到XPath視窗,第二步再拖拽“bpm:name”到前字串後面,第三步修改字串為:instance:iteratorName/bpm:name/text()。對於data元素,最後則為:instance:iteratorName/bpm:data/text()。

    

                                             圖8

    圖例8中,詳細操作過程如下:

    (第1步)instance:iteratorName/text()

    (第2步)bpm:ApplyMsg/bpm:apply/bpm:name/text()

    (第3步)手動編輯合併為:instance:iteratorName/bpm:name/text()

    含義是按instance:iteratorName變數迭代,取多重變數bpm:name/text()。

測試流程

(1)開始Debug流程

    在TestForEach流程建模介面,點選滑鼠右鍵,進入Bebug介面。

    

                                             圖9

(2)執行“Activity By Activity”傳入Message

<ApplyMsg xmlns="http://schemas.cordys.com/default">

  <def:apply xmlns:def="http://schemas.cordys.com/default">
    <def:name>PARAMETER</def:name>
    <def:data>PARAMETER</def:data>
  </def:apply>
</ApplyMsg>

    修改傳入引數如下:

<ApplyMsg xmlns="http://schemas.cordys.com/default">
  <def:apply xmlns:def="http://schemas.cordys.com/default">
    <def:name>1</def:name>
    <def:data>1</def:data>
  </def:apply>
  <def:apply xmlns:def="http://schemas.cordys.com/default">
    <def:name>2</def:name>
    <def:data>2</def:data>
  </def:apply>
</ApplyMsg>

(3)執行將彈出2次XForm介面
    迭代第一次:
    
                      圖10
    迭代第二次:
    
                            圖11
    For Each流程建模測試完成。

    由於作者水平有限,歡迎反饋討論。



詳盡操作參見:
 Cordys BOP 4平臺開發入門實戰演練——流程建模開發(BPM) 肖永威 2015.4

相關文章