普元EOS学习笔记-创建精简应用

前言

本文依旧基于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精简应用的操作方法、低开,以及高开。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/759722.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】指针剖析(完结)

©作者:末央& ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨,书写未来之大梦 目录 回调函数概念回调函数的使用 - qsort函数 sizeof/strlen深度理解概念手脑并用1.sizeof-数组/指针专题2.strlen-数组/指针专题 指针面试题专题 回调函…

从0-1搭建一个web项目(package.json)详解

本章分析package.json文件详解 本文主要对packge.json配置子文件详解 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等…

每日一题——Python实现PAT乙级1073 多选题常见计分法(举一反三+思想解读+逐步优化)9千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 初次尝试 再次尝试 有何不同 版本一(原始版本):…

Python变量的命名规则与赋值方式

第二章:Python 基础语法 第一节:变量的命名规则与赋值方式 2.1.1 引言 在编程中,变量是存储数据的基本单元。变量的命名和赋值是编程语言中表达和操作数据的基础。了解和遵循变量命名规则对于编写清晰、可维护的代码至关重要。 2.1.2 变量…

修复vcruntime140.dll方法分享

修复vcruntime140.dll方法分享 最近在破解typora的时候出现了缺失vcruntime140.dll文件的报错导致软件启动失败。所以找了一番资料发现都不是很方便的处理,甚至有的dll处理工具还需要花钱????,我本来就是为…

VMware17安装Ubuntu20版本-保姆级别

首先需要安装好VMware和Ubuntu20的镜像,在网上搜索Ubuntu镜像下载即可,最后选择国内镜像站下载,这样更快点,然后打开VMware。 1.创建虚拟机: 2.选择自定义: 3.默认,继续下一步: 4.选…

【Linux】IO多路复用——select,poll,epoll的概念和使用,三种模型的特点和优缺点,epoll的工作模式

文章目录 Linux多路复用1. select1.1 select的概念1.2 select的函数使用1.3 select的优缺点 2. poll2.1 poll的概念2.2 poll的函数使用2.3 poll的优缺点 3. epoll3.1 epoll的概念3.2 epoll的函数使用3.3 epoll的优点3.4 epoll工作模式 Linux多路复用 IO多路复用是一种操作系统的…

UE5(c++)开发日志(2):向日志和屏幕输出信息/将C++类变为蓝图类

通过UE_LOG()向日志输出,向其传入三个参数(①输出日志类型,一般LogTemp ②具体种类,普通/警告/错误,这里是Warning ③输出的文本内容,使用TEXT(" "),这里是TEXT("Run AActor BeginPlay")) 代码写…

嵌入式学习——硬件(s3c2440外部中断、定时器中断)——day54

1. start.s preserve8area reset, code, readonlycode32entryldr pc, startnopnopnopnopnop ldr pc, interrupt_handlernopstartldr sp, 0x40001000mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x12;IRQbic r0, r0, #(1 << 7);打开IRQ中断允许msr cpsr_c, r0ldr …

C语言力扣刷题11——打家劫舍1——[线性动态规划]

力扣刷题11——打家劫舍1和2——[线性动态规划] 一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划 2、思路说明 四、解题代码&#xff08;附注释&#xff09; 一、博客声明 找工作逃不过刷题&#xff0c;为了更好的督促自己学习以及理解力扣大佬们的解…

Java基础(三)——类和对象、构造方法

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

运维锅总详解Prometheus

本文尝试从Prometheus简介、架构、各重要组件详解、relable_configs最佳实践、性能能优化及常见高可用解决方案等方面对Prometheus进行详细阐述。希望对您有所帮助&#xff01; 一、Prometheus简介 Prometheus 是一个开源的系统监控和报警工具&#xff0c;最初由 SoundCloud …

业务模型扩展字段存储

构建业务模型时&#xff0c;通常模型会设置扩展信息&#xff0c;存储上一般使用JSON格式存储到db中。JSON虽然有较好的扩展性&#xff0c;但并没有结构化存储的类型和非空等约束&#xff0c;且强依赖代码中写入/读取时进行序列化/反序列化操作&#xff0c; 当扩展信息结构简单且…

数据倾斜优化:Hive性能提升的核心

文章目录 1. 定义2. 数据倾斜2.1 Map2.2 Join2.3 Reduce 3. 写在最后 1. 定义 数据倾斜&#xff0c;也称为Data Skew&#xff0c;是在分布式计算环境中&#xff0c;由于数据分布不均匀导致某些任务处理的数据量远大于其他任务&#xff0c;从而形成性能瓶颈的现象。这种情况在H…

Studying-代码随想录训练营day24| 93.复原IP地址、78.子集、90.子集II

第24天&#xff0c;回溯算法part03&#xff0c;牢记回溯三部曲&#xff0c;掌握树形结构结题方法&#x1f4aa; 目录 93.复原IP地址 78.子集 90.子集II 总结 93.复原IP地址 文档讲解&#xff1a;代码随想录复原IP地址 视频讲解&#xff1a;手撕复原IP地址 题目&#xff1…

python open函数中文乱码怎么解决

首先在D盘下新建一个html文档&#xff0c;接着在里面输入含有中文的Html字符&#xff0c;使用中文格式对读取的字符进行解码&#xff0c;再用utf-8的模式对字符进行编码&#xff0c;然后就能正确输出中文字符。 代码如下&#xff1a; # -*- coding: UTF-8 -*- file1 open(&quo…

策略模式在金融业务中的应用及其框架实现

引言 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不修改客户端代码的情况下&#xff0c;动态地改变一个类的行为。它通过定义一系列算法并将它们封装在独立的策略类中&#xff0c;使这些算法可以互相替换&#xff0c;而不会影响…

【原理】机器学习中的最小二乘法公式推导过程

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、什么是最小二乘法1.1. 什么是最小二乘法1.2. 最小二乘法的求解公式 二、最小二乘法求解公式的推导 最小二乘法是基本的线性求解问题之一&#xff0c;本文介绍最小二乘法的原理&#xff0c;和最小二法求解公式…

Python技术笔记汇总(含语法、工具库、数科、爬虫等)

对Python学习方法及入门、语法、数据处理、数据可视化、空间地理信息、爬虫、自动化办公和数据科学的相关内容可以归纳如下&#xff1a; 一、Python学习方法 分解自己的学习目标&#xff1a;可以将学习目标分基础知识&#xff0c;进阶知识&#xff0c;高级应用&#xff0c;实…