本文介绍Spring整合Activiti 6.0.0和7.0.0.Beta1两个版本,在瀚高数据库初始化到指定schema的解决方案。
1、Activiti参数
1)Spring整合Activiti时,首先修改/添加databaseType参数:
| <property name="databaseType" value="postgres"/> |
2)如果设置了databaseSchema参数,初始化时会报如下错误,具体原因暂未知:
|
Caused by: org.activiti.engine.ActivitiException: Could not set database schema on connection at org.activiti.engine.impl.db.DbSqlSessionFactory.openSession(DbSqlSessionFactory.java:81) at org.activiti.engine.impl.interceptor.CommandContext.getSession(CommandContext.java:249) at org.activiti.engine.impl.interceptor.CommandContext.getDbSqlSession(CommandContext.java:261) |
2、 Activiti自带表初始化到当前数据库的指定schema下
此平台下文章:《014834704 Activiti 连接瀚高数据库(APP)》,是创建的activiti数据库,activiti用户和activiti schema,因此activiti初始化时,自动初始化到了activiti schema下;如果不创建activiti数据库,activiti用户和activiti schema是默认初始化到public下的。
如果我想初始化到当前数据库的指定schema下,应该怎么实现?
方法是修改activiti源码包,6.0.0和7.0.0.Beta1两个版本已经实现了,5.22.0版本暂时没找到源码包里的配置在哪,暂未处理;大家可根据6.0.0和7.0.0.Beta1两个版本的操作方式修改5.22.0版本的源码即可。
具体操作如下,以6.0.0为例:
1)打开6.0.0的jar包,如下图:

2)找到初始化的sql,修改为下图:(在table前加上schema,前提需要在瀚高数据库中建好这个schema)

3)修改后,用解压缩工具打开jar,直接覆盖原来的sql文件(记得备份)。然后刷新项目或Update Project,确保修改的生效。目前只找到了这个解决办法,Activiti的其他配置参数,试过了不起作用。
启动项目,可能会有如下报错:
|
### Error querying database. Cause: com.highgo.jdbc.util.PSQLException: ERROR: 42P01: relation "act_ge_property" does not exist 位置:15 ### The error may exist in org/activiti/db/mapping/entity/Property.xml ### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntityImpl.selectProperty-Inline ### The error occurred while setting parameters ### SQL: select * from ACT_GE_PROPERTY where NAME_ = ? ### Cause: com.highgo.jdbc.util.PSQLException: ERROR: 42P01: relation "act_ge_property" does not exist |
一看就是表不存在的问题,但是发现数据库表已经初始化进去了;然后修改瀚高数据库的search_path添加上当前schema重启数据库使之生效后,还是报同样的错误。
4)然后去找org/activiti/db/mapping/entity/Property.xml中的报错位置:

发现表前面都有${prefix}参数,因此判断是引用了这个参数,与数据库无关;
5)两种解决方案:
第一种:添加配置参数<property name="databaseTablePrefix" value="activiti_schema."/>。
第二种:修改源码包:
找到postgres.properties添加prefix=当前schema,然后解压缩工具覆盖替换;记得刷新项目或Update Project,确保修改的生效。

重启项目,发现问题已解决。
本文仅是6.0.0和7.0.0.Beta1两个版本在初始化时指定schema的问题,后期的使用有无隐患问题,暂未知。
拓展:由于Activiti在数据库进行初始化时,需要匹配数据库,因此如果是从其他数据库迁移到瀚高数据库的,而不是在瀚高数据库进行的初始化,则会有类型不匹配问题:
1)如果是新上线系统,没有历史数据,建议不迁移Activiti相关表,直接从瀚高数据库初始化;
2)如果有历史数据,则直接用瀚高迁移工具迁移,对于类型不匹配问题:
(1)可以先尝试用建类型转换的方法处理;
(2)再尝试用触发器解决;
(3)最后修改Activiti源码包中的xml配置文件,在配置文件的sql中加入类型转换。
虽然是修改源码包,但是不涉及反编译,只涉及解压缩和替换更新,因此操作很简单。
更多详细信息请登录【瀚高技术支持平台】查看https://support.highgo.com/#/index/docContent/a7350e7c010c3c8a
编辑推荐:
- Spring整合Activiti,在瀚高数据库初始化时指定schema解决方案03-14
- PostgreSQL事务隔离级别03-14
- PostgreSQL的xlog/Wal归档及日志清理03-14
- PostgreSQL的两个模板库03-14
- Vacuum探索——初识vacuum03-14
- PostgreSQL 数据库结构(DDL)比对工具 pgquarrel03-14
- 模型思维(01)03-14
- PostgreSQL-乱序插入数据导致索引膨胀03-14
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Spring整合Activiti,在瀚高数据库初始化时指定schema解决方案
- PostgreSQL的xlog/Wal归档及日志清理
PostgreSQL的xlog/Wal归档及日志清理
26-03-14 - PostgreSQL的两个模板库
PostgreSQL的两个模板库
26-03-14 - 模型思维(01)
模型思维(01)
26-03-14 - postgreSQL数据库同步流复制和异步流复制控制
postgreSQL数据库同步流复制和异步流复制控制
26-03-14 - PostgreSQL中的触发器
PostgreSQL中的触发器
26-03-14 - 流复制浅析 —— 主备切换
流复制浅析 —— 主备切换
26-03-14 - 如何将excel表格数据导入postgresql数据库
如何将excel表格数据导入postgresql数据库
26-03-14 - 【读书笔记】《PostgreSQL指南-内幕探索》-8.缓冲区管理器
【读书笔记】《PostgreSQL指南-内幕探索》-8.缓冲区管理器
26-03-14 - 2. PostgreSQL 流复制
2. PostgreSQL 流复制
26-03-14
