浏览 3556 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-14
原因:没有找到名字是'reject'的transition.但是processdefinition.xml文件里面确实有这个transition的, <transition name="reject" to="d1"> <action class="com.xxx.xxx.xxx" /> </transition> 为什么呢? 因为我再第一次编写processdefinition.xml的时候我的这个transition是中文的name="拒绝",并且我已经吧这个工作流发布到数据库中了,因为我查数据库表:jbpm_transition 发现里面的name是以前的"拒绝",难怪会提示找不到transition 'reject',因为数据库中根本就没有name=reject的transition 所以我就用新的processdefinition.xml重新发布了一次工作流到数据库中.再次运行,还是报同样的错....... 这次我再看代码,发现处理任务的代码: List<TaskInstance> list = context.getTaskList(actorId); for(TaskInstance ti : list ){ if(pas){ ti.end("approve"); }else{ ti.end("reject"); } } 我觉得问题再List<TaskInstance> list = context.getTaskList(actorId); 这一句,我查数据库,发现再jbpm_taskinstance 表中分配给actorId的,并且isopen='1'的有4条,这是因为我上次报错的程序运行了4次,每次流程都停留再这个节点没有走下去.因为有多条,所以找出来的第一条对应的任务就有可能没有对应的name='reject'的transition,这里有是循环,每条记录都会来一次ti.end("approve")或者ti.end("reject"); 所以会报原来一样的错.把jbpm_taskinstance 表中,所有分配给我要找的actorId记录的isopen都改为'0'. 再次运行,正确,问题解决. PS:我也是第一次运行JBPM发现这个错,再网上找答案,只看到问题,没看到答案,所以把自己的解决方法写出来.希望对其它人有帮助. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-25
遇到同样问题,顶一个
|
|
返回顶楼 | |