今天宋哥就和大家聊聊编译流水源码。1.下载源代码很容易。你可以直接从GitHub上克隆源码:gitclonegit@github.com:flowable/flowable-engine.git这一步比较容易,应该没有问题。2.在IDEA中打开项目由于本源码也是一个Maven项目,那么直接在IDEA中打开源码即可。宋哥亲测master分支的代码有一些问题,所以建议大家先切换到稳定版再编译。目前在github上发布的最新官方release版本是6.7.2版本,所以为了顺利编译源码,那就在右下角找到6.7.2版本,切换:切换完成后,我们来看一下首先源代码中每个目录的用途是什么。distrodocker:这是一个将flowable构建到docker镜像中的脚本。文档:这是文档。docs/docusaurus/docs目录下有官方现成的脚本,我们也可以执行docs/userguide/src/zh_CN/form等目录下的脚本文件来构建我们需要的文档。一般来说,没必要直接看官方文档。ide-settings:该目录包含Eclipse和IDEA中的配置文件,用于辅助开发,但感觉实际作用有限。我们在开发的时候很少引入这两个配置,大家可以看懂。k8s:看一下目录,里面有一些flowable支持K8s的脚本和配置。modules:flowable中所有的核心功能代码都在这里。qa:这里面有各种可流动的配置模板,不过我们现在基本都是用SpringBoot开发。很多时候,我们不需要手动配置什么,直接写业务就行,所以这些配置模板大家看懂就行了。scripts:一些常用的脚本放在这个目录下,比如执行build-all.sh脚本来构建项目。tooling:这个目录的内容给出了单元测试的模板。LICENSE:开源协议等。README.md:介绍性文件。好了,整体了解之后,现在大家知道modules目录是核心了。但是,由于模块较多,IDEA不一定能识别所有的Maven项目。如果一个项目的pom.xml是红色而不是蓝色,说明IDEA未能识别Maven项目,如下:现在我们需要打开pom.xml文件,然后右键选择AddasMavenProject,如下:使它成为一个合适的Maven项目。最后的结果是确保所有的Maven项目都是黑色的,而不是灰色的,也就是说没有问题,如下图:第二节的工作看起来很简单,但是实际操作起来却很费力。最大的原因是网络问题。Maven经常下载失败,需要反复尝试,从阿里巴巴镜像站切换到华为镜像站,再切换回官方镜像站。无论如何,您只需一次又一次地尝试,直到成功下载所有必需的依赖项。3.启动flowable-ui接下来,我们就可以启动flowable-ui项目了。本项目本质上是一个SpringBoot项目,所以关键是找到启动类,位于modules/flowable-ui/flowable-ui-app/src/main/java/org/flowable/ui/application/FlowableUiApplication.java:这个可以直接启动。启动之后,就和宋哥之前介绍的Flowable-UI一样了。如何使用它。这里使用默认的H2数据库。H2是一个用Java编写的关系型数据库,可以嵌入到Java应用程序中,或作为单独的数据库服务器运行。这个H2数据库有点类似于移动端的SqlLite数据库。我们打开modules/flowable-ui/flowable-ui-app/src/main/resources/flowable-default.properties配置文件,可以看到H2数据库的一些配置信息,如下:从这个配置中,我们可以看三核心信息:H2数据库以后会自动生成数据库文件。这些文件位于系统的当前用户目录中。在系统当前用户目录下会自动创建flowable-db文件夹,然后在这个文件夹下会创建engine-db文件,也就是我们的数据库文件了。H2数据库的用户名是可流动的。H2数据库的用户密码是可流动的。好了,现在我们在flowable-ui中,新建几个用户和组,如下:新建四个用户:创建两个用户组,假设zhangsan和lisi是supervisor,wangwu和zhaoliu是manager,如下:创建完成后,我们知道这些数据存储在H2数据库中。和连接MySQL一样,我们也可以连接H2数据库。这里为了省事,直接使用IDEA自带的数据库连接工具连接。步骤如下:先点击Database,再点击+添加数据源,选择H2,如下:数据库连接类型选择URLonly:填写用户名、密码和数据库地址,全部复制从刚才的配置文件中,填写信息后,会提示下载数据库驱动,点击下载即可,然后点击下方的TestConnection按钮进行测试,出现以下内容说明数据库已连接.点击确定,我们可以看到数据库的连接详情,如下:关于各个表的作用,之前宋哥写过一篇文章给大家介绍过,现在我们去ACT_ID_USER表看看有没有newcreated四个用户信息:可以看到,加上admin,一共有五个用户信息。同样的道理,在ACT_ID_GROUP表中也可以看到我们创建的组信息:可以看到,这两个用户组都存在。在ACT_ID_MEMBERSHIP表中,我们可以看到用户和用户组的关系:宋师兄在上一篇文章中演示的flowable-ui的所有功能,以及涉及到的数据存储,我们现在可以连接H2数据库稍后查看。既然说到modules/flowable-ui/flowable-ui-app/src/main/resources/flowable-default.properties配置文件,顺便多说几句,flowable默认的用户名和密码-ui为admin/test,如果我们要修改,可以直接在配置文件中修改如下几行:flowable.idm.app.admin.user-id=javaboyflowable.idm.app.admin.password=123flowable。idm.app.admin.first-name=江南小雨flowable.idm.app.admin.last-name=江南小雨flowable.idm.app.admin.email=test-admin@example-domain。tld中文可能是乱码,大家记得修改properties配置文件的编码格式。修改完成后,记得删除系统当前用户目录下的flowable-db文件夹(如果不删除,之前的用户还在,这个配置相当于新增了一个用户),然后重启系统,重启后,我们就可以用javaboy/123登录了。4.连接MySQL有时候我们还是想使用熟悉的MySQL,也是支持的,或者通过修改modules/flowable-ui/flowable-ui-app/src/main/resources/flowable-default.properties配置文件来实现这一点,具体方法如下:首先,在数据库中预先准备一个名为flowable-ui的空数据库。然后注释掉modules/flowable-ui/flowable-ui-app/src/main/resources/flowable-default.properties配置文件中的H2配置,打开MySQL配置,如下:spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/flowable-ui?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&nullCatalogMeansCurrent=truespring.datasource.username=根泉。datasource.password=123最后在modules/flowable-ui/flowable-ui-app/pom.xml文件中添加MySQL数据库驱动,如下:
