jbpm3的timer开发问题

    技术2024-10-30  23

    在高杰所著的  深入浅出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方法 红色部分提出来单独开启一个任务执行器的线程,问题得到解决。

     

    最新回复(0)