Jbpm中进程实例的挂起与释放
来源:互联网 发布:远程协助软件排行 编辑:程序博客网 时间:2024/06/05 10:43
在Jbpm的processInstance与taskInstance都对外提供了挂起进程实例或工作实例的的接口,同时也提供了释放的接口。分别是:
1,processinstance
processinstance.suspend();
processInstance.resume();
2,taskInstance
taskInstance.suspend();
taskInstance.resume();
同时processinstance与 taskInstance还提供了一个标志位,isSuspended与isOpen分别表示是挂起还是开放状态,如果标志位isSuspended=true&&isOpen=fasle,那么这个进程实例或任务实例在用户界面就不会被找出来,但在管理界面还是可以看到。如果isSuspended=false&&isOpen=true,结果就是正常情况了。
以上介绍了一下Jbpm中挂起与释放的功能,但它存在一个bug,在正常情况下当你调用这两个方法时,是会出错的。提示badsql 语法错误,经过跟踪才知道原来在Jbpm的查询语句里出现了错误。在这里简单介绍一下Jbpm的数据库查询方法,Jbpm的底层持久层采用的是Hiberante3.1,但是它的查询方法却是采用了很少人会用的外置命名查询(为什么采用这个方法,采用这个方法有什么好处,我也没有对它进行研究过。^_^),问题就出在,在调用挂起与释放这两个方法时,它主要做的是以下几个操作:
suspendTimers();
suspendMessages();
suspendTaskInstances();
跟踪得到在挂起messages时出现了错误,文件就出在外置命名查询的sql语句上:
原码:
<query name="MessagingSession.suspendMessagesForToken">
<![CDATA[
update org.jbpm.msg.Message
set isSuspended = true
where token = :token
]]>
</query>
看到这里属性hibernate的人应该马上可以知道那里出了问题了,^_^!
在hibernate中条件查询一定要定义别名,如下就正常了!^_^!
<query name="MessagingSession.suspendMessagesForToken">
<![CDATA[
update org.jbpm.msg.Message me
set me.isSuspended = true
where me.token = :token
]]>
</query>
总的来说Jbpm还是不错的一个工作流引擎,但是还是存在一定的局限,本人最近在研究Jbpm回退功能的实现,欢迎大家一起研究!
- Jbpm中进程实例的挂起与释放
- 进程的挂起与阻塞
- 进程的挂起与阻塞
- c++中进程的挂起
- linux中线程的挂起与恢复(进程暂停)
- linux中线程的挂起与恢复(进程暂停)
- linux中线程的挂起与恢复(进程暂停)
- 进程管理中,挂起的具体含义
- contiki中关于进程的开始与挂起等相关函数的说明与小结
- linux中线程的挂起与恢复(进程暂停)(2013-06-19 13:42:58)
- 进程的挂起
- 进程的挂起状态
- 进程与线程(二):线程的开启与挂起
- 每天学点Linux--(进程的挂起与恢复)
- 一段挂起进程中所有线程的代码
- 挂起某个进程中所有线程的方法
- 挂起进程和进程的阻塞和挂起的区别
- 挂起进程的三个函数
- 日期转换
- 智能客户端的定义
- 定时器与中断概念
- 无题
- Hibernate中any元素的应用体会
- Jbpm中进程实例的挂起与释放
- 如何执行外部程序,并接受其关闭消息
- blog的日子又一次的变化
- 忽悠,你就使劲忽悠
- 关于.net程序员必读的几本好书
- linux下好痛苦!!
- 【转】spring 编程入门十大问题解答
- 无题2
- Boolean数据类型