Компенсация за активность

Чего я хочу

Я ищу способ откатить контекст Activiti до того, как он достигнет состояния ожидания. Например, у меня есть:

public class MyService implements JavaDelegate {

  @Override
  public void execute(DelegateExecution execution) {
    int a = calcA();
    boolean res1 = saveToDB(a);  // save to application context
    execution.setVariable("a" , a); //save to activiti context

    if (!a)
      rollback(); //rollback execution contaxt 
  }
}

Что за проблема?

Я не хочу вручную удалять переменные выполнения. Обычную транзакцию уже пробовал - безрезультатно. Теперь я думаю о компенсационных мероприятиях.

Вопрос:

Откатывает ли событие компенсации контекст Activiti или мне следует сделать это вручную в соответствующей задаче CompensationserviceTask?


person VB_    schedule 26.09.2013    source источник
comment
Хорошее представление вопроса!   -  person    schedule 26.09.2013
comment
Если вы создадите исключение в делегате, Activiti отменит и повторит всю транзакцию. Это то, что вы хотите? Посетите страницу activiti.org/userguide/, чтобы узнать о границах транзакций.   -  person Leonard Brünings    schedule 30.09.2013
comment
Я прочитал это. Также я читал об общей транзакции для Activiti и Hibernate. Последнее кажется мифом, т.к. в гугле я не нашел ни одного примера и провозился около двух недель, а результата нет. Но дело в том, что Activiti НЕ ОТКАТАЕТ его контекст после того, как я создаю исключение. Не могли бы вы предоставить мне ссылку на рабочий пример (желательно с postgres и spring, но все приветствуются)   -  person VB_    schedule 30.09.2013
comment
Вам необходимо использовать следующие свойства для конфигурации вашего движка в дополнение к другим свойствам. <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <property name="transactionManager" ref="transactionManager" /> <property name="jpaEntityManagerFactory" ref="entityManagerFactory" /> <property name="jpaHandleTransaction" value="true" /> <property name="jpaCloseEntityManager" value="true" /> </bean>   -  person Leonard Brünings    schedule 30.09.2013


Ответы (1)


Выброс исключения сделает свое дело, он откатит всю транзакцию из движка.

person salaboy    schedule 14.05.2018