AnsweredAssumed Answered

Externalizing Transaction Management for Activiti

Question asked by aseem on Mar 25, 2014
Latest reply on Oct 31, 2014 by jbarrez
Hi,

Is there a way to tell Activiti to use an external transaction manager for managing transactions within a bean? I've gone through the documentation and other posts on this forum and it seems like if we mark our UserBean with @Transactional (Spring annotation) and set transactionsExternallyManaged to true, we can let activiti know that the transactions are being managed externally.

The app that I'm working on doesn't use Spring, but guice-persist to manage transactions at http session level. Is there a way for activiti (5.14) to know about that?


@com.google.inject.persist.Transactional(rollbackOn = Exception.class)
public void doStuff()
{
     service1.method1();
     workflowSvc.someMethod();            //Activiti processing - call to one of the services in activiti
     service1.method2();
}


If service1.method2() throws an Exception, changes to Activiti tables should be rolledback also (since its wrapped within a transaction) that is managed by guice-persist.

One way we can think of is to extend from what SpringProcessEngineConfiguration is doing to let Activiti know that we're using an external transactionManager and implement our own process engine configuration class which defines the transactionManager in properties. Thoughts?

Outcomes