Интеграция транзакций JTA

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

Встраиваемый процессный движок

Управление транзакциями процессного движка может быть интегрировано с JTA и Jakarta Transactions. Для интеграции с менеджером транзакций необходимо использовать:

  • io.openbpm.bpm.engine.impl.cfg.JtaProcessEngineConfiguration только для интеграции с JTA;

  • io.openbpm.bpm.engine.impl.cfg.JakartaTransactionProcessEngineConfiguration только для интеграции с Jakarta Transactions;

  • io.openbpm.bpm.engine.cdi.CdiJtaProcessEngineConfiguration для дополнительной поддержки разрешения CDI-выражений.

В зависимости от варианта интеграции процессного движка требуется доступ к реализации javax.transaction.TransactionManager или jakarta.transaction.TransactionManager. Чтобы обеспечить интеграцию транзакций JTA в таких контейнерах, следует использовать абстракцию Spring Framework и конфигурировать процессный движок через SpringProcessEngineConfiguration.

При настройке менеджера транзакций убедитесь, что он действительно управляет источником данных, который вы сконфигурировали для процессного движка. Если это не так, источник данных будет работать в режиме auto-commit. Это может привести к несогласованности данных в базе, потому что commit и rollback транзакций больше не будут выполняться.

Разделяемый процессный движок

Дистрибутивы разделяемого процессного движка для серверов приложений Java EE и Jakarta EE (Wildfly, JBoss EAP) предоставляют интеграцию с JTA или Jakarta Transactions из коробки.

Пример

Следующий пример показывает, как встроить собственную бизнес-логику в транзакцию процессного движка:

@Named
@Dependent
public class MyBean {

  @Inject
  public RuntimeService runtimeService;

  @Transactional
  public void doSomethingTransactional() {
    // Here you can do transactional stuff in your domain model and it will be
    // combined in the same transaction as the the following RuntimeService API
    // call to start a process instance:
    runtimeService.startProcessInstanceByKey("my-process");
  }

}

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org