工作流达梦适配
这篇解决什么
达梦上 Flowable 为什么要报成 Oracle 方言、信创 profile 关了哪些自动建表。读完能对上 BpmFlowableConfiguration 里对 DM DBMS / DM 的映射,以及 application-xinchuang-dm8.yaml。
默认端口 48080。先把引擎跑起来见 流程功能设计。开发库默认仍是 MySQL,本篇只写切到达梦时要改的点。
示意图:按 JDBC 产品名改 Flowable 字典 SQL。达梦走 Oracle 兼容分页和元数据。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 引擎装配 | 读连接产品名再 setDatabaseType | ruoyi-office/yudao-module-bpm/.../flowable/config/BpmFlowableConfiguration.java |
| 信创 profile | 驱动、schema、关自动升级 | ruoyi-office/yudao-server/src/main/resources/application-xinchuang-dm8.yaml |
| MyBatis 库类型 | DbTypeEnum.DM,产品名 DM DBMS | yudao-spring-boot-starter-mybatis/.../DbTypeEnum.java |
| 业务表单 | 流程 key 与达梦无关 | 业务表单开发 |
启动示例:--spring.profiles.active=prod,xinchuang-dm8。驱动 dm.jdbc.driver.DmDriver,JDBC 默认 jdbc:dm://127.0.0.1:5236?schema=RUOYI_OFFICE&keyWords=PERCENT,COMMENT。账号口令走 DB_USERNAME / DB_PASSWORD。
flowable.database-schema-update 在信创 profile 为 false,database-schema 默认 RUOYI_OFFICE(可用 FLOWABLE_DATABASE_SCHEMA 覆盖)。引擎表要先按交付脚本建好,不要在达梦上开自动升级碰已有库。
MyBatis 到达梦时 id-type: AUTO。FIND_IN_SET 数据权限片段 DbTypeEnum.DM 与 MySQL 同一写法。这是业务 SQL,不是 Flowable 方言。
applicationTaskExecutor 仍是 Flowable 作业线程池,和 XXL-Job 无关。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| JDBC 产品名 | DM DBMS 或 DM 才映射 Oracle | BpmFlowableConfiguration |
database-schema-update | 信创关闭 | application-xinchuang-dm8.yaml |
database-schema | Flowable 元数据 schema | 同上 |
id-type | AUTO | MyBatis 全局 |
不要再抄 Activiti 适配
本仓库引擎是 Flowable。达梦映射已经写在 BpmFlowableConfiguration,不要另接一套 Activiti 方言包。
产品名对不上就还当 MySQL
连上之后若 getDatabaseProductName() 既不是 DM DBMS 也不是 DM,这段 if 不会进。先查连接元数据,再改映射,不要先改业务单据。
示意图:先表后 profile。自动升级保持关闭。
配置与操作
运维先按交付脚本建达梦引擎表,再 --spring.profiles.active=prod,xinchuang-dm8。database-schema-update 保持 false。连上后看 JDBC 产品名是不是 DM DBMS / DM,对不上这段映射不会进。
没有单独的「达梦配置」菜单。开发库继续用 MySQL local。流程 key、表单路径与库类型无关。
开启见 流程功能设计。达梦没有本系统界面可截,以启动日志里的 databaseType=oracle 为准。
