转自:http://hi.baidu.com/javazhangyong/blog/item/900fcaddb308f90048540312.html
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'的转移。