JBPM4 No unnamed transitions were found for the task 'XXXX'. 异常

JBPM4执行taskService.completeTask(taskId,map)或taskService.completeTask(taskId) 操作时,出现如下异常:

 

No unnamed transitions were found for the task 'XXXX'

 

——————————————————————————————————————————————

 

分析原因:(见:用户手册:taskservice

 

 

如果一个任务拥有一个没用名称的外向转移:

  • taskService.getOutcomes() 返回包含一个null值集合,。
  • taskService.completeTask(taskId) 会使用这个外向转移。
  • taskService.completeTask(taskId, null) 会使用这个外向转移。
  • taskService.completeTask(taskId, "anyvalue") 会抛出一个异常。

 

如果一个任务拥有一个有名字的外向转移:

  • gtaskService.getOutcomes() 返回包含这个转移名称的集合。
  • taskService.completeTask(taskId) 会使用这个单独的外向转移。
  • taskService.completeTask(taskId, null) 会抛出一个异常(因为这里没有无名称的转移)。
  • taskService.completeTask(taskId, "anyvalue") 会抛出一个异常。
  • taskService.completeTask(taskId, "myName") 会根据给定的名称使用转移。

 

如果一个任务拥有多个外向转移,其中一个转移没有名称,其他转移都有名称:

  • taskService.getOutcomes() 返回包含一个null值和其他转移名称的集合。
  • taskService.completeTask(taskId) 会使用没有名字的转移。
  • taskService.completeTask(taskId, null) 会使用没有名字的转移。
  • taskService.completeTask(taskId, "anyvalue") 会抛出异常。
  • taskService.completeTask(taskId, "myName") 会使用名字为'myName'的转移。

 

如果一个任务拥有多个外向转移,每个转移都拥有唯一的名字:

  • taskService.getOutcomes() 返回包含所有转移名称的集合。
  • taskService.completeTask(taskId) 会抛出异常,因为这里没有无名称的转移。
  • taskService.completeTask(taskId, null) 会抛出异常,因为这里没有无名称的转移。
  • taskService.completeTask(taskId, "anyvalue") 会抛出异常。
  • taskService.completeTask(taskId, "myName") 会使用名字为'myName'的转移。

————————————————————————————————————————

解决方案:

根据以上分析,可得到解决方案:

1、只拥有一个外向转移时(对应上文所述1、2情况)

Map map = new HashMap();
map.put("",……)//各种参数
taskService.setVariables(taskId,map);
taskService.completeTask(taskId);

3、拥有多个外向转移时(上文3、4种情况)
Map map = new HashMap();
map.put("",……)//各种参数
taskService.setVariables(taskId,map);

//如想转移至有名称的外向转移:
taskService.completeTask(taskId,"外向转移名称");

//如想转移至无名称的外向转移:
taskService.completeTask(taskId);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值