系列文章:
Flowable(Activiti)系列之一:中会签(多实例)使用方法以及ExecutionListener和TaskListener的区别
Flowable(Activiti)系列之二:不用自己写代码,使用Flowable-ui的Rest接口
Flowable(Activiti)系列之三:docker运行flowable-ui,存储到mysql/postgres数据库,支持arm64架构
Flowable(Activiti)系列之四:没有数据库创建权限部署flowable(activiti)时完全屏蔽LiquiBase
Flowable/Activiti 流程引擎远程调用时透传任意复杂的业务对象
我们项目需要用flowable做审批注,flowable官方已经有docker镜像可以运行,但它缺省只能存储在H2内存数据库,而且官方的镜像只有amd64(x64)架构的。项目运行在华为云,使用arm64架构,原本想着自己构建一个镜像,在docker官网搜索了一下,发现已经有人编译了多架构的镜像,所以直接拿来使用。现分享出来
拉取镜像
docker pull unamanic/flowable-ui
创建数据库表
我项目使用postgresql, 建表脚本在这里:
https://github.com/flowable/flowable-sql/blob/master/sql/create/all/flowable.postgres.all.create.sql
建议使用单独的schema,以便和自己的项目业务数据隔离。
运行Docker容器
由于本Docker镜像没有变量设定数据源,所以,研究了一下,它有一个JAVA_OPTS变量,所以皀相关参数全部放在这个变量里,如下:
docker run -e JAVA_OPTS="-Xmx1024M -Dspring.datasource.url=jdbc:postgresql://localhost:25432/postgres -Dspring.datasource.username=re_flow -Dspring.datasource.password=password" -p 9080:8080 --name flowable-ui -d unamanic/flowable-ui
这样就可以了。
可能出现的错误:
org.flowable.common.engine.impl.persistence.entity.PropertyEntity.getValue()" because "dbVersionProperty" is null
这是因为flowable启动时会检查数据库schema的版本是不是与当前flowable的版本匹配,但你的schema可能是新建的,但act_id_property表里没有这条记录。解决办法有二:
1、迁移这个表的数据过来
2、删除当前schema让它自己重建
另外,如果不希望每次重启更新数据库,可以加入一个环境变量:
-e flowable.database-schema-update=ignore