Flowable工作流兼容達夢數(shù)據(jù)庫

近期公司的項目在做國產(chǎn)化兼容椰憋,數(shù)據(jù)庫方面試了下國產(chǎn)達夢數(shù)據(jù)庫腕唧,踩了不少坑或辖。。
項目使用SpringBoot 2.2.6+Mybatis四苇,工作流使用Flowable 6.4.2孝凌,連接池使用Druid

配置文件

pom.xml中引入驅(qū)動jar包(可在達夢安裝目錄中找到)

        <!--達夢數(shù)據(jù)庫-->
        <dependency>
            <groupId>com.dm</groupId>
            <artifactId>dmjdbc8</artifactId>
            <version>1.8</version>
            <scope>system</scope>
            <systemPath>${pom.basedir}/lib/DmJdbcDriver18.jar</systemPath>
        </dependency>

application.properties中對應(yīng)修改

#******達夢******
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
spring.datasource.url=jdbc:dm://127.0.0.1:5236/SYSDBA
spring.datasource.username=SYSDBA
spring.datasource.password=123456789
#達夢數(shù)據(jù)庫不支持此項
#spring.datasource.druid.filters=stat,wall
#pagehelper使用mysql語法
pagehelper.helper-dialect=mysql
#mybatis設(shè)置database-id
mybatis.configuration.database-id=dm
#達夢數(shù)據(jù)庫關(guān)閉flowable自動更新數(shù)據(jù)庫結(jié)構(gòu)
flowable.database-schema-update=false

Flowable修改

上面設(shè)置完成后嘗試啟動項目,報錯信息如下:

Caused by: org.flowable.common.engine.api.FlowableException: couldn't deduct database type from database product name 'DM DBMS'
    at org.flowable.common.engine.impl.AbstractEngineConfiguration.initDatabaseType(AbstractEngineConfiguration.java:282)
    at org.flowable.common.engine.impl.AbstractEngineConfiguration.initDataSource(AbstractEngineConfiguration.java:252)
    at org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl.init(ProcessEngineConfigurationImpl.java:951)
    at org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:915)
    at org.flowable.spring.SpringProcessEngineConfiguration.buildProcessEngine(SpringProcessEngineConfiguration.java:72)
    at org.flowable.spring.ProcessEngineFactoryBean.getObject(ProcessEngineFactoryBean.java:60)
    at org.flowable.spring.ProcessEngineFactoryBean.getObject(ProcessEngineFactoryBean.java:32)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:171)
    ... 59 common frames omitted

flowable并不認識國產(chǎn)數(shù)據(jù)庫月腋,需要修改文件:
在項目中創(chuàng)建org.flowable.common.engine.impl.AbstractEngineConfiguration文件(這邊路徑必須一致,打包時會覆蓋源文件)瓣赂,修改其中getDefaultDatabaseTypeMappings方法榆骚,將達夢數(shù)據(jù)庫標識為mysql:

public static Properties getDefaultDatabaseTypeMappings() {
        Properties databaseTypeMappings = new Properties();
        databaseTypeMappings.setProperty("H2", "h2");
        databaseTypeMappings.setProperty("HSQL Database Engine", "hsql");
        databaseTypeMappings.setProperty("MySQL", "mysql");
        databaseTypeMappings.setProperty("MariaDB", "mysql");
        databaseTypeMappings.setProperty("Oracle", "oracle");
        databaseTypeMappings.setProperty("PostgreSQL", "postgres");
        databaseTypeMappings.setProperty("Microsoft SQL Server", "mssql");
        databaseTypeMappings.setProperty("db2", "db2");
        databaseTypeMappings.setProperty("DB2", "db2");
        ***此處省略***
        databaseTypeMappings.setProperty("DM DBMS", "mysql");// 加入達夢支持
        return databaseTypeMappings;
    }

創(chuàng)建flowable數(shù)據(jù)庫

之前配置文件中關(guān)閉了數(shù)據(jù)庫自動生成更新,這是因為無論是把數(shù)據(jù)庫標識為 mysql 還是 oracle煌集,都無法自動生成妓肢。要么修改源碼中的生成語句并原路徑覆蓋,我這里是找到github上flowable源碼中的生成語句直接生成苫纤。
源碼目錄如下:


源碼sql文件

本項目引入的flowable模塊如下:

        <!--Flowable工作流-->
        <dependency>
            <groupId>org.flowable</groupId>
            <artifactId>flowable-spring-boot-starter-process</artifactId>
            <version>${flowable.version}</version>
        </dependency>

查看了下只需要復(fù)制三個模塊的語句并修改:


拷貝出來的sql文件

使用IDE工具一鍵替換一些關(guān)鍵詞:

一鍵刪除以下語句:
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin
一鍵替換以下關(guān)鍵詞:
LONGBLOB ===》 BLOB
auto_increment ===》identity

修改完成后碉钠,按順序執(zhí)行三個文件,即可生成flowable數(shù)據(jù)庫卷拘。
至此叁扫,項目應(yīng)該能正常啟動了

使用過程中的一些坑:

報錯1:

image.png

LINK 在達夢8中為關(guān)鍵詞仪糖,而flowable中Task.xml中確有用作別名:

#報錯相關(guān)語句
select LINK.ID_ from ACT_RU_IDENTITYLINK LINK

修改也很簡單,在resources目錄下,創(chuàng)建同路徑文件替換即可

image.png

注意:這邊和jar中的路徑不一樣蔫骂,并非在java目錄下,而是resources。我之前替換一直無效,直到下了源碼看了結(jié)構(gòu)才發(fā)現(xiàn)陆蟆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者惋增。
  • 序言:七十年代末叠殷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诈皿,更是在濱河造成了極大的恐慌溪猿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纫塌,死亡現(xiàn)場離奇詭異诊县,居然都是意外死亡,警方通過查閱死者的電腦和手機措左,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門依痊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怎披,你說我怎么就攤上這事胸嘁。” “怎么了凉逛?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵性宏,是天一觀的道長。 經(jīng)常有香客問我状飞,道長毫胜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任诬辈,我火速辦了婚禮酵使,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焙糟。我一直安慰自己口渔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布穿撮。 她就那樣靜靜地躺著缺脉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悦穿。 梳的紋絲不亂的頭發(fā)上攻礼,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音咧党,去河邊找鬼秘蛔。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的深员。 我是一名探鬼主播负蠕,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倦畅!你這毒婦竟也來了遮糖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤叠赐,失蹤者是張志新(化名)和其女友劉穎欲账,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芭概,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡赛不,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了罢洲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踢故。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惹苗,靈堂內(nèi)的尸體忽然破棺而出殿较,到底是詐尸還是另有隱情,我是刑警寧澤桩蓉,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布淋纲,位于F島的核電站,受9級特大地震影響院究,放射性物質(zhì)發(fā)生泄漏洽瞬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一儡首、第九天 我趴在偏房一處隱蔽的房頂上張望片任。 院中可真熱鬧,春花似錦蔬胯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鹅髓,卻和暖如春舞竿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背窿冯。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工骗奖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓执桌,卻偏偏與公主長得像鄙皇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仰挣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355