刚刚接触JBPM,理解不是太深刻,在测试节点异常功能的时候遇到了【ERROR Delegation 】异常
ERROR Delegation : couldn't instantiate delegation class 'test.CatchNodeExceptionAction'
ERROR Delegation : couldn't load delegation class 'test.CatchNodeExceptionAction'
具体问题应该是在发布流程模板到数据库时出现问题,
我到数据库中SELECT * FROM jbpm_delegation 到表中查询,查看到
ID_ CLASSNAME_ CONFIGTYPE_ PROCESSDEFINITION
13 test.CatchNodeExceptionAction field 8
所以一开始我就以为代理类建立了,但是事实上我被这个所蒙骗了,到对应的项目目录下,看一下该类是否被编译
进入G:/exercisespace/jbpm-test/bin/test 编译的class目录下却没有发现编译的test.CatchNodeExceptionAction
可见这里出现的问题的就是CatchNodeExceptionAction类,
所以就检查:
1.类名和流程模板配置文件中类名是否一致,(这个虽然说是小儿科,但是大部分都会栽在这个问题上)
2.进入流程模板的【Deployment】页签下,查看Java Classes and Resources 配置下面是否选择了所依赖的类,虽然Eclipse会默认帮你选择,但是还检查一遍为好
3.检查你项目依赖的jar是否齐全,我就是栽在了这个问题上,因为要连接Sql2005,之前在build Path时加的外部jar,后来位置发生变动,再打入jar包,但是之前的错误引用没有从ClassPath里面删除,所以报了这个错误。
我的jBPM版本是3.2.3。
但是经过测试得出一个小结论,但不知道是否正确,
我配置了
<exception-handler exception-class="java.lang.Exception">
<action class="test.CatchNodeExceptionAction"></action>
</exception-handler>
其中 class="test.CatchNodeExceptionAction" 在没有编译通过的情况下,强行发布流程模板到数据中,
流程模板是能够正常发布到JBPM_PROCESSDEFINITION表中,
并且到JBPM_DELEGATION 表中,会发现流程模板所需要的actionHandle类也正常的发布到表中(不管是否编译成功)。
所以若是不仔细的话,异常就会在RunTime的时候才会出现
呵呵,若有问题还请大家指教,jBPM学习中,非常乐意接受意见