Интеграция транзакций 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