要说这个编译源码其实没什么技术含量,然而因为国内的网络问题,Spring 等各种常见框架的源码编译都变成了一个有技术含量的工作,你得学会去解决各种在编译的过程中可能呈现的问题。
明天松哥就来和大家聊一聊 flowable 源码编译,其实次要是和大家说说这里的几个坑。
1. 下载源码
这个简略,大家间接从 GitHub 上将源码 clone 下来即可:
git clone git@github.com:flowable/flowable-engine.git
这一步比拟容易,大家应该都不存在问题。
2. IDEA 关上我的项目
因为这个源码也是一个 Maven 工程,所以接下来间接 IDEA 关上源码即可。
松哥亲测,master 分支上的代码有点问题,所以倡议大家切换到一个稳固的版本上再去编译。
官网目前在 GitHub 上公布的最新 release 版本是 6.7.2 这个版本,所以为了源码编译顺利,接下来在右下角找到 6.7.2 这个版本,并切换:
切换实现之后,接下来咱们要先来看看源码中每个目录都是干嘛的。
- distro
- docker:这个里边放的是将 flowable 构建成 docker 镜像的脚本。
- docs:这个是文档。在
docs/docusaurus/docs
目录下有官网曾经构建好的现成的脚本,咱们也能够执行docs/userguide/src/zh_CN/form
等目录下的脚本文件,构建本人须要的文档。一般来说不须要,间接看官网文档就够用了。 - ide-settings:这个目录下放的是 Eclipse 和 IDEA 中的配置文件,辅助开发用的,然而感觉理论作用无限,咱们平时开发也很少导入这两个配置,大家理解即可。
- k8s:看目录就晓得,这个里边放的是 flowable 反对 K8s 的一些脚本和配置。
- modules:flowable 中的所有外围性能代码都在这个里边了。
- qa:这个里边是 flowable 各种各样的配置模版,不过咱们当初基本上都是 Spring Boot 开发,很多时候并不需要手动再去配置什么,都是间接上来写业务就行了,所以这些配置模版大家理解下即可。
- scripts:这个目录下放了一些罕用的脚本,例如执行 build-all.sh 脚本用来构建我的项目。
- tooling:这个目录中的内容给出了一个单元测试的模版。
- LICENSE:开源协定等。
- README.md:介绍文档。
好了,整体上理解了之后,当初大家晓得,modules 目录才是外围。
不过,因为模块较多,IDEA 不肯定总是可能辨认出所有的 Maven 我的项目,如果一个我的项目的 pom.xml 是红色而不是蓝色,就阐明 IDEA 没能辨认进去这个 Maven 我的项目,像上面这样:
此时咱们要关上这个 pom.xml 文件,而后鼠标右键单击,抉择 Add as Maven Project
,如下:
使之成为一个正儿八经的 Maven 工程。
最终的后果,就是确保所有 Maven 工程都是彩色的而不是灰色的,就示意没有问题了,如下图:
第二大节的工作看着很简略,然而实际操作起来十分麻烦,最大的起因还是网络问题。Maven 常常会下载失败,所以须要大家重复多试,从阿里镜像站切换到华为镜像站,再切换回官网的镜像站,反正就是重复重试,直到须要的依赖都下载胜利。
3. 启动 flowable-ui
接下来,咱们就能够启动 flowable-ui 这个工程了。
这个工程实质上就是一个 Spring Boot 工程,所以要害是要大家找到启动类,地位在 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 数据库的用户名是 flowable。
- H2 数据库的用户明码是 flowable。
好了,当初咱们在 flowable-ui 中,咱们新建几个用户和组,如下:
新建四个用户:
新建两个用户组,假如 zhangsan 和 lisi 是主管,wangwu 和 zhaoliu 是经理,如下:
创立实现之后,咱们晓得这些数据都是保留在 H2 数据库中,像连贯 MySQL 一样,咱们也能够连贯 H2 数据库,为了省事,我这里就间接应用 IDEA 中自带的数据库连贯工具进行连贯了。
步骤如下:
首先点击 Database,而后点击 + 增加一个数据源,抉择 H2,如下:
数据库连贯类型抉择 URL only:
填入用户名、明码以及数据库地址,这些信息都是从方才的配置文件中拷贝进来的,填完信息之后,会提醒你下载数据库驱动,间接点击下载即可,而后点击下方的 Test Connection
按钮,进行测试,看到如下内容示意数据库曾经连贯上了。
点击 OK,咱们就能够看到数据库的连贯详情了,如下:
对于每张表的作用,松哥之前都曾经写过文章和大家介绍过了,当初咱们就去 ACT_ID_USER
表去看一下有没有刚刚创立的四个用户信息:
能够看到,加上 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=javaboy
flowable.idm.app.admin.password=123
flowable.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.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/flowable-ui?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&nullCatalogMeansCurrent=true
spring.datasource.username=root
spring.datasource.password=123
最初,再在 modules/flowable-ui/flowable-ui-app/pom.xml
文件中退出 MySQL 数据库驱动,如下:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
而后重启我的项目即可。
当松哥增加 MySQL 驱动的时候,发现官网曾经替咱们思考好了,MySQL 驱动提前在多环境中曾经配置好了,地位在 modules/flowable-ui/flowable-ui-app/pom.xml
,如下图:
所以咱们也能够不必本人手动加驱动,间接在在 IDEA 的 Maven 中,抉择 profiles,去掉 h2mem,勾选上 mysql 即可,如下图:
而后重新启动我的项目即可。
5. 接口分析
有的小伙伴们可能说,松哥你这个搞的这么麻烦,我用 flowable-ui 间接 docker 装置,多省事呀!那你就体会错我的意思了,flowable-ui 这个性能我感觉是一个十分棒的 demo,基本上你能想到的 flowable 的性能这里都提供了,当初源码都给你了,你想做啥性能照抄就行了。
我举个例子,比如说咱们想新建一个用户,那么咱们在前端页面,关上浏览器 DEBUG 窗口,察看增加用户的时候操作的接口,如下:
咱们发现增加用户的接口是 /rest/admin/users
(/idm-app
是模块名称,疏忽之),当初,在源码中咱们来一个全文搜寻,如下:
如果你想本人做一个用户增加的性能,那么照抄不就行了。
其余启动流程、认领工作、实现工作等性能,都依照相似的形式,咱们能够查看其代码实现形式。
所以说,这个 flowable-ui 对咱们来说其实是一个很好的学习 DEMO。
6. 小结
好啦,本文次要和小伙伴们剖析了如何在本地将 flowable 源码编译跑起来,未来松哥还会有多篇文章,以 flowable-ui 为参考,来和大家剖析 flowable 中的各种玩法。
本文参加了思否技术征文,欢送正在浏览的你也退出。