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的程序项目和达梦数据库的连接。
对于 Flowable,它使用了一个名为 Flowable Engine 的工作流引擎来管理流程。在 Flowable 中,可以通过自动创建数据库表的方式来初始化工作流引擎。 要自动生成 Flowable 引擎所需的数据库表,可以按照以下步骤操作: 1. 首先,确保你的应用程序已经配置了与数据库的连接。你需要提供数据库的连接信息,例如数据库类型、地址、用户名和密码等。 2. 在应用程序启动时,可以使用 Flowable 提供的 `ProcessEngineConfiguration` 类来创建和配置工作流引擎。在创建引擎配置实例时,可以通过调用 `setDatabaseSchemaUpdate` 方法来指定数据库表的自动更新策略。例如,可以将参数设置为 `ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE`,这样 Flowable 将自动创建和更新数据库表。 下面是一个简单的示例代码: ```java import org.flowable.engine.ProcessEngine; import org.flowable.engine.ProcessEngineConfiguration; public class FlowableTableGenerator { public static void main(String[] args) { // 创建工作流引擎配置实例 ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); // 设置数据库连接信息 cfg.setJdbcUrl("jdbc:mysql://localhost:3306/flowable?useSSL=false&characterEncoding=utf8"); cfg.setJdbcUsername("your_username"); cfg.setJdbcPassword("your_password"); cfg.setJdbcDriver("com.mysql.jdbc.Driver"); // 设置自动更新数据库表策略 cfg.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); // 创建工作流引擎 ProcessEngine processEngine = cfg.buildProcessEngine(); // 输出引擎信息 System.out.println("Flowable version: " + ProcessEngine.VERSION); System.out.println("Database tables created"); } } ``` 在这个示例中,我们使用了 MySQL 数据库,并且设置了自动更新数据库表的策略为 `DB_SCHEMA_UPDATE_TRUE`。当程序运行时,Flowable 将会自动创建和更新数据库表。 请根据你的实际情况修改数据库连接信息,然后运行该代码,即可自动生成 Flowable 引擎所需的数据库表。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值