Spring整合Jbpm之事务疑惑
springAOP事务配置代理处代码:
<property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="check*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="clone*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="create*">PROPAGATION_REQUIRED</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> <prop key="do*">PROPAGATION_REQUIRED</prop> <prop key="search*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property>
流程实例删除,JbpmManager里面定义deleteProcessInstance(longProcessInstanceId)
Spring容器中的JbpmMagager
<bean id="jbpmManager" parent="baseTxService"> <property name="target"> <bean class="com.changhong.jbpm.service.imp.JbpmManagerImp"/> </property> </bean>
对比发现JbpmManager中的delete方法不在spring事务管辖范围之类。
点击删除操作,后台不报错,但是并没有删除。
开始找半天也不知道从哪儿开始找错,后来突然想起manager层的方法delete*记忆中好像没有配置在spring事务中。
再想逻辑没错,可能就是事务没有commit。
据此分析原因(迷迷糊糊给自己找了个解释的原因,如下)
JbpmManager下面的删除流程实例操作是基于SpringMoudles框架之上的,Jbpm与Spring事务统一整合。当manager层调用的方法并非springAOP定义范围之类时,也就是并不在spring所管理的事务范围之类时,Manager里面的操作即利用SpringMoudels对Jbpm系统表进行数据操作的动作都视为无效,即不提交。
以上是我大致的分析逻辑
然后修改manager层方法delete*改成remove*
OK!
相关推荐
yupi0 2020-10-10
spring 2020-08-18
编程点滴 2020-07-29
幸运小侯子 2020-07-05
itjavashuai 2020-07-04
qingjiuquan 2020-06-29
shushan 2020-06-25
小鱿鱼 2020-06-22
咻pur慢 2020-06-18
melonjj 2020-06-17
qingjiuquan 2020-06-13
neweastsun 2020-06-05
小鱿鱼 2020-06-05
mxcsdn 2020-05-31
吾日五省我身 2020-05-27
牧场SZShepherd 2020-05-27
sweetgirl0 2020-05-14