xieccheng 2010-03-21 18:16
浏览 296
已采纳

JBPM 4.3 调用executionService.signalExecutionById之后并没有走到下一个state

我最近刚刚学习JBPM 4.3, 照着xyz20003的用户指南写了一个小的列子,如下:

 

 

processInstance = executionService.startProcessInstanceByKey("abcdefg",variables);

Execution exec = processInstance.findActiveExecutionIn("state1");

executionService.signalExecutionById(exec.getId(), "to end1");

Assert.assertTrue(processInstance.isEnded());

 <process name="simplea" key ="abcdefg" xmlns="http://jbpm.org/4.3/jpdl">

   <start name="start1" g="280,48,48,48">
      <transition name="to state1" to="state1" g="-59,-17"/>
   </start>
   <end name="end1" g="272,261,48,48"/>
   <state name="state1" g="269,156,92,52">
      <transition name="to end1" to="end1" g="-47,-17"/>
   </state>
</process>

最终junit判断processInstance.isEnded() 为false;

然后我重新修改代码打印调试信息

 

 

 

processInstance = executionService.startProcessInstanceByKey("abcdefg",variables);

Execution exec = processInstance.findActiveExecutionIn("state1");

executionService.signalExecutionById(exec.getId(), "to end1");

Set<String> activityNames = processInstance.findActiveActivityNames();
if (activityNames == null) {
    System.out.println("current activityNames is null" );
}
else {
    for (String name: activityNames) {
    System.out.println("activity name is "+name);
        }
}

Assert.assertTrue(processInstance.isEnded());

打印了activity name is state1

 

我想问的是:

executionService.signalExecutionById(exec.getId(), "to end1"); 这个语句不是会让流程走到下面一个state吗,为何触发之后状态还是active,怎么样走到end节点或者说下一个节点呢?

 

  • 写回答

5条回答 默认 最新

  • javatyper 2010-03-22 14:47
    关注

    对processInstance重新赋值就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题