jbpm3的timer开发问题

来源:互联网 发布:python 线程池 编辑:程序博客网 时间:2024/05/16 04:41

在高杰所著的  深入浅出JBMP  书做练习时遇到一个问题纠缠了很久,

所要练习的内容: jbpm 任务执行器,timer定时器,希望在任务实例产生30秒后,每隔20秒能在控制台循环输出 "触发test job timer”

流程图如上,定义如下

 

<start-state name="start-state1">
  <transition to="task-node1"></transition>
 </start-state>


 <task-node name="task-node1">
  <task name="test-task">
   <assignment actor-id="ziliang871118"></assignment>
  </task>
  <timer name="test job timer" duedate="30 seconds" repeat="20 seconds">
   <script>
    System.out.println("触发test job timer");
   </script>
  </timer>
  <transition to="end-state1"></transition>
 </task-node>


 <end-state name="end-state1"></end-state>

 

按照上述代码我写了一个测试类,

 

public static void main(String[] args) {

 

   JbpmConfiguration.getInstance().getJobExecutor().start();

  System.out.println("流程测试开始.......");
  JbpmContext jbpmContext = JbpmConfiguration.getInstance()
    .createJbpmContext();
  try {
   ProcessDefinition processDefinition = jbpmContext.getGraphSession()
     .findLatestProcessDefinition("asynctest");
   ProcessInstance pi = processDefinition.createProcessInstance();
   Token token = pi.getRootToken();
   token.signal();
   System.out.println("当前流程的节点名:" + token.getNode().getName());
     } finally {
   jbpmContext.close();
  }

 }

 

运行上述代码,输出结果如下:

 

当前流程的节点名:task-node1

 

并没有预想的 循环字符串输出, 纠结了很久,最后发现我的任务执行器和测试类写在了一个线程上,所以看不到想要的输出。

 

把上述的main方法 红色部分提出来单独开启一个任务执行器的线程,问题得到解决。

 

原创粉丝点击