前言
本文依旧基于EOS8.3进行描述。
在上一篇文章《EOS8.3精简版安装》中,我们了解到普元预编译好的EOS的精简版压缩包,安装后,只能进行低开,而无法高开。
EOS精简版的高开方式是使用EOS开发工具提供的IDE,创建一个精简应用,然后就可以进行高开了。
本篇文章将一步步记录下我如何创建一个EOS的精简应用。
安装EOS开发工具
EOS只是一个缩写,这个体系下有很多东西,所以,千万不要把EOS理解为好像JEECG或若依那样就是一个简单的开发框架,那格局就太小了。
现在我就要用到EOS提供的开发工具IDE 。
IDE:集成开发环境,一般我们开发软件都会用到ide,比如eclipse , idea, vscode 等等。普元EOS也提供了一个专门用于开发EOS应用的ide。
不用意外,正如上图展示的,EOS的IDE其实就是在eclipse的基础上提供了若干用于EOS开发的插件。所以,EOS IDE的使用对于JAVA程序员并不困难,学习门槛很低。
获取EOS开发工具的介质
EOS开发工具的介质是一个 zip格式的压缩文件,EOS_Platform_8.3.1_Private_Medium_Develop.zip
获取介质请拨通普元热线电话 400-820-5821, 向普元工作人员申请即可。
解压安装
介质下载后,解压到 d:/primeton/eos-8.3-dev 文件夹。
为什么是 d盘?其实就是最后一个分区。
为什么是d:/primeton/eos-8.3-dev这个文件夹?这个开发工具下其实有很多东西,除了ide,还有自带的数据库、maven、redis,以及EOS相关的服务应用,这些程序的某些配置文件似乎对解压路径有所要求。我这里也不深究这个问题了,反正采用这个路径会减少很多运行中的麻烦。
从上图可以看到,EOS开发工具下并非只提供了ide,很多东西是为了微服务版本的EOS应用开发的。本文章是记录EOS精简应用的开发,就不对EOS开发工具的其他东西做解释了。
启动ide
EOS ide的启动需要先准备好JAVA环境,版本要求是 jdk1.8 。EOS开发工具并没有提供jdk,请自行安装。
同时还要配置好 maven,在EOS开发工具文件夹下,可以看到有maven 文件夹,一定要使用EOS提供的maven,因为EOS开发中需要很多普元提供的依赖,这些都需要到普元的maven仓库拉取。EOS提供的maven的settings.xml文件中已经配置好了依赖仓库,没有这些配置是无法编译EOS项目的。
运行 D:\primeton\eos-8.3-dev\ide\eclipse\eclipse.exe 文件,实现ide的启动。
ide启动后,可以看到就是一个eclipse,当然,细心看到话也会发现,处处都渗透着EOS和普元的痕迹,因为这个eclipse已经被安装了很多EOS的插件。
ide的首选项中配置java环境
在菜单中选择 窗口 -- 首选项,打开ide的首选项窗口,选择java - 已安装的JRE 选项。
配置自己电脑上JDK1.8
然后再选择 java - 已安装的JRE - 执行环境,选中 JavaSE-1.8 ,然后勾选刚刚安装的jre选项。
配置maven环境:
依旧是在ide的首选项窗口,选择 maven - User Settings ,然后在右侧 User Settings文本框,选择ide提供的maven下的settings.xml文件,然后点击 Update Settings 按钮。
最后点击应用并关闭,完成ide首选项的编辑。
这样就为ide配置好了java和maven环境。
创建精简应用
在ide中,点击菜单项 文件 - 新建 - EOS项目,打开新建EOS项目的窗口。
在这个窗口,我们看到可以选择4种项目类型,我们不解释后面3种,直接选中精简应用,点击下一步,下一步,就完成EOS精简应用的创建了。
当然,操作的时候步骤慢一点,先点击一次下一步,打开进入第一个配置窗口如下,我们可以直接采用默认项,当然也可以修改一下这些配置项。
这里我将 项目名称修改为 express08,端口修改为 28018。项目名称就是ide中显示的项目名称,端口是精简应用编译运行后,在浏览器中请求时的端口,比如我现在修改为 28018,以后我启动项目的时候就要输入 http://127.0.0.1:28018 来访问了。
关于应用名称和应用所在系统编码,这两项最好别动,修改了可能会有预想不到的麻烦,反正咱先听话好了。
然后点击完成,之后要耐心等待一段时间。
这段时间的时候,我们可以看到左侧已经出现了 express08 这个项目。
同时,在ide下面找到进度标签按钮,点击会打开进度窗口,可以看到类似下图这样的执行过程。这是创建精简应用的过程,在这个过程中会先创建出项目的结构,然后调用maven对项目进行预编译,会拉取项目所需的依赖。
这个过程如果有问题,大概率是 1 java环境没配置好,2 maven没配置好。 那么就回到本文的前面“解压安装”这一节,看看如何配置。
经过耐心等待后,当进度不再有新动态的时候,一切归于平静,新的生命诞生了。
项目结构
展开express08项目,可以看到结构如上图,简单对这个结构解释一下。
首先,可以确定express08是一个Maven两层的父子项目。
父项目就是 express08,这个项目的pom.xml中可以看到express08也有父项目,如下面的xml配置信息所示。
同时可以看到,其下有4个子模块,分别是 model api core boot,这4个,当然,模块的名字不是这么简单,前面还有 com.primeton.eos.express08 这么有一大串,我懒得打字了,阅读者知道啥意思就可以了。
再之后可以看到pom.xml中标记了一系列的 primeton 的依赖,不做赘述,也不做深究,知道是有这么多 primeton的依赖即可,这些依赖从 maven官方仓库可拉取不到,只能到普元maven仓库才可以获取。
这4个子模块都是啥意思?有啥作用?我把我的理解记录下来,供阅读者借鉴,但我需要声明一下,这些并非权威解释。
首先说第2个子模块 boot
( 阅读者知道其实完整模块名称是 com.primeton.eos.express08.boot ),这是核心启动模块,最终express08的编译、运行,都是在这个模块中。
具体看一下文件结构就知道了,boot子模块下的 Java源代码部分有一个 Application.java 文件,熟悉springboot开发的阅读者都知道,这是SpringBoot应用的启动类。
据此,我们也能分析出来,EOS的精简应用本质是基于maven构件的SpringBoot项目,开发工具是安装了EOS插件的Eclipse。
这个文件夹下还有一个 Web文件夹,这些是所有前端静态资源。
EOS开发的应用程序(本文创建的是精简应用,还可以创建独立应用、微服务应用等)都是前后端分离的,精简应用的前端静态资源就被放在了Web文件夹中。
如果需要对前端静态资源修改重新编译,那么可以获取前端的源代码,然后编译后覆盖Web文件夹即可,关于前端编译开发不是本文所要描述的知识,就不展开讲解了。
同时,boot子模块下还包含了精简应用所有的配置文件。
配置文件很多,配置项目更是林林总总,就不一一赘述了,这里只修改一下数据库连接配置项,保证程序能启动就行了,另外,在看看application.properties文件,毕竟设置项目中最重要的配置文件。
application.properties配置文件,咱也不过多解释,就看一个端口吧。28018,之前创建精简应用的时候,填写的端口就是这个,没必要过多解释。
数据库连接配置文件,在 user-config.xml 中,在这个文件中配置,数据库连接的配置内容很简单,不多说了。
boot子模块的pom.xml文件:从这个模块可以看到,boot子模块的父模块是express08。
从dependencies 这部分可以看出boot依赖于 api 、 core 、 model这3个子模块。
boot子模块的说明就这些吧。
接下来说说model子模块
先看一下model的pom.xml,分析后可以看到 model 的父模块是 express08。
接着会发现 model并没有其他的依赖。所以 pom.xml很简单。
再多解释一下 model的pom.xml提供的一个插件 eos-ptp-maven-plugin ,这个插件是普元EOS的一个插件,似乎这个插件是在项目打包的时候将多个sql语句合并为 all.sql插件。我个人的理解是 EOS应用底层其实是多个子模块组成的,比如 afcenter / bps / bfp 等等(关于这些子模块概念以后慢慢聊),这些子模块需要若干数据表,在源代码中按照不同子模块提供了若干sql文件,这个插件将多个sql文件合并为一个all.sql文件。
model子模块规划中主要是用来存放数据实体。
model下有4个资源包:构件、数据、运算和流程,这4个资源包是EOS的概念,这里简单说一下,以后我梳理一下详细解释一下EOS这些概念。
构件:EOS的构件是一个独有的概念。一般来说,程序员实现一个功能都是通过开发一个方法,然后编写一系列代码来实现具体的逻辑,细想想这些代码无非就是顺序流、循环(for while)、分支(if else) 然后调用其他方法实现功能的组合,从而实现业务需要的逻辑。
EOS的低开设计将创建方法和编写代码的过程,转换为创建一个构件,在构件中使用流程和功能编排来实现逻辑。视觉效果如下
看起来,以前写代码,采用EOS构件成了拖拉拽,可以在运行时随时调整代码逻辑。软件开发的技术门槛降低了很多,灵活性和程序稳定性提高了很多。
上面这个构件的流程有若干节点上面有红色的小图标,这是因为这些节点的配置有问题。因为这个构件编排我只是为了让阅读者知道构件是个什么东西,所以,编排的时候我并没有对构件进行调试,若干节点是有错的,所以这些节点的左上角就显示一个红色的小图标。
构件一般配置在 model 和 core这两个模块中,boot和api模块一般是不创建构件的。
数据:model主要用于存放数据实体,这些数据实体具体都放在数据资源包下面。数据实体就是数据表的java实体类,EOS的数据实体都继承自DataEntity,结构看起来要比普通的Java实体类复杂一些,当然,也要强大的多。以后会不断使用这个DataEntity,慢慢就会熟悉和习惯了,这里就不赘述了。
EOS连接数据库后,可以直接对应数据表实现反向生成,所以,数据实体的创建是非常高效的。
运算:Java程序员看这个就比较容易理解了,就是Java的类和方法,只是在类和方法上增加 @Bizlet 注解。
普通的Java方法是不能被EOS构件调用的,加上@Bizlet注解后,构件编排的时候就可以调用到这个“运算”了。
流程:刚刚的构件其实我们已经看到了流程编排,EOS的流程自然更是流程编排了。构件实现的功能性的逻辑流,EOS流程实现的是工作流。EOS工作流引擎叫做BPS(似乎是 Business Process Suite的缩写,业务流程平台),这是EOS实现工作流的核心组件。这里的流程模块就是用于绘制BPS的流程图的。关于工作流的概念,如果有阅读者不熟悉,可以自行百度一下,这里就不做赘述了。
core子模块
见名知意,这个是核心模块,从其下的资源包可以看到也是 构件、数据、运算、流程。
所以,功能上core子模块和model都差不多。
我个人的习惯,一般构件、运算、流程会放在core中,而数据实体会放在model下。
api子模块
api子模块有数据、运算,还多了一个服务。
服务:EOS的服务可以理解就是SpringBoot项目中的controller层的 Restful接口,不过实现上是直接将某个构件发布成一个服务。当然,EOS的服务自然比传统的Restful接口更强大,与EOS技术生态更亲近,在做逻辑流编排的时候,也可以调用EOS服务,在低开的时候,也可以调用EOS服务。具体的使用在实践中慢慢体会吧,这里只是把EOS服务这个概念简单说明一下。
如下图,在ide中右键选择一个构件,可以看到发布EOS服务的选项。
EOS精简版和EOS精简应用的关系
EOS精简版就是EOS预编译好的项目。
EOS精简应用是使用EOS ide创建的EOS精简版应用。
可以理解为 EOS精简应用 编译打包后,发布出来的就是EOS精简版,也就是说EOS精简版就是EOS开发团队预编译好的一个EOS精简应用。
由于EOS精简版是预编译好发布的,没有源代码,所以,无法进行高开,只能进行低开。
EOS精简应用是可以实现高低开结合开发的。
初始化数据库
刚刚说了,EOS精简应用就是自己定义的、可以进行高开的、可以自定义源代码的EOS精简版。
所以,EOS精简应用的数据库就是EOS精简版的数据库。
因此,初始化的数据库文件就是 EOS精简版文件夹下的 db_scripts/all/Mysql/all.sql 文件。这里使用的是mysql数据库,如果是其他类型的数据库,请采用其他数据库的初始SQL脚本。
本文创建了mysql的数据库 eos83express ,基字符集采用 utf8mb4。
然后,在这个数据库中执行 all.sql脚本文件,执行后数据库和数据表看起来是这样的:
数据表太多了,只展示了一部分。
看数据表的前缀有几大类:
afc_xxx: 这是afcenter相关的数据表,afcenter的全称是应用联邦中心,EOS采用的是微服务思想进行项目管理,微后端,还有微前端,然后在afcenter中将各服务整合在一起。afc就是afcenter的缩写。
bfp_xxx: 这些是 bfp相关的数据表。 bfp好像是 bps的扩展功能,bps是EOS的工作流引擎,bfp应该也是提供工作流相关的功能的扩展。关于bfp的概念我不敢说我的描述是准确的,我再强调一下,我不是普元产品的专家,我只是将我学习EOS的过程记录下来,所以,如果有些地方是错误的,我会及时纠正,如果给阅读者造成了困扰,我不承担任何后果,只是由衷的说一句抱歉,仅此而已。
lc_xxx: 这些是低开相关的数据表 。lc是低开的英文 low code的缩写。低开的生产的其实是各种配置脚本,这些配置脚本就被存储在这些数据表中。
rdc_xxx: 这些表我还不太清楚是啥意思。看表里面的内容,似乎是和GPT相关的表,也许是GPT调用的远程连接相关信息记录表。
wfxxxx:这些数据工作流引擎相关的表。wf是工作流 work flow的缩写。之前说过,EOS的工作流引擎产品叫BPS,这些表应该都是属于bps的表。
启动
EOS精简应用的启动,首先要配置好数据库连接,然后对主模块express08执行mvn install ,之后就可以启动boot了。
配置数据库连接
启动前,先修改数据库连接配置文件
com.primeton.eos.express08.boot/配置/_srv/config/user-config.xml文件
我将数据库连接的驱动修改为 com.mysql.cj.jdbc.Driver
数据库名修改为 eos83express
数据库登录账号和密码是 admin 和 111111
执行mvn install
启动项目前,需要先对express08执行 mvn clean install
我个人习惯执行 mvn 命令的时候加一个 clean , 这个意思是先清理项目之前编译的结果,然后重新执行编译。
右键 express08/pom.xml 文件,选择 运行方式 - maven install
当然,也可以直接在cmd窗口中执行 mvn clean install
执行boot子模块
之后就可以执行 boot 应用了。两种方式
1 在eclipse中,右键 Application.java类
2 在 cmd 窗口进入 boot子模块的根目录,执行 mvn clean spring-boot:run
注意:这个方式在win10中经常会文件名过长而无法执行的问题,这个也没办法,就还是在eclipse中执行吧。
浏览器访问
应用启动后,就可以在浏览器访问应用了。
在浏览器输入地址 http://127.0.0.1:28018
这个端口 28018 是在boot子模块的配置文件 application.properties中配置的。
账号和密码是 admin 和 000000
结尾
本文就写到这里,以后有时间再讲讲EOS精简应用的操作方法、低开,以及高开。