flowable6使用oracle数据库,启动报错趟过的坑

本人几乎从来不写博客,但是这次一定要记录下来,因为这次的实在太坑了,如果其他同学碰到类似的错误可以参考,避免浪费时间。

心血来潮,想学学flowable,按照网上教程下载解压,有4个war包,然后放到tomcat中运行,默认他们用的h2数据库,启动后没有报错,正常运行,正常访问。但是我平常用的都是oracle,就想尝试一下用oracle,因为原来用过activiti,知道他们在启动时会自动创建表,所以我就把4应用的flowable-default.properties和一个特殊的application-dev.properties中的数据库驱动和url都改成的oracle(因为第一次运行已经自动解压了,所以只改解压后的就行,war包就不用管他了),结果启动报错,访问页面,404~~~查看错误,说是没有数据源,我擦。。我不过是改革驱动和url,怎么就没有数据源了,唉,没办法,上网查吧,有的人说是把flowable-default.properties重命名为application.properties,想想也对,springboot默认不就加载application.properties文件配置么,但奇了怪了,我TM之前什么都没改你咋就能加载能找到数据源呢,我改个驱动就找不到了?真想不通到底咋设计的,好了,不管他了,重命名试一下吧。

改完后启动,还是报错,访问页面还是404~~~倒是不报找不到数据源的错误了,看来是起作用了,没时间研究这了,继续看错误吧。查看错误,说是找不到驱动,结果一看lib中,还真没有oracle驱动包,我擦。。。这么出名的开源框架,兼容各种数据库,结果还得我们自己放驱动包。好吧,把驱动放进去,启动,还报错。说什么表找不到,我擦擦擦。。。不是你们自动创建么,怎么可能找不到呢。结果看下库,就那么少的可怜的几张表,肯定是不对的。因为我原来用过activiti,知道肯定会有act_ru_*,act_ru_*re,act_hi_*之类的表,结果这些表都没有创建,奇了怪了。老子就不信了,不就是找不到表么,老子自己建表总行了吧。

因为之前研究过activiti(第三遍了,有点墨迹),它在启动时是用engine包中的db/create下的脚本创建表,里面有N多脚本,根据不同的数据库执行对应的脚本,按照之前的理解我就把flowableEngine包中的脚本拿出来,手动执行一下。结果执行报错,说是找不到ACT_GE_PROPERTY这个表,不对啊,都执行完了怎么还找不到,结果一看库,还真没有这张表,你妹的,我要疯了,你们到底是什么套路????

老子就不信了,我下源码,从源码找你这个表到底在哪创建的。搭建过程就不说了,搭建好后我搜一下这个表名。结果在flowable-engine-common这个模块中的创建脚本找到了,我再看看其他模块,也有好多创建脚本,原来flowable把各个表的创建都分散到各个模块的脚本中了,而不像activiti把所有表都放在一个脚本中。坑~~~~

好吧,那我就挨个模块翻翻吧,咦~~~~发现个新大陆

是不是所有表都在这里,只需要执行这个脚本就行了呢?执行一下试试,把库清了,执行成功,结果启动还是报错,还会报表不存在,到库里看报错的表,还是没有,在脚本中搜也没有,我擦。。。看来这个脚本不靠谱,继续找吧。在root的pom中一共加载了如下的module

