flowable6和达梦数据库的结合

Flowable是Activiti的分支,也是目前比较主流的开源流程引擎。Flowable可以支持目前主流的数据库,比如Mysql,Oracle,Ms sql,Db2等。但是并不支持任何国产数据库,比如达梦,人大金仓之类的,这在当前国产化趋势下,与很多项目的要求不一致。
因此,为了能与国产数据库匹配,本人做了一些测试研究工作,我们以比较主流的达梦数据库为例来说明。
一。Flowable有两个重要的工程项目Flowable-IDM和Flowable-modeler,这两个项目是配合起来工作的,一个负责用户管理和身份验证,一个是Flowable的流程编辑器。
为了连接达梦数据库,我们需要更改这两个项目的flowable-default.properties文件。连接配置如下:
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
spring.datasource.url=jdbc:dm://localhost:5236
spring.datasource.username=flowable
spring.datasource.password=flowable
二。配置完成,放置好对应的jdbc驱动,启动tomcat,这时我们发现系统会报"Unknow database type 'DM DBMS'"的错误。经过分析错误和源代码,我们知道这是由于Flowable不认识达梦的数据库类型造成的,并且根据达梦数据库的开发文档,我们知道达梦是兼容Oracle数据库的,所以我们要将达梦的数据库类型指认成Oracle。具体方法是在DatabaseConfiguration类中,新增达梦的数据库类型指定代码
databaseTypeMappings.setProperty("DM DBMS",DATABASE_TYPE_ORACLE);
三。再次重启tomcat,发现在Flowable-modeler工程中报“Unknow Current_Schema”的错误信息,继续跟踪错误代码,发现这是由于达梦没有接收到指定的模式名的错误。同样修改DatabaseConfiguration类中的liquibase(DataSource dataSource)函数,新增database.setDefaultSchemaName("FLOWABLE");以指定默认模式名。
四。继续重启tomcat,这时Flowable开始自动创建数据库表,当创建ACT_DE_DATABASECHANGELOGLOCK表的时候,系统报数据类型错误,经调试发现是由于达梦不认识Boolean类型的字段,因此我们手工创建该表,执行“CREATE TABLE FLOWABLE.ACT_DE_DATABASECHANGELOGLOCK (ID INT NOT NULL, LOCKED BOOLEAN NOT NULL, LOCKGRANTED datetime, LOCKEDBY VARCHAR(255), CONSTRAINT PK_ACT_DE_DATABASECHANGELOGLOCK PRIMARY KEY”创建表成功,再次重启tomcat,这时就可以成功进入flowable-idm和flowable-modeler。
下一篇博客,我会讲讲怎么适配Flowable的程序项目和达梦数据库的连接。

你可能感兴趣的:(java,达梦数据库,flowable)