注册

MySQL迁移至达梦,集成flowable后使用达梦其中的一个子数据源,flowable的建表能力失效

111 2025/03/20 212 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM8 1-1-190-21.04
【操作系统】:不重要,与标题问题无关
【CPU】: 不重要,与标题问题无关
【问题描述】*:
环境:

  1. ruoyi-flowable 框架二开,druid 连接池;
  2. 达梦 8 多数据源(目前是相同用户下的不同模式),flowable 使用其中一个 slave,可以正常读取到连接信息;
  3. 本人对 flowable 接触不多,首次接触达梦。

我们首先从 MySQL 迁移到 dm,然后加入多数据源。需要注意的是,我们的默认数据源是 master,但是 flowable 相关的表在其中一个 slave。
由于之前做的迁移方案,直接修改了 flowable 的部分源码,导致在设置数据源和配置时无效,启动失败,直接查询了act_ge_property,结果必然不存在(无效的表名或视图)。
之后我尝试单独配一个数据库指定 flowable 的数据源,结果依然和上次一样,目前比较迷茫,希望有老师帮忙解答一二,感谢!

附:

  1. flowable 迁移达梦参考链接:https://blog.csdn.net/TangBoBoa/article/details/130392495
  2. MySQL 迁移使用 dts,dm 客户端管理版本为 v7.6.1.60

已知问题:使用 https://blog.csdn.net/TangBoBoa/article/details/130392495 该教程的方式非多数据源下可以使用,url 连接参数也不需要compatibleMode=Oracle,若后续引入多数据源则会引发些许问题。

迁移过程

MySQL -> dm

MySQL 到 dm 使用官方的 dts,结构都可正常迁移,但是数据迁移错误,使用的客户端版本信息见上方描述。目前使用手动导入,有解决的小伙伴可以评论留言呀。

flowable 适配 dm 改造

可以参考https://blog.csdn.net/TangBoBoa/article/details/130392495或其他类似的博客,在非多数据源下好使(多数据源下也可能是我打开方式不对,频频报错)

除了上面的方式,也可以使用 dm 提供的 oracle 兼容模式链接(推荐方案),即 jdbc:dm://ip:port/schema=your_schema&compatibleMode=Oracle。使用此方式 + 修改 flowable 的部分源码即可实现 flowable 与达梦的适配。

推荐方案步骤说明

  1. application.yml 开启 dm 的 oracle 兼容连接方式;
  2. 按照博客的推荐添加和修改 liquibase.datatype.core.BooleanTypeorg.flowable.dmn.engine.impl.db.DmnDbSchemaManagerresources.org.flowable.dmn.db.liquibase.customer-flowable-dmn-db-changelog.xml(注意此步把 dbms="dm" 去掉) 两个文件,前者让 dm 支持 boolean,后者支持 dm 重命名。
  3. 最后按照此文档把 flowable 读取 oracle 的版本号的回调函数错误问题给解决掉:https://blog.csdn.net/qq_35349982/article/details/129624838

非多数据源以上的几步基本可以完成适配。多数据源情况下,可以自行实现 EngineConfigurationConfigurer<SpringAppEngineConfgiuration> 接口,在里面切换到 flowable 使用的数据源即可。

常见问题

  1. dm 数据库中,如果同一个数据库、同一个用户下,如果不同的模式中已存在 flowable 的相关表,那么 flowable 的建表能力就会失效(我也不清楚是哪个地方的原因)。删除掉同一用户的旧模式下的 flowable 相关的表,再次重启应用就可以了
  2. 无效的表或视图,数据库没有相关的表
  3. 不支持的类型,看看 SQL 语句中有没有 bool 类型,默认情况下,dm 不支持 bool 类型
  4. 其它错误已遗忘,想起补充
回答 0
暂无回答
扫一扫
联系客服