`

No unnamed transitions were found for the task'' Or No transition named ''was..

    博客分类:
  • JBPM
阅读更多
一:出错场景


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

 
2011-3-1 14:57:00 org.jbpm.internal.log.Jdk14Log info
信息: exception while executing command org.jbpm.pvm.internal.cmd.CompositeCmd@19d5db9
org.jbpm.api.JbpmException: No transition named '申请' was found.


 No unnamed transitions were found for the task '申请'


这都是没有处理好Jbpm转移引起的问题。

No transition named '申请' was found
是由于一个名为‘申请’的流入转移(或者流出转移)没有定义。
仔细查看xml,是不是写错了。
 <transition g="-5,-17" name="申请" to="部门领导审批"/>


 No unnamed transitions were found for the task '申请'

是连接'申请'的task任务没有命名的转移被找到


二:问题解决


可以看到核稿,驳回等就是transtion,属于外向转移。
使用taskService.completeTask(taskId)
就会报错。
使用taskService.completeTask(taskId, "error_value")
也会报错。
如果流程走到办公核稿,
taskService.completeTask(taskId, "会签") ;
//or
taskService.completeTask(taskId, "驳回") ;

这才是正确的!
了解Transtion
那么什么Transtion呢?!
Transtion:转移负责将各个活动定义连接起来,组成流程定义。

转移可分为流入转移和流出转移

三:原理分析

如果一个任务拥有一个没用名称的外向转移:
//返回包含一个null值集合,。
taskService.getOutcomes() 
//会使用这个外向转移。
taskService.completeTask(taskId) 
//会使用这个外向转移。
taskService.completeTask(taskId, null) 
//会抛出一个异常。
taskService.completeTask(taskId, "anyvalue")  



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

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


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

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


如果一个任务拥有多个外向转移,每个转移都拥有唯一的名字:
//返回包含所有转移名称的集合
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);

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






分享到:
评论
1 楼 xxxprince 2013-03-30  

可否列出获取Task方式参考一下,谢谢~

相关推荐

    SystemVerilog for Design(2nd edition)

    About the examples in this book..............................................................................................xxv Obtaining copies of the examples..........................................

    vxworks_kernel_programmers_guide_6.9

    2.4.4 Developing Kernel Applications for VSB Systems ..................................... 21 2.5 VxWorks Without Networking ..............................................................................

    Unnamed.mod

    Unnamed.mod

    unnamed.war

    unnamed.war

    Google C++ Style Guide(Google C++编程规范)高清PDF

    The main reason for making a virtual function inline is to place its definition in the class, either for convenience or to document its behavior, e.g., for accessors and mutators. The -inl.h Files...

    源码 Dr.Bob’s Delphi Prism XE Development Essentials June 2011

    Unnamed Constructors ............................................................. 12 IDE: Build and Debug ............................................................... 12 Strings......................

    Unnamed - 29746.rar

    标题中的“Unnamed - 29746.rar”是一个压缩包文件,可能包含了与医学成像相关的数据。这种类型的文件通常用于存储大量的图像或数据,便于传输和存储。RAR是一种流行的压缩格式,它能有效地压缩文件,减少磁盘空间...

    Google C++ Style Guide_英文版.pdf

    Pairs and Tuples:** Use structs for named fields and pairs/tuples for small groups of data. - **Inheritance:** Use inheritance carefully. Prefer composition over inheritance where applicable. - **...

    Ja-netfiter-2022.2.0 主要更新对 jdk 17的兼容

    jdk 17需要 新增 配置 如下 jvm参数 --add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED --add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED

    jclasslib 工具修改.class文件,同时需要jad.exe做辅助

    for (int i = 0; i ; i++) { if (infos[i] != null) { System.out.print(i); System.out.print(" = "); System.out.print(infos[i].getVerbose()); System.out.print(" = "); System.out.println(infos...

    Wordpress UnNameDone

    6. **页面构建器**:为了简化网页构建过程,【Wordpress UnNameDone】可能集成了流行的页面构建器,如Elementor或Visual Composer,让用户通过拖放方式创建自定义页面布局。 7. **自定义小工具**:模板可能提供了...

    pipe_管道_python_

    管道分为无名管道(unnamed pipes)和有名管道(named pipes,也称FIFO)。无名管道主要用于父子进程间的通信,而有名管道则可以在不相关的进程间共享。Python的`os`模块提供了创建和使用管道的基本接口。 ### 1. ...

    一款完整的j2me飞机射击手机游戏

    ...\.......\package cache\unnamed package.dep2 ...\.......\package cache ...\.......\MyShip.class ...\.......\Sprite.class ...\.......\MyMissile.class ...\.......\UFO.class ...\.......

    EditPlus v2.31 fixpack

    Supports font option for the Document Selector. * Supports 'Sort' button on the Window List. * Supports 'Copy Name' button on the Window List. * Search Document command could omit some words....

    node-named-argv:一个简单的 node.js 模块,有助于将命名参数添加到节点应用程序调用

    node myapp.js unnamed1 unnamed2 在您的代码中: var argv = require('named-argv'); console.log(argv.opts); // opts object contains all named parameters console.log(argv.params); // array, contains ...

    Unnamed-RPG-开源

    《Unnamed-RPG:开源角色扮演游戏开发的利器》 在当今的游戏开发领域,开源软件已经成为创新和技术进步的重要推动力。"Unnamed-RPG-开源"项目正是这样一款致力于为开发者提供工具,帮助他们构建具有Rolemaster风格...

Global site tag (gtag.js) - Google Analytics