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.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);

 


發佈了7 篇原創文章 · 獲贊 16 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章