天天看點

jbpm5.1介紹(9)

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

繼續閱讀