普元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.mzph.cn/web/37243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

东软睿驰总裁兼CTO杜强受邀出席 CICV 2024智能网联汽车技术首脑(CTO)闭门峰会

近日,第十一届国际智能网联汽车技术年会(CICV 2024)在北京举办,会议期间组织智能网联汽车技术首脑(CTO)闭门峰会,邀请40余位技术领袖围绕智能网联汽车产业生态建设以及智能网联汽车数据、算力和…

Python的numpy简单使用

1.可以调用引入numpy里面的函数,如add可以把俩数相加,也可以创建一个数组arr,arr.shape是数组arr的属性,如果后有跟()就是里面的一个函数 type()函数可以知道里面是什么类型 变量.shape可以知道这个变量是…

基于决策树的旋转机械故障诊断(Python)

前置文章: 将一维机械振动信号构造为训练集和测试集(Python) https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋转机械振动信号特征提取(Python) https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

菲尔兹奖得主测试GPT-4o,经典过河难题未能破解!最强Claude 3.5回答离谱!

目录 01 大言模型能否解决「狼-山羊-卷心菜」经典过河难题? 02 加大难度:100只鸡、1000只鸡如何? 01 大言模型能否解决「狼-山羊-卷心菜」经典过河难题? 最近,菲尔兹奖得主Timothy Gowers分享了他测试GPT-4o的经历&a…

游戏推荐: 植物大战僵尸杂交版

下载地址网上一搜就有. 安装就能玩. 2是显血. 4显示植物血, 5是加速. 都是左手主键盘的按钮, 再按是取消. 比较刺激: ps: 设置里面还能打开自动收集阳光和金币.

视频融合共享平台LntonCVS统一视频接入平台智慧安防应用方案

安防视频监控平台LntonCVS是一款拥有强大拓展性和灵活部署能力的综合管理平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,同时兼容各厂家的私有协议和SDK,如海康Ehome、海大宇等。LntonCVS不仅具备传统安防视频监控功能&…

Django 一对一关系

作用: 两个数据库表建立外键关系当外键表的数据被删除时,主表的数据也会一并删除。 1,添加表模型 Test/app8/views.pyfrom django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email …

【Linux系统】进程替换 自主实现shell(简易版)

1.先看代码 && 现象 我们用exec*函数执行新的程序, exec*系列的函数,执行完毕后,后续的代码不见了,因为被替换了。 execl的返回值可以不关心了,只要替换成功,就不会向后继续运行,只要…

第5讲:建立自己的C函数库,js调用自己写的C/C++函数,并包含依赖C/C++第三方静态库。

在javascript中,Array有很多内置的功能,比如Array.map,Array.filter,Array.find等等,能用内置的功能就用内置的功能,最好不要自己实现一套,因为底层调用的可能压根就不是js语言本身,…

Wails 安装初体验

文章目录 Wails 安装说明1. 系统要求2. 安装步骤3. 构建应用 结论 Wails 安装说明 Wails 是一个用于构建桌面应用的 Go 框架,结合了现代前端技术。以下是安装步骤: 1. 系统要求 Go 1.16 或更高版本Node.js 和 npm可选:适用于 Windows、mac…

【机器学习】机器学习的重要方法——强化学习:理论,方法与实践

目录 一、强化学习的核心概念 二、强化学习算法的分类与示例代码 三.强化学习的优势 四.强化学习的应用与挑战 五、总结与展望 强化学习:理论,方法和实践 在人工智能的广阔领域中,强化学习(Reinforcement Learning, RL&…

基于源码详解ThreadPoolExecutor实现原理

个人博客地址 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog 内容拆分 这里算是一个总集,内容太多,拆分成几个比较重要的小的模块: ThreadPoolExecutor基于ctl变量的声明周期管理 | iwts’s blog ThreadPoolExecutor 工作线程…

模板方法模式在金融业务中的应用及其框架实现

引言 模板方法模式(Template Method Pattern)是一种行为设计模式,它在一个方法中定义一个算法的框架,而将一些步骤的实现延迟到子类中。模板方法允许子类在不改变算法结构的情况下重新定义算法的某些步骤。在金融业务中&#xff…

可信和可解释的大语言模型推理-RoG

大型语言模型(LLM)在复杂任务中表现出令人印象深刻的推理能力。然而,LLM在推理过程中缺乏最新的知识和经验,这可能导致不正确的推理过程,降低他们的表现和可信度。知识图谱(Knowledge graphs, KGs)以结构化的形式存储了…

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

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

【linux】网络基础(1)

文章目录 网络基本概念网络的定义网络的类型局域网(LAN)广域网(WAN) 网络协议OSI七层模型TCP/IP模型TCP/IP模型的结构 网络传输的基本流程计算机与计算机之间的通信计算机的信息处理封装报头 网络基本概念 网络的定义 1.网络是指…

专题一: Spring生态初探

咱们先从整体脉络上看下Spring有哪些模块,重要的概念有个直观印象。 从Spring框架的整体架构和组成对整体框架有个认知。 Spring框架基础概念 Spring基础 - Spring和Spring框架组成 上图是从官网4.2.x获取的原图,目前我们使用最广法的版本应该都是5.x&am…

一区算法MPA|海洋捕食者算法原理及其代码实现(Matlab/Python))

Matlab/Python: 本文KAU将介绍一个2020年发表在1区期刊ESWA上的优化算法——海洋捕食者算法 (Marine Predators Algorithm,MPA)[1] 该算法由Faramarzi等于2020年提出,其灵感来源于海洋捕食者之间不同的觅食策略、最佳相遇概率策略、海洋记…

【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多路复用是一种操作系统的…

MCU复位时GPIO是什么状态?

大家一定遇到过上电或者复位时外部的MOS电路或者芯片使能信号意外开启,至此有经验的工程师就会经常关心一个问题,MCU复位时GPIO是什么状态?什么电路需要外部加上下拉? MCU从上电到启动,实际可分为复位前和复位后、初始…