`

jbpm开发实战----委托

阅读更多

委托任务是我所遇到的项目中客户经常提到的,下面介绍下我的实现思路。

所谓委托,就是给A的待办,A设置了委托人B,此时,程序应该做到自动给B,最多是B处理以后给A发一个阅示任务,查看处理的情况。

这里面发现有经典的切面的影子,即任何setActor和setPooledActors都是先检查待办人是否设置了委托人,如果设置了就把任务给委托人。java领域的切面编程,大家都知道可以用jdk的InvocationHandler接口,也可以用cglib的动态代理来实现,经试验,发现jbpm的源码中有很多地方写的不地道,没有面向接口编程,导致InvocationHandler接口这种方式不能使用,无奈,只能研究cglib字节码增强,生成子类的方式实现这个切面编程了,很快,cglib生成子类的方法算是成功了,但是又发现cglib动态生成的这个子类的对象不能持久化到数据库,因为hibernate配置文件中,配置的是Taskinstace这个类,之前记得hibernate的延迟加载中有用cglib来实现,参考了Gavin King大师的源码,终于一口气实现了这个切面编程,初步测试通过了!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics