jbpm3通过processDefinition.createProcessInstance()为什么能保存ProcessInstance之迷

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
  
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值