Junit測試調用子流程
下面的示例中測試在程式中調用其它程式的子流程的示例,需要加載兩個配置檔案
和
需要指定屬性
下面是調用的示例程式
程式輸出以下結果
Loading process BPMN2-CallActivity.bpmn2
我是子流程 subX=oldValue
證明子流程調用成功
Junit測試子流程執行過程中觸發的事件
下面的示例中測試在子流程執行的過程中觸發各種事件
流程如下圖
在執行到hello1的時候變量x是沒有值的,在執行hello2的時候指派,在執行到hello3的時候變量能夠輸出值
測試程式如下:
輸出的結果如下:
Loading process BPMN2-SubProcess.bpmn2
x = null
變量改變之前==>[ProcessVariableChanged(id=2:x; instanceId=1:x; oldValue=null; newValue=Hello; processName=Minimal SubProcess; processId=SubProcess)]
變量改變以後==>[ProcessVariableChanged(id=2:x; instanceId=1:x; oldValue=null; newValue=Hello; processName=Minimal SubProcess; processId=SubProcess)]
x = Hello
Goodbye World
流程啟動以後==>[ProcessStarted(name=Minimal SubProcess; id=SubProcess)]
Junit測試多流程循環
下面的示例中主要測試的是多流程循環的示例
界面流程如下
執行的測試程式如下:
執行結果如下
Loading process BPMN2-MultiInstanceLoopCharacteristicsProcess.bpmn2
item = First Item
item = Second Item
Junit測試異常事件處理流程
下面的示例中主要測試的是在執行到子流程中的異常的時候的處理流程
程式流程如下:
首先執行子流程中的内容,預設遇到錯誤,将觸發錯誤事件,然後執行對應的事件,輸出内容
執行完結果如下所示:
Loading process BPMN2-EscalationBoundaryEvent.bpmn2
執行錯誤流程,觸發事件 Escalation handled
Junit測試異常事件處理流程2
下面的示例中主要測試異常處理,同上例基本相同都是執行到錯誤結點的時候自動觸發事件,但是加了一個選擇分支
程式流程示例如圖
測試程式如下所示
執行結果如下:
Loading process BPMN2-EscalationBoundaryEventInterrupting.bpmn2
Escalation handled
Junit測試定時器邊界事件
下面的示例中主要測試定時器邊界事件
程式流程如下所示:
在屬性中設定逾時時間是500ms,那麼在下面的程式中設定讓程式暫停一下執行,觸發逾時事件
設定為1000,那麼就将執行錯誤處理事件
執行的結果如下
Loading process BPMN2-TimerBoundaryEventDuration.bpmn2
Timer handled
Junit測試定時器逾時處理
下面的兩個示例和上面基本上沒有差別,隻是強調了一下逾時處理的周期和邊界事件
直接看示例程式吧
分别的執行結果如下:
1)同上示例基本相同
Loading process BPMN2-TimerBoundaryEventCycle1.bpmn2
2)執行兩次逾時事件
Loading process BPMN2-TimerBoundaryEventCycle2.bpmn2