• JBPM4 No unnamed transitions were found for the task 'XXXX'


    转自:http://hi.baidu.com/thinkhlin/blog/item/971d4dc6a2b181049c163d0b.html

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

    No unnamed transitions were found for the task 'XXXX'....................

    异常分析:

    图例:

     

    这种问题一般在初学者中容易出现,原因是我们的流程在定义的时候有一个transitions属性节点,这个默认是有一个名称的如图例中to 申请请假”这个箭头表示流程的流向,如果我们直接使用taskService.completeTask(taskId,map)taskService.completeTask(taskId) ,则出现上面的那个异常,如果流向图很简单的话,我们可以直接将箭头的名字删除即可,但是,我们更多的是有多条线的情况,那样的话我们可以taskService.completeTask(taskId,"to 申请请假");这样的方式来完成。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    考虑再三还是把参考中的原因分析写上吧,这样会更完整些,方便查看,省的各种查找了:

    原理分析:

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

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

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

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

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

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

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

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

    解决方案:
    根据以上分析,可得到解决方案:
    1、只拥有一个外向转移时(对应上文所述1、2情况):

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

    2、拥有多个外向转移时(上文3、4种情况):

    Map map = new HashMap();map.put("",……)
    //各种参数
    taskService.setVariables(taskId,map);
    //如想转移至有名称的外向转移:
    taskService.completeTask(taskId,"外向转移名称");
    //如想转移至无名称的外向转移:
    taskService.completeTask(taskId); 

     

     

  • 相关阅读:
    Java读取文件,将字符串转化成日期类型,将日期类型进行加减
    javaweb文件下载 部署到服务器文件下载有问题
    linux下安装mysql5.5
    eclipse下修改项目名导致tomcat内发布名不一致的解决方法
    openclinica学习遇到的问题
    Ubuntu 安装joomla出错(Could not connect to the database. Connector returned number: The MySQL adap)解决办法
    JSP中Include指令和Include动作的区别
    JFrame容器
    JavaScript函数调用
    JavaScript
  • 原文地址:https://www.cnblogs.com/tv151579/p/2596668.html
Copyright © 2020-2023  润新知