* @param action
* @return
*/
private static void executeLogicInNewTransaction(ProcessDefine processDefine,
ProcessInstance processInstance, IAction action) {
PlatformTransactionManager txManager = ApplicationContextHolder.getBean(PlatformTransactionManager.class);
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = txManager.getTransaction(definition);
try {
action.execute(processDefine, processInstance);
txManager.commit(status);
} catch (Exception e) {
txManager.rollback(status);
throw new ProcessEngineException("触发事件执行失败", e);
}
}