<modules>
		<module>modules/flowable-bpmn-model</module>
		<module>modules/flowable-process-validation</module>
		<module>modules/flowable-bpmn-layout</module>
		<module>modules/flowable-image-generator</module>
		<module>modules/flowable-bpmn-converter</module>
		<module>modules/flowable-engine-common-api</module>
		<module>modules/flowable-engine-common</module>
		<module>modules/flowable-entitylink-service-api</module>
		<module>modules/flowable-entitylink-service</module>
		<module>modules/flowable-idm-api</module>
		<module>modules/flowable-idm-engine</module>
		<module>modules/flowable-idm-engine-configurator</module>
		<module>modules/flowable-form-model</module>
		<module>modules/flowable-form-api</module>
		<module>modules/flowable-dmn-model</module>
		<module>modules/flowable-dmn-api</module>
		<module>modules/flowable-content-api</module>
        <module>modules/flowable-cmmn-api</module>
        <module>modules/flowable-cmmn-model</module>
        <module>modules/flowable-cmmn-converter</module>
        <module>modules/flowable-cmmn-image-generator</module>
        <module>modules/flowable-cmmn-engine</module>
        <module>modules/flowable-variable-service-api</module>
		<module>modules/flowable-variable-service</module>
        <module>modules/flowable-identitylink-service-api</module>
		<module>modules/flowable-identitylink-service</module>
        <module>modules/flowable-task-service-api</module>
        <module>modules/flowable-task-service</module>
        <module>modules/flowable-job-service-api</module>
        <module>modules/flowable-job-service</module>
        <module>modules/flowable-job-spring-service</module>
		<module>modules/flowable-engine</module>
		<module>modules/flowable-app-engine-api</module>
		<module>modules/flowable-app-engine</module>
		<module>modules/flowable-spring-security</module>
	</modules>

也就是说所有的脚本肯定都在这些模块中,好吧,那我一个个找,把所有创建脚本都拿出来执行,我就不信还报表找不到。

把脚本拿出来后,先执行哪个呢?打开了几个脚本,发现有好几个都是对ACT_GE_PROPERTY这张表进行更新操作,所以这个表一定是先创建,所以就先执行了flowable.oracle.create.common.sql,然后又个flowable.oracle.create.engine,应该是创建核心表的吧,结果执行报错,说找不到job,task之类的表,好吧。那我先执行其他的,其他的看名字应该是创建job,task,history,entitylink,identity等相关的表,应该是没有先后顺序,反正我是按照我自己的理解执行一遍,果然没有报错,都执行成功了,最后执行flowable.oracle.create.engine,也没有报错,嗯。。这回应该妥了。在执行flowable.oracle.cmmn.create.sql这个的时候报标识符过长,打开一看,我擦。。这名字起的是挺长,超出oracle的范围了,好像是超出30个字符了。先不管他了,这个是创建规则引擎相关表的,我目的是先把工作流搞起来。这个脚本的问题无非就是改个名,把长度变小点。下面是自己总结的脚本启动顺序

都执行完成后,这下应该没问题了吧,怀着无比激动的心情双击了启动,唰唰唰,还是报错,访问页面还是404~~~。。。。。NM我要崩溃了,唉,继续看错误吧,说是什么找不到6.5.0.0什么什么的,这是个什么鬼?看样子是版本号之类的,我去库里查一下吧,我挨个表找,我找找找,终于在act_ge_property这张表中找到了这个版本号,为什么会报版本号错误呢?脚本中执行插入的数据确实是这个版本啊,不应该啊?后来仔细回忆一下,我脚本是在源码中拷贝的,应用执行的是lib中的,于是乎我去lib中找到对应的jar包,看看里面的创建脚本,打开一看,我擦。。。。居然插入的是6.4.0.0,好吧。应该是我的应用版本和源码版本不对应导致的,于是我把数据库中的数据都改成了6.4.0.0,再次启动,还是报错,还是找不到6.5.0.0我都已经改了啊 ?怎么还报呢?这个版本在哪来的呢?于是我继续挨个表看,终于在act_id_property表中又找到了这个版本数据,继续改。以防万一,我把所有表都看一遍,看有没有类似的数据,嗯。,,貌似就这两个表中有,其他表都是空的。这回应该没有问题了。继续怀着激动心情双击启动,唰唰唰,貌似 一起还顺利,到最后面还是报错了,看下错误,说是找不到cmmn相关的表,嗯。。。这个错误倒是正常,因为我在执行脚本的时候报错了,肯定有没创建成功的。不过这个错误应该不重要,先登录一下看看。结果,哇,登录界面出来了,豁然开朗了。输入用户名密码,正常登录,在登录流程管理,可以画流程图,嗯。。这下应该没问题了。

 

以上就是我搭建flowable趟过的坑,mysql我没试过,网上应该有人试过,可以参考其他人的文章试试。我就奇了怪了,我下下来应用只改个数据库,怎么就遇到这么多问题,连启动都启动不了,难道这些开发开源框架的大神们都不测试么?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值