jbpm3通过processDefinition.createProcessInstance()为什么能保存ProcessInstance之迷
2011年08月01日
数据库提交操作是在jbpmcontext.close()方法执行后,事务才提交的. close方法如下: 其中的autoSave()方法如下: 一般人都认为是这里将processInstance保存到数据库.其实这里分2种情况,只有当以
jbpmContext.newProcessInstanceForUpdate(processNam e);方式启动流程时,才会执行这里的操作。
原因是autoSaveProcessInstances通过processDefinition.createProcessInstance()启动时没有值.
autoSave()方法里的循环操作,可以保存流程日志到数据库中.从另一个方面来讲只有以jbpmContext.newProcessInstanceForUpdate(processNam e);方式启动流程时,流程日志表才有数据.
那么我们的流程是通过processDefinition.createProcessInstance()方式启动的,为什么也能将processInstance保存到数据库呢.原因见
下面的堆栈信息.
EntityInsertAction.(Serializable, Object[], Object, Object, EntityPersister, SessionImplementor) line: 34
DefaultSaveOrUpdateEventListener(AbstractSaveEvent Listener).performSaveOrReplicate(Object, EntityKey, EntityPersister, boolean, Object, EventSource, boolean) line: 329
DefaultSaveOrUpdateEventListener(AbstractSaveEvent Listener).performSave(Object, Serializable, EntityPersister, boolean, Object, EventSource, boolean) line: 181
DefaultSaveOrUpdateEventListener(AbstractSaveEvent Listener).saveWithGeneratedId(Object, String, Object, EventSource, boolean) line: 121
DefaultSaveOrUpdateEventListener.saveWithGenerated OrRequestedId(SaveOrUpdateEvent) line: 187
DefaultSaveOrUpdateEventListener.entityIsTransient (SaveOrUpdateEvent) line: 172
DefaultSaveOrUpdateEventListener.performSaveOrUpda te(SaveOrUpdateEvent) line: 94
DefaultSaveOrUpdateEventListener.onSaveOrUpdate(Sa veOrUpdateEvent) line: 70
SessionImpl.fireSaveOrUpdate(SaveOrUpdateEvent) line: 507
SessionImpl.saveOrUpdate(String, Object) line: 499
CascadingAction$1.cascade(EventSource, Object, String, Object, boolean) line: 218
Cascade.cascadeToOne(Object, Type, CascadeStyle, Object, boolean) line: 268
Cascade.cascadeAssociation(Object, Type, CascadeStyle, Object, boolean) line: 216
Cascade.cascadeProperty(Object, Type, CascadeStyle, Object, boolean) line: 169
Cascade.cascade(EntityPersister, Object, Object) line: 130
DefaultSaveEventListener(AbstractSaveEventListener ).cascadeBeforeSave(EventSource, EntityPersister, Object, Object) line: 431
DefaultSaveEventListener(AbstractSaveEventListener ).performSaveOrReplicate(Object, EntityKey, EntityPersister, boolean, Object, EventSource, boolean) line: 265
DefaultSaveEventListener(AbstractSaveEventListener ).performSave(Object, Serializable, EntityPersister, boolean, Object, EventSource, boolean) line: 181
DefaultSaveEventListener(AbstractSaveEventListener ).saveWithGeneratedId(Object, String, Object, EventSource, boolean) line: 121
DefaultSaveEventListener(DefaultSaveOrUpdateEventL istener).saveWithGeneratedOrRequestedId(SaveOrUpdat eEvent) line: 187
DefaultSaveEventListener.saveWithGeneratedOrReques tedId(SaveOrUpdateEvent) line: 33
DefaultSaveEventListener(DefaultSaveOrUpdateEventL istener).entityIsTransient(SaveOrUpdateEvent) line: 172
DefaultSaveEventListener.performSaveOrUpdate(SaveO rUpdateEvent) line: 27
DefaultSaveEventListener(DefaultSaveOrUpdateEventL istener).onSaveOrUpdate(SaveOrUpdateEvent) line: 70
SessionImpl.fireSave(SaveOrUpdateEvent) line: 535
SessionImpl.save(String, Object) line: 523
SessionImpl.save(Object) line: 519
DbPersistenceService.assignId(Object) line: 330
Services.assignId(Object) line: 257
ProcessInstance.(ProcessDefinition, Map, String) line: 137
ProcessInstance.(ProcessDefinition) line: 92
ProcessDefinition.createProcessInstance() line: 125
JpdlServiceImpl.createProcess(String) line: 50
JpdlServiceImpl$$FastClassByCGLIB$$f5b03888.invoke (int, Object, Object[]) line: not available
MethodProxy.invoke(Object, Object[]) line: 149
Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoi nt() line: 700
Cglib2AopProxy$CglibMethodInvocation(ReflectiveMet hodInvocation).proceed() line: 149
TransactionInterceptor.invoke(MethodInvocation) line: 106
Cglib2AopProxy$CglibMethodInvocation(ReflectiveMet hodInvocation).proceed() line: 171
ExposeInvocationInterceptor.invoke(MethodInvocatio n) line: 89
Cglib2AopProxy$CglibMethodInvocation(ReflectiveMet hodInvocation).proceed() line: 171
Cglib2AopProxy$DynamicAdvisedInterceptor.intercept (Object, Method, Object[], MethodProxy) line: 635
JpdlServiceImpl$$EnhancerByCGLIB$$ead8b30c.createP rocess(String) line: not available
JpdlProcessTest.testWorkflow() line: 11
发表评论
-
Linux系统内核模块函数调用及命名空间
2012-01-20 08:19 684Linux系统内核模块函数调用及命名空间 2011年01月1 ... -
Linux设备驱动程序编写
2012-01-20 08:19 549Linux设备驱动程序编写 2010年12月21日 一 ... -
如何编写PHP扩展
2012-01-20 08:19 533如何编写PHP扩展 2010年0 ... -
掌握 Linux 调试技术 +Debian/Ubuntu内核编程者必备
2012-01-20 08:19 774掌握 Linux 调试技术 +Debian/Ubuntu内核编 ... -
内核启动过程分析
2012-01-20 08:17 732内核启动过程分析 2011 ... -
官方发布 激情世界杯】浩海技术 GHOST XP SP3 世界杯装机特别版★用稳定压倒一切!
2012-01-19 13:34 771官方发布 激情世界杯】 ... -
浩海技术GHOSTXPSP3_2010浪漫圣诞纯净版
2012-01-19 13:33 740浩海技术GHOSTXPSP3_2010浪漫圣诞纯净版 201 ... -
《 浩海技术 Ghost XP SP3 快速装机版 V14.0 》 世界杯特别纪念版
2012-01-19 13:33 877《 浩海技术 Ghost XP SP3 快速装机版 V14.0 ... -
ytq说 笔记本电脑选购之显卡篇
2012-01-19 13:33 640ytq说 笔记本电脑选购之显卡篇 2010年08月07日 ... -
ISA Server 2006 性能最佳操作1
2012-01-17 03:23 645ISA Server 2006 性能最佳操作1 2011年0 ... -
笔记本问题
2012-01-17 03:23 927笔记本问题 2010年12月18 ... -
Flex 86道题(好好学习一下)
2012-01-17 03:23 677Flex 86道题(好好学习一 ... -
电脑蓝屏死机
2012-01-17 03:23 652电脑蓝屏死机 2010年11月16日 死机的问题, ... -
品牌的效应
2012-01-17 03:23 726品牌的效应 2011年04月02 ... -
纯爱小说《有情岁月》片段
2012-01-16 01:55 618纯爱小说《有情岁月》片段 2010年03月20日 (1) ... -
莆田男
2012-01-16 01:55 754莆田男 2011年06月02日 一方水土养一方人,先说 ... -
大学往事 第五章 计算机班的女生
2012-01-16 01:55 545大学往事 第五章 计算机班的女生 2012年01月04日 ... -
快乐大东北(四)
2012-01-16 01:55 1022快乐大东北(四) 2009年09月09日 快乐大东北(四 ... -
Android自定义VIEW取得XML的自定义值
2012-01-11 01:55 597Android自定义VIEW取得XML的自定义值 2011年 ... -
常用的正则表达式--Java
2012-01-11 01:55 587常用的正则表达式--Java 2011年08月01日 是 ...
相关推荐
BPM4中ProcessDefinition、ProcessInstance、Execution、Task关系和区别
介绍jbpm4里的processDefinition、processInstance和Task的使用方法。 代码里的注释的编码方式为utf-8
ProcessInstance pi=pd.createProcessInstance(); jc.close(); } public void testrun(){ //得到流程定义(在数据库) JbpmConfiguration jbpmConfiguration=JbpmConfiguration.getInstance(); ...
1.1 JBPM_PROCESSDEFINITION:流程模版表 2 1.2 JBPM_NODE:流程节点表 2 1.3 JBPM_TRANSITION:流程迁移表 3 1.4 JBPM_ACTION:流程动作表 4 1.5 JBPM_EVENT:流程事件表 5 1.6 JBPM_DELEGATION:流程代理类表...
JBPM_PROCESSINSTANCE JBPM_PROCESSINSTANCE FK_PROCIN_PROCDEF PROCESSDEFINITION_ 一个流程模板可能有很多的流程实例 JBPM_ACTION JBPM_ACTION FK_ACTION_PROCDEF PROCESSDEFINITION_ 一个流程可能有很多的action...
ProcessDefinition processDefinition = processEngine.getRepositoryService().createProcessDefinitionQuery().processDefinitionId(processInstance.getProcessDefinitionId()).uniqueResult(); return ...
通过查看JBPM的表,我们知道要实现流程监控功能就是把JBPM当中的JBPM_PROCESSDEFINITION(已发布的流程表),JBPM_PROCESSINSTANCE(流程实例表),JBPM_TASKINSTANCE(流程产生的任务实例表)这三张表串联起来就可以...
所有的Task instance都被保存在数据库中的表jbpm_taskinstance里。当你想得到特定用户的任务清单时,你就可以通过一个与用户关联的actorId来查询这张表。 一个流程定义有一个TaskMgmtDefinition;一个...
1.1 JBPM_PROCESSDEFINITION:流程模版表 2 1.2 JBPM_NODE:流程节点表 2 1.3 JBPM_TRANSITION:流程迁移表 3 1.4 JBPM_ACTION:流程动作表 4 1.5 JBPM_EVENT:流程事件表 5 1.6 JBPM_DELEGATION:流程代理类表...
5.5ProcessDefinition 16 5.6ProcessInstance 16 5.7Execution 17 6 管理流程定义 18 6.1设计流程定义文档 18 6.1.1图片 18 6.1.2jpdl.xml文件 18 6.2部署流程定义 19 6.3删除流程定义 20 6.4查询流程定义 21 6.5...