From 2e96fff45a141e3c938fceb1e555cb8d313d31ad Mon Sep 17 00:00:00 2001 From: xiaoxiao <903999516@qq.com> Date: Wed, 13 Nov 2024 08:51:11 +0000 Subject: [PATCH] update docs/zh/faq.md. Signed-off-by: xiaoxiao <903999516@qq.com> --- docs/zh/faq.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/zh/faq.md b/docs/zh/faq.md index ea8db7f9..8e0b151d 100644 --- a/docs/zh/faq.md +++ b/docs/zh/faq.md @@ -356,3 +356,25 @@ public ProcessEngineConfiguration processEngineConfiguration( ... } ``` + +## MyBatis-Flex 与camunda工作流引擎集成事务兼容问题? + 当Mybatis-Flex 与camunda集成时,存在事务不兼容问题;需要覆盖其自动配置;添加 mybatis-flex 的事务管理器(FlexTransactionManager)和 DataSource(FlexDataSource) +注入到 ProcessEngineConfiguration,配置代码如下: + +```java + @Bean(name = "processEngineConfiguration") + public ProcessEngineConfigurationImpl processEngineConfiguration(SqlSessionFactory sqlSessionFactory, + PlatformTransactionManager annotationDrivenTransactionManager) throws NoSuchFieldException, IllegalAccessException { + final SpringProcessEngineConfiguration processEngineConfiguration = CamundaSpringBootUtil.springProcessEngineConfiguration(); + DataSource dataSource = sqlSessionFactory.getConfiguration().getEnvironment().getDataSource(); + //获取私有字段 + Field field = ProcessEngineConfiguration.class .getDeclaredField("dataSource"); + field.setAccessible(true); + field.set(processEngineConfiguration, dataSource); + processEngineConfiguration.setTransactionManager(annotationDrivenTransactionManager); + processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE); + processEngineConfiguration.setTransactionFactory(new FlexTransactionFactory()); + processEngineConfiguration.setHistoryLevel(HistoryLevel.HISTORY_LEVEL_FULL); + return processEngineConfiguration; + } +```