天天看点

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

继续阅读