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条)

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条