测试Execution.moveTo()方法

jbpm4中moveto的源代码:
public class ExecutionImpl extends ScopeInstanceImpl implements ClientProcessInstance,
  ActivityExecution, EventListenerExecution {
...
     /** persistent activity reference */
      protected String activityName;
...
   public void moveTo(ActivityImpl destination) {
       // move the execution to the destination
       setActivity(destination);
       transition = null;
     }
...
    public void setActivity(ActivityImpl activity) {
    this.activity = activity;
    if (activity!=null) {
      this.activityName = activity.getName();
    }
    else {
      this.activityName = null;
    }
  }
}

 

从源代码来看ExecutionImpl.只是把executionimpl的activityName重新赋值.

如果运行的moveto方法的环境是在事务环境内(如放在用户自定义的命令中或者整合ssh后在spring的事务拦截范围内),则对应的结果就是,jbpm4中的jbpm4_execution表的ACTIVITYNAME_字段设置成activityName.

如果运行的moveto方法的环境是不在事务环境内(如在自己写的TestCase中调用),则什么不发生,因为没有持久化.

现在设计流程定义如下:

     开始->task1->task2->task3->end (参与者分别为task1:user1,task2:user2,task3:user3)

经过测试发现在事务环境内运行,当前流程实例的活动节点在task3时,获取executionIpml,调用executionIpml.moveto(),参数传入ActivityImpl,moveTo到task1.

我希望的结果是当前活动节点为task1,用户user1的taskService.findPersonalTasks("user1")能找到任务,但是事实是user1的代办列表找不到任务.而用户user3的taskService.findPersonalTasks("user1")能找到任务.

    查看jbpm4的数据库,会发现,除了jbpm4中的jbpm4_execution表的ACTIVITYNAME_字段设置成task1,其他包括jbpm4_task和所有历史相关字段都没有改变.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值