Author: ainze
Date: 2009-05-31 06:21:34 -0400 (Sun, 31 May 2009)
New Revision: 4966
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/SpringTransactionInterceptor.java
Log:
standard transaction is not required
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/SpringTransactionInterceptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/SpringTransactionInterceptor.java 2009-05-31
08:49:11 UTC (rev 4965)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/tx/SpringTransactionInterceptor.java 2009-05-31
10:21:34 UTC (rev 4966)
@@ -43,7 +43,7 @@
public class SpringTransactionInterceptor extends Interceptor {
private static final Log log =
Log.getLog(SpringTransactionInterceptor.class.getName());
-
+
private boolean useCurrent;
@SuppressWarnings("unchecked")
@@ -54,21 +54,19 @@
}
StandardTransaction standardTransaction =
environment.get(StandardTransaction.class);
- if (standardTransaction == null) {
- throw new JbpmException("no standard-transaction in environment");
- }
PlatformTransactionManager platformTransactionManager =
environment.get(PlatformTransactionManager.class);
if (platformTransactionManager == null) {
throw new JbpmException("No platformTransaction manager defined.");
}
-
-
- standardTransaction.begin();
+ if (standardTransaction != null) {
+ standardTransaction.begin();
+ }
+
try {
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
-
+
if (useCurrent) {
definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_MANDATORY);
}
@@ -76,16 +74,20 @@
TransactionTemplate template = new TransactionTemplate(platformTransactionManager,
definition);
TransactionCallback transactionCallback = new
CommandTransactionCallback<T>(command, next, platformTransactionManager);
T t = (T) template.execute(transactionCallback);
-
+
Session session = environment.get(Session.class);
session.flush();
return t;
} catch (RuntimeException e) {
- standardTransaction.setRollbackOnly();
+ if (standardTransaction != null) {
+ standardTransaction.setRollbackOnly();
+ }
throw e;
} finally {
- standardTransaction.complete();
+ if (standardTransaction != null) {
+ standardTransaction.complete();
+ }
}
}