华人澳洲中文论坛

热图推荐

    手把手教大家编译 flowable 源码

    [复制链接]

    2022-9-17 06:57:48 40 0

    要说这个编译源码其实没甚么技术含量,然而因为国际的网络问题,Spring 等各种常见框架的源码编译都变为了一个有技术含量的任务,你得学会去解决各种在编译的过程当中可能泛起的问题。
    明天松哥就来和大家聊一聊 flowable 源码编译,其实次要是和大家说说这里的几个坑。
    1. 下载源码
    这个简略,大家间接从 GitHub 上将源码 clone 上去便可:
    git clone [email protected]:flowable/flowable-engine.git
    这一步对比容易,大家应该都不存在问题。



    2. IDEA 关上名目
    因为这个源码也是一个 Maven 工程,所以接上去间接 ideA 关上源码便可。



    松哥亲测,master 分支上的代码有点问题,所以倡议大家切换到一个不乱的版本上再去编译。
    民间目前在 GitHub 上公布的最新 release 版本是 6.7.2 这个版本,所认为了源码编译顺利,接上去在右下角找到 6.7.2 这个版本,并切换:



    切换实现之后,接上去咱们要先来看看源码中每个目录都是干吗的。
    distrodocker:这个里边放的是将 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=十二3 flowable.idm.app.admin.first-name=江南一点雨 flowable.idm.app.admin.last-name=江南一点雨 [email protected]
    中文可能会乱码,大家记得修正 properties 配置文件的编码格局便可。修正实现之后,记得先去零碎以后用户目录下删除掉 flowable-db 文件夹(假如不删除,则以前的用户还在,这次的配置至关于新添加了一个用户),而后重启零碎便可,重启之后,咱们就能以 javaboy/十二3 进行登录了。
    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://十二7.0.0.1:3306/flowable-ui?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&nullCatalogMeansCurrent=true spring.datasource.username=root spring.datasource.password=十二3
    最初,再在 modules/flowable-ui/flowable-ui-app/pom.xml 文件中参加 MySQL 数据库驱动,如下:
    mysql mysql-connector-java
    而后重启名目便可。
    当松哥添加 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 中的各种弄法。

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题34

    帖子42

    积分198

    图文推荐