当前位置: 首页 > 科技观察

教你编译流水源码

时间:2023-03-19 15:28:01 科技观察

今天宋哥就和大家聊聊编译流水源码。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数据库驱动,如下:mysqlmysql-connector-java然后重启项目。宋哥在添加MySQL驱动的时候,发现官方已经帮我们考虑好了。MySQL驱动已经提前在多个环境配置好,位置为modules/flowable-ui/flowable-ui-app/pom.xml,如下图:所以我们不需要手动添加驱动,直接在IDEA的Maven,选择profiles,去掉h2mem,勾选mysql,如下图:然后重启项目。5.界面分析有朋友可能会说,宋大哥,你这么麻烦,我用flowable-ui直接用docker安装,省事!那你误会我的意思了。我认为flowable-ui功能是一个很好的demo。基本上,你能想到的可流动的功能都在这里提供了。现在源代码给你。你想做什么功能?只是复制它。让我举一个例子。比如我们要新建一个用户,那么我们在前端页面打开浏览器DEBUG窗口,观察添加用户时操作的界面,如下:我们发现添加用户的界面是/rest/admin/users(/idm-app是模块名,忽略),现在,我们在源码中进行全文搜索,如下:它。其他的启动流程、领取任务、完成任务等功能也是类似的方法,我们可以查看它们的代码实现方法。所以,这个flowable-ui对我们来说其实是一个很好的学习DEMO。6.小结,本文主要和小伙伴们一起分析如何在本地编译运行flowable源码。以后松哥会有更多的文章,以flowable-ui为参考,分析flowableplay中的各种flowable。