【问题】
我在Eclipse中创建了一个.bpmn流程文件,里面使用了一个Timer Event,后面跟了一个Script Task打印一句话,但是发现每次只执行一遍,没有循环反复执行。
【原因】
(1)还没等Timer执行,进程就被dispose()方法关闭了,所以需要增加一个sleep()调用
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); // start a new process instance ksession.startProcess("com.sample.bpmn.TimerEvent"); Thread.sleep(8000); ksession.dispose();
(2).bpmn流程文件的结束事件的Terminate属性设置成true了,应该设置成false。因为如果设置成true,第一遍执行到结束事件时进程就关掉了,所以就没发让Timer循环执行了。
所以应该 使用这种:
<endEvent id="_2" name="End" />
而 不是这种:
<endEvent id="_3" name="EndProcess" > <terminateEventDefinition /> </endEvent>